Android逆向解题-r2-pay
Android逆向解题-r2-pay
启动APP
Magisk下没Hide,无法启动APP。
Magisk+Shamiko黑名单模式,成功打开。
使用Frida
使用hluda-frida-server,里面的部分Anti-Frida失效。
但是基于遍历.plt
来检查libc函数有没有被替换的方法还是有效。
Java层
主逻辑
获取输入:
1 | /* renamed from: Φ */ |
看OnClick:
1 | // android.view.View.OnClickListener |
后面要分析Native层的这个函数:
1 | byte[] out = mainActivity2.gXftm3iswpkVgBNDUp(inBuff, mainActivity2.f508); |
反Root
下文会提到有利用rootbeer库进行Root检查。
Java层里找到与Native的接口:
1 | com.scottyab.rootbeer.RootBeerNative |
还有Java层的检测:
1 | this.f508 = (byte) -16; |
检测到了之后直接触发除零异常。或者直接抛出零指针解引用异常。
1 | if (rb.m1161() || (rb.m1154() && rb.m1149())) { |
Native层
- libnative-lib.so
- libtool-checker.so
libtool-checker.so
据说是用于检查root的一个开源库。好久没更新了,应该已经能轻松被Shamiko什么的给隐藏了。
scottyab/rootbeer: Simple to use root checking Android library and sample app (github.com)
libnative-lib.so
.init_array
1 | AREA .init_array, DATA, ALIGN=3 |
发现.datadiv
的基本就是空函数,或者无非是用于解密常量数据的。
重点关注两个函数
1 | DCQ sub_9080 |
sub_9080(没分析)
严重混淆,平坦化+虚假控制流;无法反编译。
sub_77D14(没分析)
Frida脚本
由于Native层里面有反Frida逻辑,因此需要进行完整分析&Patch后才能运行。
Java层-反反Root(optional)
因为开了Shamiko,所以其实不用。
1 | // frida -U -l ./bypass-root.js --no-pause -f re.pwnme |
Native层-
参考
r2-pay: anti-debug, anti-root & anti-frida (part 1) | Romain Thomas
- 本文作者: Taardis
- 本文链接: https://taardisaa.github.io/2023/10/15/Android逆向解题-r2-pay/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!