化妆品监管SU检测Hook绕过

环境: Windows ,化妆品监管APP2.0.5

  1. 查壳使用梆梆加固

  2. 打开APP 发现使用了Root 检测 frida-dexdump 没有使用

  3. 使用BlackDex32 在未Root的手机上,成功的把APP 的Dex 文件dump 下来

  4. 放到jadx 中看dex 文件

image-20220710105056885

也可以看到这个逻辑就是检测Root 后创建的su 文件存不存在

只需要把这个函数hook 掉返回false 就可以过掉Root 检测的弹窗了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// hook app for v2.0.5

function hook_su3() {
var utils = Java.use("c.a.a.b.t");
if (utils) {
console.log("find utils")
utils.p.overload().implementation = function () {
return false;
}
}

}

function main() {
Java.perform(function () {
hook_su3()

});
}


setImmediate(main, 0);
1
frida -l hook_su.js -F -U

image-20220710103702904

显示找不到类

使用Objection 启动的时候注入命令

1
objection -g com.nmpaic.hzp explore --startup-command "android hooking list classes"

然后看到几个经过混淆的类

1
2
3
4
5
6
7
8
9
10
c.d.a.f.a
c.d.a.f.b
c.d.a.f.b$b
c.d.a.f.c
c.d.a.h.h.a
c.d.a.h.h.b
c.d.a.h.h.d
char
cn.jpush.android.service.DownloadProvider
com.android.i18n.phonenumbers.AlternateFormatsCountryCodeSet

程序最终运行时的类名和反编译得到的类名不一致

尝试使用 objection 来hook

1
2
3
4
5
6

objection -g com.nmpaic.hzp explore --startup-command "android hooking watch class_method c.d.a.h.h.d --dump-args --dump-backtrace --dump-return"


objection -g com.nmpaic.hzp explore --startup-command "android hooking watch class c.d.a.h.h.d --dump-args --dump-backtrace --dump-return"

这个APP 只用修改这个APP 里一个函数的返回值就可以过掉SU检测

这里尝试使用APP 中搜索到的方法结合Objection 的设置函数返回值的方式

1
objection -g com.nmpaic.hzp explore --startup-command "android hooking set return_value c.d.a.h.h.d.p false"

把几个混淆后的类都尝试了一下 发现没有一个能用的


化妆品监管SU检测Hook绕过
https://kingjem.github.io/2022/07/10/化妆品监管SU检测Hook/
作者
Ruhai
发布于
2022年7月10日
许可协议