-
-
[原创]android jni 日志+参数 打印
-
发表于: 12小时前 185
-
一:前提
Adroid apk 中存在jni调用:使用 art 的 CallxxxMethodID 系列函数完成,最终内部都是通过 libart中的 art::ArtMethod::Invoke 函数完成调用
下面是通过 通过 frida hook Invoke 来打印所有jni调用的脚本。
主要是通过 methodID 参数进行指针内存索引,提取函数名称和类名称,以及hook Invoke 的返回地址来获取执行的结果。
效果:

使用其分析过的实例:《APK签名检测、IDA调试ARM64、脱壳修复、VMP分析》
二:使用方法
加载:
frida -U -f com.example.p8 -l .\hook_jni.js > t1.txt
修改1:功能
只能同时完成一个功能,不能同时设置为1

修改2:libart的偏移修改
三处分别是 libart.so 中的 art::JNI::RegisterNatives函数偏移、art::ArtMethod::Invoke函数偏移(获取调用参数)、art::ArtMethod::Invoke函数结束(RET)偏移(获取调用结果)
接口:
只有一个接口 start_hook() 函数,根据时机来调用,比如点击某个按钮后再调用这个函数
问题:
每个系统的liart so 版本不同,脚本通过 methodID 参数进行指针内存索引,而不是高级API完成的,可能各个字段或函数偏移不同,导致失败
赞赏
他的文章
- [原创]android jni 日志+参数 打印 186
- [原创][原创]so trace 学习 2231
- [原创]xp 、win7 堆溢出 5888
赞赏
雪币:
留言: