Skip to content

on_message 函数详解 ​

📨 r0capture.py 的消息分发器:接收设备端 send 并路由。

📎 源码在线查看:r0capture.py#L278-L336(on_message)

函数签名 ​

python
def on_message(message, data):

这是 frida 注入脚本后注册的回调,每次设备端 send(...) 都触发。

分发逻辑 ​

message 结构 ​

frida 的 message 字典:

字段含义
message["type"]"send"(正常)/"error"(脚本异常)
message["payload"]设备端 send 第一参(我们的 p)
message["stack"]仅 error 时有,异常栈

data 是设备端 send 第二参(二进制 ArrayBuffer)。

错误处理 ​

python
if message["type"] == "error":
    print("脚本错误:", message["stack"])

设备端脚本抛未捕获异常时,frida 把它作为 error message 发回。

与 ssl_log 的衔接 ​

python
p = message["payload"]
if p["type"] in ("SSL_read", "SSL_write", "socket_read", "socket_write"):
    ssl_log(p, data, pcap_file=...)

on_message 只做路由,具体写日志/pcap 交给 ssl_log。

线程模型 ​

frida 的 on_message 在 frida 内部线程被调用,串行处理。所以多 hook 并发 send 时,主机端按到达顺序排队处理,pcap 写入天然线程安全。

相关文档 ​

基于 VitePress 构建 · 教学用途