Log.getStackTraceString
📚 Android 抓 Java 调用栈的标准方法。
用法
javascript
var stack = Java.use("android.util.Log")
.getStackTraceString(Java.use("java.lang.Throwable").$new());new Throwable():创建异常对象(捕获当前栈)Log.getStackTraceString(throwable):把栈转成字符串
r0capture 的使用
| hook 点 | 用途 |
|---|---|
| 客户端证书导出 | 记录谁在取私钥 |
| Pinning 定位 | 记录谁在校验证书 |
| 裸 TCP send/recv | 记录谁在发包/收包 |
| Conscrypt SSL 流 | 抓栈供 Native SSL hook 用 |
javascript
message["stack"] = Java.use("android.util.Log")
.getStackTraceString(Java.use("java.lang.Throwable").$new()).toString();栈字符串示例
at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream.write(...)
at com.android.okhttp.internal.http.Http1ExchangeCodec.writeRequestHeaders(...)
at com.app.api.ApiService.post(ApiService.java:42)
at com.app.ui.MainActivity.onClick(MainActivity.java:120)教学价值
栈是定位收发包函数的关键——SSLstackwrite/SSLstackread 把栈暂存,Native SSL_write/SSL_read hook 再带进 message 回传 Python。详见 收发包函数定位。