概述
Why:兼容JavaScript
、语法提示、调试功能
环境
系统:Windows 10 20H2 x64
软件:VS Code
、Chrome Stable 96.0.4664.45
、Node.js 14.17.4
、Frida 15.1.11
搭建
克隆仓库并安装
1 | git clone https://github.com/XhyEax/frida-agent-example |
编写脚本
编辑index.ts
,可使用import
引入其他模块
注意:日志都是在Frida CLI
中输出,可通过-o
参数指定日志文件
开启实时编译(推荐)
1 | npm run watch |
监听文件变化,自动编译到_agent.js
代码提示
VSCode
安装Node.js
和TypeScript
相关拓展即可
PS:在frida-script-agent
目录下直接创建js文件,也有代码提示
*更新
建议使用PyCharm
,可直接在源文件下断点,见Frida ts环境搭建(PyCharm)
调试
启动Server
注意:运行前确保已开启实时编译,不然修改不生效
使用spawn
或attach
模式附加app,设置引擎为v8
并开启调试模式。
方法一 使用npm scripts(推荐)
spawn
1 | npm run spawn --pkgname=com.android.settings |
attach
1 | npm run attach --appname=设置 |
也可将上述命令添加到VSCode
启动配置
方法二 命令行
spawn
1 | frida -U --debug --runtime=v8 -l _agent.js -o out.log --no-pause -f pkgname |
attach
1 | frida -U --debug --runtime=v8 -l _agent.js -o out.log appname |
成功后会在Frida CLI
中输出:Chrome Inspector server listening on port 9229
DevTools附加
使用谷歌内核浏览器,按下F12
打开DevTools
,点击左上角的Node.js
图标(或打开chrome://inspect
,点击Open dedicated DevTools for Node
)
然后按下Ctrl + P
,切换源文件。(或点击来源
-节点
,打开Node.js
下的文件)
PS:按Esc
可切换抽屉栏控制台的显示
(也可以使用VSCode
附加,但是无法下断点,控制台有时也连接不上。不推荐)
主动调用方法
TypeScript
如果是使用frida-compile
生成的js文件,则需要使用rpc.exports
将方法导出,然后通过rpc.exports.方法名
调用(附加调试的控制台和Frida CLI
均可)
JavaScript
如果使用原始的js脚本,只需要加上--debug --runtime=v8
参数启动,在DevTools
和Frida CLI
中都可以直接通过函数名调用(默认导出)
断点调试
打开DevTools
,在最终文件(如_agent.js
)下断点即可,可配合主动调用触发断点