首页
论坛
课程
招聘
[原创]定制Xposed框架(干货)
2019-11-26 18:28 26304

[原创]定制Xposed框架(干货)

2019-11-26 18:28
26304
由于很多APP开始针对XP做对应的检测如微信 支付宝 钉钉等 所以使用定制化的方式隐藏框架

常见检测方法
一. 由于Xposed的hook,是通过so修改被hook的方法为native来实现的,所以检测方也可以通过检测方法是否变成了native来达到检测的目的  Throwable.class.getDeclaredMethod(“getStackTrace” 是否Nativ方法
二. StackTraceElement getClassName 检测是否存在 de.robv.android.xposed. com.android.internal.os.ZygoteInit com.saurik.substrate. getMethodName检测 handleHookedMethod main invoked
三. 检查XposedHelper的成员fieldCache,methodCache,constructorCache
四. 检查xposed的文件
五. 检查 安装包
六. 检查 /system/lib 是否有xposed文件     /system/lib/libxposed_art.so     /system/lib64/libxposed_art.so
七. 检查 /system/framework/XposedBridge.jar
八. 通过 代码抛出一个异常,在堆栈中检查是否含有  de.robv.android.xposed.XposedBridge 之类的
检查com.android.internal.os.ZygoteInit 是否出现了两次
九. 检查环境变量CLSAAPATH=/system/framework/XposdedBridge.jar
十. 检查 /proc/self/maps 通过读取 shell 命令 /proc/pid(应用进程id)/maps 可以拿到当前上下文的so和jar列表,查找Xposed相关
十一. 通过loadClass 检测 de.robv.android.xposed.XposedHelpers de.robv.android.xposed.XposedBridge

几种隐藏方案
1 java层检测XP特征值 可以根据应用获取XP特质值的方法定制HOOK修改隐藏 或者通用性HOOK代码解决 但只限于Java层 so中读取Xp文件就无效了
2 so 层检测如果能逆向代码在java层中找到上传的方法 也可以HOOK形式隐藏 缺点每个APP都得找而且检测代码一变就得改 及其不灵活
3 定制化XP框架 修改所有特征值也可以达到隐藏的目的

定制Xp是最好的解决办法 网络有一些相关资料 但都没有干货或者不全 网上暴露出来的基本上只教了XposedInstall XposedBridge的修改 在往下native层 Xposdtools 的修改资料几乎没有或者说跟没有差不多 所以有了这篇文章

在开始之前你必须去按照这篇博客 点这里 这个也行 先去编译android源码之后编译下官方的Xp (坑很多 要配的环境非常多 要有足够的耐心 )
完成上一步后就可以开始进行对应的修改

1 XposedInstaller.apk

负责安装Xp环境 其实就是下载与手机cpu架构SDK对应的zip 然后刷入手机和管理模块
环境 androidstudio 网络对应的资料都有我就随便写写
包名 随便改一个 AS直接改就行
名称 随便改一个


2 XposedBridge-art.jar

给开发者提供对应的API支持 底层实现 jni调用libxposed-art.so 的native方法
环境 androidstudio 网络也有资料随便写写
原始包名:de.robv.android.xposed 随便改一个
原始名称:XposedBridge.jar 随便改一个


3 Xposed

给Xpbridge提供API支持和调用了很多android-art的方法以及最重要的替换android zygote(app_process)



4 Xposed-Tools
Xp框架的编译器 打包出可以刷机的zip 以下两个是打包脚本和刷机包脚本文件内容改成你对应的就好了 这点网上根本没有资料 全靠自己一个文件一个文件看巨坑
如果有源码不准备刷机安装Xp单独改buid.pl就好了
flash-script.sh不改刷机就会报错 缺少xpsoed.prop




思维导图


5 编译与运行

把Xposed项目复制到android源码/frameworks/base/cmds 下
在去下载与你编译的android源码对应的xpsoed版ART 进行替换
xposedtools 开始编译 静静等待就好了 我这里编译了 android5.1 android 6.1 arm arm64 x86手机可用的刷机包


数据线连接手机把对应的刷机包push到手机里 adb reboot recovery 选择刷机包安装即可 手机重启收即可看到
注意要使用定制版本的Xp 项目里的jar包一定得是你定制后的其他不用动



总结
得亏在改之前认真复习了一遍zygote和Xposed框架的源码 由于网上资料过少经历了不少坑 很多都是自己摸索出来了 我觉得应该有不少人有这种需求所以写了这篇文章 希望能够帮助到你 有什么问题可以私信我
 在CSDN写的 原文可能看起来舒服点 传送门


看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

收藏
点赞8
打赏
分享
最新回复 (58)
雪    币: 2534
活跃值: 活跃值 (8047)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
珍惜Any 活跃值 1 2019-11-26 18:28
2
0
火钳刘明
雪    币: 1234
活跃值: 活跃值 (807)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
小调调 活跃值 2019-11-26 20:41
3
0
来得不算晚,给你点赞
雪    币: 946
活跃值: 活跃值 (1195)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
aihacker 活跃值 2019-11-26 21:06
4
0
雪    币: 8372
活跃值: 活跃值 (40246)
能力值: (RANK:105 )
在线值:
发帖
回帖
粉丝
Editor 活跃值 2019-11-27 09:29
5
0
感谢分享!
雪    币: 4863
活跃值: 活跃值 (997)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
CCkicker 活跃值 2019-11-27 09:55
6
0
赞!
雪    币: 1541
活跃值: 活跃值 (1483)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
StriveMario 活跃值 2019-11-27 09:59
7
0
很强
雪    币: 4489
活跃值: 活跃值 (1097)
能力值: ( LV8,RANK:129 )
在线值:
发帖
回帖
粉丝
yimingqpa 活跃值 1 2019-11-27 10:13
8
0
66666666666
雪    币: 617
活跃值: 活跃值 (279)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
风中的承诺 活跃值 2019-11-27 10:16
9
0
围观!!!!
雪    币: 358
活跃值: 活跃值 (463)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
陈某人 活跃值 2019-11-27 10:21
10
0
围观
雪    币: 6194
活跃值: 活跃值 (3267)
能力值: (RANK:200 )
在线值:
发帖
回帖
粉丝
LowRebSwrd 活跃值 4 2019-11-27 10:30
11
0
赞! 
雪    币: 612
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_anecorps 活跃值 2019-11-27 10:44
12
0
围观!!
雪    币: 944
活跃值: 活跃值 (809)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
pushmop 活跃值 2019-11-27 11:08
13
0
感谢分享
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
simcmcc 活跃值 2019-11-27 13:36
14
0
雪    币: 277
活跃值: 活跃值 (456)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
笑对VS人生 活跃值 2019-11-27 15:27
15
0
这种定制框架手里刚好有一样机/擎天柱
雪    币: 275
活跃值: 活跃值 (448)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lemn 活跃值 2019-11-27 16:57
16
0
我前两天也是定制了一下 也基本是靠这两个帖子找思路 一步步摸谢谢分享,就是改了之后通用模块用不了
雪    币: 244
活跃值: 活跃值 (334)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
leehero 活跃值 2019-11-27 18:29
17
0
这个修改后是不是一般的其他的通用的一些插件都用不了,要自己重新写么?
雪    币: 8958
活跃值: 活跃值 (1204)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xmhwws 活跃值 2019-11-27 18:45
18
0
感谢分享
雪    币: 7074
活跃值: 活跃值 (1056)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ColoThor 活跃值 2019-11-27 21:55
19
0
EdXposed能出个教程吗
雪    币: 58
活跃值: 活跃值 (127)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Ddddz 活跃值 2019-11-28 10:06
20
0
雪    币: 2448
活跃值: 活跃值 (571)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wwwoook 活跃值 2019-11-28 12:11
21
0
雪    币: 13
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
学习停不下来 活跃值 2019-11-28 13:50
22
0
雪    币: 3782
活跃值: 活跃值 (2953)
能力值: (RANK:200 )
在线值:
发帖
回帖
粉丝
roysue 活跃值 3 2019-11-28 17:58
23
0
火钳刘明~
雪    币: 1915
活跃值: 活跃值 (1065)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
世界美景 活跃值 1 2019-11-29 10:38
24
0
leehero 这个修改后是不是一般的其他的通用的一些插件都用不了,要自己重新写么?
通用插件没办法直接用  如果有源码换个定制过的jar包 之后重新导一遍包 打包APK就能用了 
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
qi_hao 活跃值 2019-11-29 17:44
25
0
改xposed能否实现免root ??
游客
登录 | 注册 方可回帖
返回