[原创]Frida持久化方案(Xcube)之方案一——基于Magisk和Riru
发表于:
2021-4-1 15:28
71559
[原创]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 脚本中输出的日志
源码https://github.com/svengong/xcubebase_riru.git
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课