1.介绍
由于frida和objection每次都需要我们注入到app来对程序进行修改,有了xposed hook框架,我们可以编写xposed模块,实现对app的永久修改。
1.原理
所有的app都是通过zygote fork出来的,xposed通过替换zygote的进程文件app_process, 就实现了对所有app进程的控制。
1.安装XposedInstaller_3.1.5.apk
1)打开模拟器,安装XposedInstaller_3.1.5.apk,运行,提示xposed框架未安装。
2)去https://dl-xda.xposed.info/framework/下载SDK,我们看到上一步的图片中API是25,所以这里下载x86版本的sdk25。
3)adb push /sdcard/Android/data/de.robv.android.xposed.installer/cache/downloads/framework,但是后面两个目录默认没有,需要我们手动创建一下。
4)如图所示,重启xposed,然后进行勾选,出现了安装/更新,右键instanll安装,然后会出现读取root权限的提示,这里选择允许,永久记住选择。
5)重启模拟器,显示已激活。
2.找到需要hook的函数
3.编写hook模块
1.安装看雪KCTF-xposed.apk文件,打开,有签名校验。
2.还是通过Androidkiller反编译,找到函数入口点com.kanxue.xposed.MainActivity,然后找到签名类,找到函数.method public setRealCer(Ljava/lang/String;)V。
3.先去下载Android studio,之前下载过sdk,这里就不用再下载了,找到bin目录下idea.properties文件,末尾加一句disable.android.first.run=true,表示首次启动不检测sdk,进入软件后,依次指定jdk,sdk安装目录,下载必须的组件后就可以正常使用了。
https://www.androiddevtools.cn/
4.新建一个空白Android项目(java语言),切换到protect file,然后为模块编写做准备:
1)第一步:修改build.gradle文件添加依赖(打开app/build.gradle文件,找到dependencies在里面添加,添加完后右上边点一下sync now同步一下,会自动下载一些依赖包)
2)第二步:修改app/src/main/andoirmanifest.xml文件 在aplication中添加以下属性
3)第三步:新建hook类
将上面代码中的包名、类名、函数名替换成我们要hook的包名com.kanxue.xposed、类名com.kanxue.xposed.SignCheck、函数名check,默认返回值result是true,可以根据实际情况修改。
4)第四步:修改入口类
在main下新建assets目录,在assetss目录下新建xposed_init文件,添加入口类 com.example.hooksig.MyHook 根据实际情况添加入口类
5.准备工作完成,就可以点击build,build apk,生成apk文件,报错。
6.经过查询,依赖的第三方仓库已经改成了这个域名 api.xposed.info,修改全局的settings.gradle文件,然后重新点build apk,生成apk文件。
7.安装生成的apk模块,提示已安装,未激活,打开xposed框架,左上角点开,点模块,勾选激活,然后重启模拟器。
8.打开目标apk,发现签名校验已经绕过去了,还有root检测。
9.使用前面的方法,找到root检测的类和函数,继续修改hook代码:
10.使用前面的方法,找到flag判断的类和函数,继续修改hook代码:
1.按照步骤来,生成apk一直报错,刚开始看到文章说要用本地的jar包,可是网上xposed:api:82.jar包都是收费的,最后找了一个54版本的jar,虽然成功编译了,但是达不到hook效果,一直没hook成功。
2.最后又看到说修改全局build.gradle文件,添加第三方依赖库,还是报错,说是要修改settings.gradle文件,最后终于成功了。
mount
-
o rw,remount
/
cd
/
sdcard
/
Android
/
data
/
de.robv.android.xposed.installer
/
cache
mkdir downloads
cd downloads
mkdir framework
C:\Users\LENOVO\Desktop>adb push xposed
-
v89
-
sdk25
-
x86.
zip
/
sdcard
/
Android
/
data
/
de.robv.android.xposed.installer
/
cache
/
downloads
/
framework
xposed
-
v89
-
sdk25
-
x86.
zip
:
1
file
pushe...d.
27.3
MB
/
s (
5206379
bytes
in
0.182s
)
mount
-
o rw,remount
/
cd
/
sdcard
/
Android
/
data
/
de.robv.android.xposed.installer
/
cache
mkdir downloads
cd downloads
mkdir framework
C:\Users\LENOVO\Desktop>adb push xposed
-
v89
-
sdk25
-
x86.
zip
/
sdcard
/
Android
/
data
/
de.robv.android.xposed.installer
/
cache
/
downloads
/
framework
xposed
-
v89
-
sdk25
-
x86.
zip
:
1
file
pushe...d.
27.3
MB
/
s (
5206379
bytes
in
0.182s
)
compileOnly
'de.robv.android.xposed:api:82'
compileOnly
'de.robv.android.xposed:api:82:sources'
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!