ADB 端口转发——把手机端口映射到电脑本地
是什么
ADB 端口转发把电脑的某个本地 TCP 端口,映射到手机上指定的 TCP 端口。这样电脑上的 frida 客户端就能通过 127.0.0.1 访问手机上的 frida-server。
为什么要转
- 手机和电脑在同一个 Wi-Fi 上可以直接 IP 访问,但更常见的是 USB 连接
- USB 连接下,手机没有独立的网络 IP(或者用 NAT),电脑直接访问不到
- ADB 协议是跨 USB 的,转发让电脑感觉端口就在自己本地
常用端口
| 手机端口 | 用途 |
|---|---|
| 28042 | frida-server spawn 模式 |
| 28043 | frida-server attach 模式 |
| 28050 | JS Hook MCP 服务端口 |
一行命令
adb forward tcp:28042 tcp:28042
adb forward tcp:28043 tcp:28043
左边是电脑的本地端口,右边是手机的目标端口。写一样的数字就行。
批量转发
如果每次连手机都要手动敲好几条转发命令,可以写个脚本:
# Windows PowerShell
adb forward tcp:28042 tcp:28042
adb forward tcp:28043 tcp:28043
adb forward tcp:28050 tcp:28050
Write-Output "所有端口转发完成"
确认 ADB 设备
转发前先确认 ADB 能识别到设备:
adb devices
# 输出类似:
# List of devices attached
# 123456789ABC device
如果是 unauthorized,手机上要点允许 USB 调试授权。如果没有任何设备,检查数据线、USB 调试开关、驱动。
撤销转发
adb reverse --remove-all
adb forward --remove-all
或者只撤某个端口:
adb forward --remove tcp:28042
Wi-Fi ADB
如果不想插 USB,也可以用 Wi-Fi ADB:
# 手机连 Wi-Fi,打开无线调试(Android 11+)
# 电脑先通过 USB 配对一次
adb tcpip 5555
adb connect <手机IP>:5555
之后就可以不拔线连 ADB 了,转发命令照常。
和 VS Code 扩展的关系
JS Hook 官方 VS Code 扩展需要手机和电脑在同一个 Wi-Fi 上(不依赖 ADB 端口转发)。但扩展底层还是通过 frida-server 端口通信,本质是同一个机制——只是不用 USB 了。
两种方式都行,看哪个方便。