Skip to content

return_zero() 桩函数 ​

🧱 一个永远返回 0 的桩函数,用于 SSL_get_fd 缺失时的降级。

📎 源码在线查看:script.js#L113-L122(return_zero)

实现 ​

javascript
function return_zero(args) {
  return 0;
}

何时使用 ​

个别 Android 版本 / 定制 ROM 会缺 SSL_get_fd 导出符号。initializeGlobals 遇到这种情况:

javascript
if (addresses["SSL_get_fd"] == 0) {
  SSL_get_fd = return_zero;   // 用桩代替 NativeFunction
} else {
  SSL_get_fd = new NativeFunction(addresses["SSL_get_fd"], "int", ["pointer"]);
}

用 return_zero 代替 NativeFunction,使得后续调用 SSL_get_fd(...) 永远返回 0。

返回 0 的连锁影响 ​

SSL_read/SSL_write 的 onEnter 会调 SSL_get_fd(args[0]) 拿 fd,再传给 getPortsAndAddresses(fd, ...):

走 getPortsAndAddresses 里的「fd==0 → 地址置 0」降级分支。明文数据照抓不误,只是 pcap 里这个包的源/目的地址是 0.0.0.0:0,无法在 Wireshark 里按地址过滤,但仍能看到载荷内容。

设计意图 ​

不让一个非关键符号的缺失(SSL_get_fd)导致整个脚本崩掉——降级为「能抓明文、地址无效」,比完全抓不到强。

相关文档 ​

基于 VitePress 构建 · 教学用途