[原创]Frida持久化方案(Xcube)之方案一——基于Magisk和Riru
发表于:
2021-4-1 15:28
72762
[原创]Frida持久化方案(Xcube)之方案一——基于Magisk和Riru
上一篇介绍了基于xposed的frida持久化方案,这次带来基于magisk和riru的持久化方案。方案原理其实简单的很,开发过程却是非常坑,比如把手机刷成砖,比如每次出错都得重启手机加载插件。还好这些坑已经克服,现在只要编写靠谱的js脚本,自己过掉app的各种检测了!
原理
riru插件 我们知道riru给出了在app进程fork出来的时候的几个回调函数
1
2
3
4
5
6
forkAndSpecializePre
forkAndSpecializePost
specializeAppProcessPre
specializeAppProcessPost
forkSystemServerPre
forkSystemServerPost
这里选择了在如下方法处调用frida-gumjs引擎库执行js脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
static void forkAndSpecializePost(JNIEnv *env, jclass clazz, jint res) {
if (res == 0) {
// in app process
enable_hack = rirutest(env, *_appDataDir);
if (enable_hack) {
gumjsHook();
}
} else {
// in zygote process, res is child pid
// don't print log here, see https://github.com/RikkaApps/Riru/blob/77adfd6a4a6a81bfd20569c910bc4854f2f84f5e/riru-core/jni/main/jni_native_method.cpp
}
}
frida-gumjs.a是了frida封装的hook库和quickjs引擎,上一篇里也提到过,官方有下载,我们这里不细说。
配置 同样使用配置文件来管理哪些package需要hook,配置文件固定放在
1
const char *filepath = "/data/local/tmp/myscript.js";
要hook的包名每个一行
1
2
org.xtgo.xcube.base2
org.xtgo.xcube.base
咱这个插件使用的frida脚本路径也是写死的
1
const char *confpath = "/data/local/tmp/pkg.conf";
使用1.安装magisk和magisk manager,安装riru-core核心组件 2.frida官网下载 frida-gumjs.a放到/module/src/main/cpp/对应的ABI下 3.执行build,out目录会生成zip插件包 4.magisk manager安装插件,重启手机 5./data/local/tmp/pkg.conf中添加要hook的packagename 6.frida脚本push到/data/local/tmp/myscript.js 7.logcat中可以看到frida 脚本中输出的日志
源码064K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6N6X3g2F1k6$3!0F1k6#2)9J5c8Y4S2U0N6h3u0W2j5X3q4K6k6g2)9#2k6Y4u0A6M7Y4g2Q4x3X3g2Y4K9i4b7`.
[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!