| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
持续输出高质量课程,课程咨询小肩膀QQ:24358757
小肩膀定制系统百度网盘地址: 链接:https://pan.baidu.com/s/1bfkY8MOKdWGpVRWa522C2A 提取码:9822
adb root
adb disable-verity
adb reboot
adb remount将GadgetConfig.js推送至 /data/local/tmp/xiaojianbang/包名,即开启该功能
注意事项
GadgetConfig.js文件名称不可更改。
GadgetConfig.js中的内容与Frida官网介绍的配置内容一致。
Frida官网Gadget介绍地址:https://frida.re/docs/gadget/
比如,GadgetConfig.js中的内容为:
{
"interaction": {
"type": "script",
"path": "/data/local/tmp/xiaojianbang.js"
}
}表示让Gadget在app运行时,直接加载hook脚本 /data/local/tmp/xiaojianbang.js, hook脚本路径及名称可自行指定, Gadget的so存放于 /system/lib/libxiaojianbang.so 和 /system/lib64/libxiaojianbang.so, 可自行替换版本,支持官网Gadget运行所支持的任意模式
打开app,只要dex有加载,就会保存在app的私有目录下 /data/data/包名/xiaojianbang。
创建目录 /data/local/tmp/xiaojianbang/包名/saveDex,即开启该功能。
打开app等待一分钟自动开启主动调用,脱壳完成后 logcat中会显示 call run over
将app私有目录下 /data/data/包名/xiaojianbang 中的 xxx.dex和xxx.bin 文件拿出来
使用 dexfixer.jar 修复
shell java -jar dexfixer.jar xxx.dex xxx.bin out.dex
out.dex就是最终脱壳完毕的dex。
脱壳完毕,记得删除 /data/local/tmp/xiaojianbang/包名 目录,否则每次打开都会脱壳
需要通过hook开启。 hook libc.so的strstr函数,当参数1为xiaojianbang_javaCall或者xiaojianbang_jniCall时,打印参数0和参数1即可,frida hook代码如下:
function hook_strstr() {
var libcModule = Process.getModuleByName("libc.so");
var strstrAddr = libcModule.getExportByName("strstr");
Interceptor.attach(strstrAddr, {
onEnter: function (args) {
this.arg0 = ptr(args[0]).readUtf8String();
this.arg1 = ptr(args[1]).readUtf8String();
if (this.arg1.indexOf("xiaojianbang_javaCall") != -1) {
LogPrint(this.arg1 + "--" + this.arg0);
}
if (this.arg1.indexOf("xiaojianbang_jniCall") != -1) {
LogPrint(this.arg1 + "--" + this.arg0);
}
}, onLeave: function (retval) {
if (this.arg1.indexOf("javaCall") != -1) {
retval.replace(1);
}
if (this.arg1.indexOf("jniCall") != -1) {
retval.replace(1);
}
}
});
}需要通过hook开启。 hook libc.so的strstr函数,当参数1为shouldTrace时,将函数返回值设置为1, 当参数1为traceLog时,打印参数0和参数1即可,frida hook代码如下:
function hook_strstr() {
var libcModule = Process.getModuleByName("libc.so");
var strstrAddr = libcModule.getExportByName("strstr");
Interceptor.attach(strstrAddr, {
onEnter: function (args) {
this.arg0 = ptr(args[0]).readUtf8String();
this.arg1 = ptr(args[1]).readUtf8String();
if (this.arg1.indexOf("traceLog") != -1) {
LogPrint(this.arg1 + "--" + this.arg0);
}
}, onLeave: function (retval) {
if (this.arg1.indexOf("shouldTrace") != -1) {
retval.replace(1);
}
}
});
}| Back | FazBrowse Home | New Git URL |