Frida调试环境搭建
目录
警告
本文最后更新于 2023-02-21,文中内容可能已过时。
一、背景
从上手难度上来说frida可以说是开箱即用,几乎没有学习成本,对于大多数使用者来说,任何一个App都可以直接使用一个js脚本搞定。但是当面对繁多的App,如何将这种分析工具进行模块化拆分是需要好好思考思考的,直接使用js来做不太现实,而解决方案是ts+npm,优势在于
- 静态类型系统:提供静态类型检查,编译时即可发现类型错误,提升代码健壮性和可维护性
- 模块化管理:通过类型系统实现模块间的契约式开发,适用于大型项目管理
二、frida ts项目配置
frida接入ts开发可以参考frida-agent-example,使用方式也很简单,参考
$ git clone git://github.com/oleavr/frida-agent-example.git
$ cd frida-agent-example/
$ npm install
$ frida -U -f com.example.android --no-pause -l _agent.js
实时编译可以直接调用npm run watch
,如下
原理可以看
package.json
配置文件
{
"name": "frida-agent-example",
"version": "1.0.0",
"description": "Example Frida agent written in TypeScript",
"private": true,
"main": "agent/index.ts",
"scripts": {
"prepare": "npm run build",
"build": "frida-compile agent/index.ts -o _agent.js -c",
"watch": "frida-compile agent/index.ts -o _agent.js -w"
},
"devDependencies": {
"@types/frida-gum": "^18.5.1",
"@types/node": "^18.19.3",
"frida-compile": "^16.4.1"
}
}
调用的是frida-compile agent/index.ts -o _agent.js -w
来编译
修改index.ts代码可以动态编译
frida ts环境配置完成后需要主动暴露端口接入chrome调试,如下
frida -U -f com.tencent.wework -l _agent.js --debug --runtime=v8
默认端口为9229
三、chrome调试环境配置
chrome打开标签chrome://inspect
,点击Open dedicated DevTools for Node
来新打开DevTools
进入
DevTools
后切换到Source可以看到该端口对应的文件
单步调试