电脑端 frida 直连——ADB 端口转发 + 28042/28043
前提
- 目标应用的框架选 fridainject
- 目标应用的 Hook 服务已开启
- 电脑通过 ADB 连接手机(USB 或 Wi-Fi)
端口
fridainject 启动的 frida-server 默认监听:
| 端口 | 用途 |
|---|---|
| 28042 | spawn 模式(启动时注入) |
| 28043 | attach 模式(附加到已运行进程) |
ADB 端口转发
adb forward tcp:28042 tcp:28042
adb forward tcp:28043 tcp:28043
这两步在电脑端执行,把电脑的 28042/28043 端口转发到手机上 JsHook frida-server 的端口。
spawn 模式
frida -H 127.0.0.1:28042 -f com.example.app -l test.js
参数说明:
-H 127.0.0.1:28042:通过 ADB 转发后的本机端口连接手机 frida-server-f com.example.app:spawn 模式,frida-server 启动目标应用并在早期注入-l test.js:加载脚本文件
这个命令会让 frida-server 启动目标应用并立即注入脚本。脚本跑完进程就结束了,适合测试性跑一段代码。
attach 模式
frida -H 127.0.0.1:28043 -n com.example.app -l test.js
-n com.example.app:attach 模式,附加到已经在运行的目标应用进程
attach 模式下你可以在电脑上写脚本、实时执行、实时看日志——这是最常用的调试方式。
交互模式(REPL)
frida -H 127.0.0.1:28043 -n com.example.app
不加 -l 参数,直接进入交互模式,可以在命令行里手动敲 Frida JS 代码:
>>> Java.perform(() => { console.log(Java.use('android.os.Build').MODEL.value) })
Pixel 6
>>>
配合 VS Code 扩展
JS Hook 的 VS Code 扩展底层就是通过这条路径通信的(frida-server 端口 + ADB 转发)。所以扩展能用的前提就是:
- 目标应用选 fridainject
- Hook 服务开启
- 端口转发成功
常见问题
连接被拒绝
Failed to connect to 127.0.0.1:28042: Connection refused
排查顺序:
- 手机上目标应用有没有选 fridainject 框架?
- Hook 服务有没有开?
- ADB 设备连接正常吗?(
adb devices看输出) - 端口转发有没有做?
spawn 失败
Failed to spawn: unable to find process with name com.example.app
spawn 模式需要 frida-server 有权限启动目标应用。如果启动被系统拦截,换成 attach 模式(先在手机上手动打开目标应用,再 attach)。
attach 找不到进程
Failed to attach: unable to find process with name com.example.app
- 目标应用有没有在运行?
- 包名是不是写对了(区分大小写)?
- 应用有没有被系统杀掉了?
frida-gadget 连接见另外的页
如果目标应用用的是 fridagadget(自己 patch 过的 APK),连接方式略有不同,进程名是 Gadget。见 frida-gadget 连接。