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

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

2019-11-26 18:28
30080
由于很多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写的 原文可能看起来舒服点 传送门


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞9
打赏
分享
最新回复 (58)
雪    币: 1929
活跃值: (12835)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
珍惜Any 2 2019-11-26 18:28
2
0
火钳刘明
雪    币: 2921
活跃值: (2557)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
小调调 2019-11-26 20:41
3
0
来得不算晚,给你点赞
雪    币: 1013
活跃值: (1397)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
aihacker 2019-11-26 21:06
4
0
雪    币: 17810
活跃值: (59933)
能力值: (RANK:125 )
在线值:
发帖
回帖
粉丝
Editor 2019-11-27 09:29
5
0
感谢分享!
雪    币: 6086
活跃值: (1192)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
CCkicker 2019-11-27 09:55
6
0
赞!
雪    币: 3465
活跃值: (2842)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
StriveMario 2019-11-27 09:59
7
0
很强
雪    币: 5831
活跃值: (3630)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
yimingqpa 1 2019-11-27 10:13
8
0
66666666666
雪    币: 624
活跃值: (501)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
风中的承诺 2019-11-27 10:16
9
0
围观!!!!
雪    币: 209
活跃值: (1849)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
陈某人 2019-11-27 10:21
10
0
围观
雪    币: 6569
活跃值: (3823)
能力值: (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
围观!!
雪    币: 649
活跃值: (1668)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
pushmop 2019-11-27 11:08
13
0
感谢分享
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
simcmcc 2019-11-27 13:36
14
0
雪    币: 386
活跃值: (829)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
笑对VS人生 2019-11-27 15:27
15
0
这种定制框架手里刚好有一样机/擎天柱
雪    币: 275
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lemn 2019-11-27 16:57
16
0
我前两天也是定制了一下 也基本是靠这两个帖子找思路 一步步摸谢谢分享,就是改了之后通用模块用不了
雪    币: 774
活跃值: (772)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
leehero 2019-11-27 18:29
17
0
这个修改后是不是一般的其他的通用的一些插件都用不了,要自己重新写么?
雪    币: 6266
活跃值: (1276)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xmhwws 2019-11-27 18:45
18
0
感谢分享
雪    币: 7618
活跃值: (1467)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ColoThor 2019-11-27 21:55
19
0
EdXposed能出个教程吗
雪    币: 58
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Ddddz 2019-11-28 10:06
20
0
雪    币: 2448
活跃值: (763)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wwwoook 2019-11-28 12:11
21
0
雪    币: 13
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
学习停不下来 2019-11-28 13:50
22
0
雪    币: 3907
活跃值: (5707)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
roysue 3 2019-11-28 17:58
23
0
火钳刘明~
雪    币: 2113
活跃值: (2264)
能力值: ( 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 ??
游客
登录 | 注册 方可回帖
返回