Skip to content

定位收发包函数配方 ​

🎯 用 r0capture 的调用栈定位 App 哪个类/方法在发包。

思路 ​

r0capture 每条流量都带 stack(Java 调用栈),直接指向发包代码。

步骤 ​

1. 抓包并重定向到文件 ​

bash
python3 r0capture.py -U -f com.app -v >> out.txt

2. 触发感兴趣的操作 ​

操作 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 该函数拿加密前明文。

相关文档 ​

基于 VitePress 构建 · 教学用途