jshook 中文文档 下载 App

电脑端 frida 直连——ADB 端口转发 + 28042/28043

前提

端口

fridainject 启动的 frida-server 默认监听:

端口用途
28042spawn 模式(启动时注入)
28043attach 模式(附加到已运行进程)

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

参数说明:

这个命令会让 frida-server 启动目标应用并立即注入脚本。脚本跑完进程就结束了,适合测试性跑一段代码。

attach 模式

frida -H 127.0.0.1:28043 -n com.example.app -l test.js

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 转发)。所以扩展能用的前提就是:

  1. 目标应用选 fridainject
  2. Hook 服务开启
  3. 端口转发成功

常见问题

连接被拒绝

Failed to connect to 127.0.0.1:28042: Connection refused

排查顺序:

  1. 手机上目标应用有没有选 fridainject 框架?
  2. Hook 服务有没有开?
  3. ADB 设备连接正常吗?(adb devices 看输出)
  4. 端口转发有没有做?

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 连接。