首页
社区
课程
招聘
[原创]Frida持久化方案(Xcube)之方案一——基于Magisk和Riru
2021-4-1 15:28 70313

[原创]Frida持久化方案(Xcube)之方案一——基于Magisk和Riru

2021-4-1 15:28
70313

上一篇介绍了基于xposed的frida持久化方案,这次带来基于magisk和riru的持久化方案。方案原理其实简单的很,开发过程却是非常坑,比如把手机刷成砖,比如每次出错都得重启手机加载插件。还好这些坑已经克服,现在只要编写靠谱的js脚本,自己过掉app的各种检测了!

原理

  1. 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#L55-L66
     }
    }
  2. frida-gumjs.a是了frida封装的hook库和quickjs引擎,上一篇里也提到过,官方有下载,我们这里不细说。

  3. 配置
    同样使用配置文件来管理哪些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


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞4
打赏
分享
最新回复 (14)
雪    币: 334
活跃值: (392)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_yvvzfcdo 2021-4-1 15:56
2
0
感谢分享
雪    币: 181
活跃值: (2868)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huaerxiela 2021-4-12 22:12
3
0
感谢分享
雪    币: 1
活跃值: (2128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_范迪塞尔 2021-7-16 18:22
4
0

没法build啊,有成功的兄弟嘛,https://dl.bintray.com/rikkaw/Libraries/rikka/ndk/riru/10/riru-10.pom  这个pom根本找不到

最后于 2021-7-16 18:36 被wx_范迪塞尔编辑 ,原因:
雪    币: 1
活跃值: (2128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_范迪塞尔 2021-7-17 10:55
5
0

没法打印日志

最后于 2021-7-18 15:31 被wx_范迪塞尔编辑 ,原因:
雪    币: 3878
活跃值: (2021)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
anenn 2021-7-22 10:10
6
0
wx_范迪塞尔 没法build啊,有成功的兄弟嘛,https://dl.bintray.com/rikkaw/Libraries/rikka/ndk/riru/10/riru-10.pom  这个p ...
将 implementation 'rikka.ndk:riru:10' 改成 implementation 'dev.rikka.ndk:riru:10' 就能正常编译了

雪    币: 1
活跃值: (2128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_范迪塞尔 2021-7-22 18:00
7
0

实测安卓10可以,安卓11不行,  安卓11forkAndSpecializePost这个回调函数没有触发,specializeAppProcessPost触发了但是注入gumjs就报错了,有没有大佬说说原因啊

最后于 2021-7-23 17:06 被wx_范迪塞尔编辑 ,原因:
雪    币: 3212
活跃值: (693)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
疯子Tear 2021-7-29 21:10
8
0
wx_范迪塞尔 实测安卓10可以,安卓11不行,  安卓11forkAndSpecializePost这个回调函数没有触发,specializeAppProcessPost触发了但是注入gumjs就 ...
老哥编译成功了么
雪    币: 223
活跃值: (1089)
能力值: ( LV3,RANK:27 )
在线值:
发帖
回帖
粉丝
svengong 2021-8-13 14:10
9
0
wx_范迪塞尔 实测安卓10可以,安卓11不行,  安卓11forkAndSpecializePost这个回调函数没有触发,specializeAppProcessPost触发了但是注入gumjs就 ...
不至于吧,源码里有个so因为太大,你得手动unzip一下
雪    币: 223
活跃值: (1089)
能力值: ( LV3,RANK:27 )
在线值:
发帖
回帖
粉丝
svengong 2021-8-13 14:11
10
0
我一直用的小米10pro的12.5,Android11 跑的飞起
雪    币: 223
活跃值: (1089)
能力值: ( LV3,RANK:27 )
在线值:
发帖
回帖
粉丝
svengong 2021-8-13 14:14
11
0
wx_范迪塞尔 没法打印日志
consile.log的日志是直接输出到logcat中的
雪    币: 227
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
一面 2021-11-2 22:51
12
0
安卓 8.1 安装没反应啊  创建了pkg  和myscript   locat 没得输出
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
shuishui1024 2022-1-11 17:05
13
0

1

最后于 2022-1-11 17:06 被shuishui1024编辑 ,原因:
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Bingo_player 2022-4-23 15:41
14
0
编译了一天一直报错。。然后显示::module:externalNativeBuildDebug,Build command failed
雪    币: 22
活跃值: (3629)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
New对象处 2022-12-16 09:49
15
0
大佬用的啥版本ndk
游客
登录 | 注册 方可回帖
返回