定位收发包函数配方
🎯 用 r0capture 的调用栈定位 App 哪个类/方法在发包。
思路
r0capture 每条流量都带 stack(Java 调用栈),直接指向发包代码。
步骤
1. 抓包并重定向到文件
bash
python3 r0capture.py -U -f com.app -v >> out.txt2. 触发感兴趣的操作
操作 App(如点登录),让它发目标请求。
3. 在 out.txt 里搜明文关键字
bash
grep -A 30 "POST /api/login" out.txt找到目标请求的明文后,紧随其后的 stack 就是调用栈。
4. 读栈定位
[SSL_write] 192.168.1.5:54321 --> api.app.com:443
POST /api/login HTTP/1.1
...
at com.app.net.EncryptInterceptor.encrypt(EncryptInterceptor.java:88)
at com.app.api.LoginApi.login(LoginApi.java:42)
at com.app.ui.LoginActivity.onClick(LoginActivity.java:120)栈从上到下:
- 顶部:网络层(OkHttp/Conscrypt,忽略)
- 中间:业务层
LoginApi.login← 这就是发包的业务方法 - 底部:UI 触发点
LoginActivity.onClick
5. 反编译确认
用 jadx 反编译,跳到 LoginApi.login 看:
- 是否有加密/签名(栈里
EncryptInterceptor.encrypt提示有加密) - 请求参数怎么构造
进阶:定位加密函数
若抓到的明文是密文(App 自己加密了业务数据),栈里通常有 *Encrypt*/*Sign*/*Cipher* 帧,直接定位加密函数,再用 Frida hook 该函数拿加密前明文。