▒ 目录 ▒
- 🛫 导读
- 需求
- 开发环境
- 演示目标
- 1️⃣ 操作步骤
- 安装node 20.10.0
- 在 VSCode 中打开项目目录
- 初始化一个 NodeJS 项目
- 安装 TypeScript
- 初始化 TypeScript 项目
- 安装依赖
- 配置 TypeScript
- 编写代码
- 编译设置
- 编译脚本
- 运行,查看结果
- 2️⃣ 采坑
- frida-compile版本问题
- 📖 参考资料
🛫 导读
需求
TypeScript目前是主流,方面模块管理frida代码。
而且这也是frida官网推荐的模式,这样会给你带来更多优势,如:代码完成度更高、类型检查、内联文档、重构工具
。
ps:
合并文件的形式
也可以实现模块划分,但是总感觉有点非主流
,而且没有代码提示等功能。
开发环境
版本号 | 描述 | |
---|---|---|
文章日期 | 2024-03-17 | |
操作系统 | Win11 - 22H2 | 22621.2715 |
node -v | v20.10.0 | |
npm -v | 10.2.3 | |
yarn -v | 3.1.1 | |
frida-compile | 10.0.1 | 高版本各种异常 |
课程源码 | https://gitcode.net/kinghzking/MyOpen | 所在目录:/course/frida |
演示目标
winmine.exe (windows xp系统附带的扫雷游戏)
软件版本:5.1.2600.0
软件大小:117 KB (119,808 字节)
1️⃣ 操作步骤
安装node 20.10.0
参考文章《【nvm】【node多版本管理工具】使用说明和踩坑(exit status 1) https://blog.csdn.net/kinghzking/article/details/126186648》
在 VSCode 中打开项目目录
初始化一个 NodeJS 项目
在终端中运行以下命令:
npm init -y
安装 TypeScript
在终端中运行以下命令:
npm install typescript --save-dev
初始化 TypeScript 项目
在终端中运行以下命令:
npx tsc --init
安装依赖
安装node、frida-gum的类型声明库;安装
frida-compile
。
npm install @types/node @types/frida-gum frida-compile@10.2.1 --save-dev
配置 TypeScript
你基本上希望你的
tsconfig.json
看起来像我的。 或者,有一种更紧凑的方法来实现相同的目的,只需复制粘贴以下内容:
{
"compilerOptions": {
"target": "es2020",
"lib": ["es2020"],
"allowJs": true,
"noEmit": true,
"strict": true,
"esModuleInterop": true
}
}
编写代码
创建一个名为
src
的目录,并在里面创建一个名为index.ts
的文件。文件内容如下:
// Startup
const version = "v3.8.6"
console.log(`Launching script ${version} on FRIDA ${Frida.version}`)
// Check your environment is ready
if(Java.available){
setTimeout(function (){
// Execute FRIDA code here
Java.perform(function (){
// FRIDA code here
});
}, 0);
}
编译设置
将
package.json
内容做如下调整:
- 修改入口文件
- 增加运行项:build、watch
编译脚本
执行命令
npm run build
,我们将获得如下文件
ps: 执行命令
npm run watch
,将监视原有文件变化,并立刻自动编译新的index.js文件。
运行,查看结果
我们以windows环境下的扫雷程(winmine.exe)序为例:
启动扫雷,执行命令D:\Python\Python371\Scripts\frida.exe -n winmine.exe -l index.js
将显示出Launching script v3.8.6 on FRIDA 15.0.18
信息,表示运行成功。
2️⃣ 采坑
frida-compile版本问题
小编使用官网文档提示的github代码,直接运行,生成下图所示的文件内容(各种乱码)。一开始以为是
node版本
问题,切换了三四个版本的node,依然各种报错。
后来灵机一动,修改
frida-compile版本
为10.2.1
,然后就可以正常运行了!!!
📖 参考资料
- 官网文档地址: https://frida.re/docs/javascript-api/
- 官网示例代码: https://github.com/oleavr/frida-agent-example
- 赵庆明老师视频课程: https://www.bilibili.com/video/BV1xa411X7oF/
- github上某示例(含教程): https://github.com/BRUHItsABunny/FRIDASampleAgentTS
ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。