
安装 fridaManager使用 AndroidAsync + FridaManager 实现 frida 脚本持久化 rpc 远程调用
AndroidAsync 使用链接
FridaManager 安装教程
最后实现某宝的 sgmain 70102 调用 taobao version == 10.2.5
下载百度网盘链接里的文件 riru-fridamanager-1.0-release.zip | FridaManage.apk
总结安装就是
最后重启手机,完事
编译 AndroidAsync这个是一个 android 项目,需要打包成 jar 包,在转成 dex 文件,frida 里才能很方便的使用
博主 clone github 项目,编译一直失败,遇到各种问题最后也是没有解决。
最后是偷了个懒使用 android 项目,通过依赖去下载 AndroidAsync jar 包
这里添加依赖
重新加载,同步下配置文件,完成后打来这个目录
找到依赖包,复制出里面的 classes.jar 文件
使用 Android Sdk -> dx 命令,转换
这条命令在 $Android/sdk/build-tools/${sdk-version}/dx
执行 dx --min-sdk-version=30 --dex --output dex文件路径 classes.jar文件路径
完成后就可以看到生成了 androidAsync.dex 文件,执行 adb push androidAsync.dex /data/local/tmp
function main() {
// 加载 dex 文件
Java.openClassFile('/data/local/tmp/androidAsync-2.2.1.dex').load();
const HttpServerRequestCallback = Java.use('com.koushikdutta.async.http.server.HttpServerRequestCallback');
// 构建一个默认请求
const RequestTestCallback = Java.registerClass({
name: "RequestTestCallback",
implements: [HttpServerRequestCallback],
methods: {
onRequest: function (request, response) {
// 主动调用代码直接写这里
response.send(JSON.stringify({
"code": 0,
"message": " 服务已经注册成功, 默认端口8181"
}));
}
}
});
try {
const AsyncHttpServer = Java.use('com.koushikdutta.async.http.server.AsyncHttpServer');
const androidAsync = AsyncHttpServer.$new();
// 新增路由
androidAsync.get('/', RequestTestCallback.$new());
androidAsync.listen(8181);
console.log('reg webServer Ok');
} catch (e) {
console.error('reg webServer Error!!!, e:' + e);
}
}
Java.perform(function () {
const Application = Java.use('android.app.Application');
Application.attach.implementation = function () {
main();
this.attach.apply(this, arguments);
}
});
以上就是一个 androidAsync Demo 代码,保存先使用 frida -U -f com.example.appdemo -l a.js --no-pause 启动 frida 脚本
执行后,输出了服务启动成功的 log
然后请求 手机 ip:8181 端口,正常返回结果,到这环境就搭建成功了
call sgmain 70102参照上面的 RequestTestCallback 类,再添加一个
上图,添加了新增了一个 post 请求
执行 adb push a.js /sdcard/fridascript 把脚本,push 到手机里,稍后通过 fridaManager 持久化
左边选中目标 app 右边选择 frida 脚本
选择完成后,重启手机,打开淘宝 app
打开后,先通过 adb shell 执行 curl http://127.0.0.1:8181/ 查看,是否成功
在写个 requests.post 请求,结果正常返回结果
更多精彩内容,源码文件下载等,原文链接,博主个人站点:http://www.qinless.com/134