加固(壳)
🛡️ App 用整体壳/二代壳/VMP 保护代码。r0capture 在系统 native 层 hook,无视加固。
加固类型
| 类型 | 说明 |
|---|---|
| 整体壳 | 整个 dex 加密,运行时解密到内存 |
| 二代壳(函数抽取) | 函数粒度加密,按需解密 |
| VMP | 代码虚拟化,转成自定义指令集 |
加固的目的是防止逆向(反编译、调试)。
r0capture 为什么无视加固
加固保护的是 App 自己的代码(dex/业务逻辑),但 App 最终发网络请求仍要调系统的 libssl.so(加固动不到系统库)。r0capture hook 的是系统 native 符号,加固与否都能抓到。
关键
加固改变的是「App 业务代码怎么组织」,不改变「最终走系统 SSL 收发」这个事实。r0capture 在系统层拦截,与加固无关。
加固下的调用栈
加固后调用栈可能被混淆(类名变成 a.b.c),但栈里仍会出现系统 SSL 相关帧,足以确认是网络收发。SSLstackwrite/SSLstackread 来自 Conscrypt hook,不受加固影响。
注意:spawn 早期竞争
加固 App 在 spawn 早期会做脱壳初始化,此时 Frida 注入可能与加固反调试逻辑竞争。用 -w 延迟几秒等脱壳完成后再抓更稳:
bash
python3 r0capture.py -U -f com.hardened.app -w 5 -v -p out.pcap