🛫 系列文章导航
- 【Frida】 00_简单介绍和使用 https://blog.csdn.net/kinghzking/article/details/123225580
- 【Frida】 01_食用指南 https://blog.csdn.net/kinghzking/article/details/126849567
- 【Frida】 02_常见API示例及功能函数封装(snippets) https://blog.csdn.net/kinghzking/article/details/136903974
- 【Frida】 03_初识frida-node https://blog.csdn.net/kinghzking/article/details/136685316
- 【Frida】 04_Frida中使用TypeScript脚本(采坑) https://blog.csdn.net/kinghzking/article/details/136772475
- 【Frida】 05_读取扫雷游戏的数据 https://blog.csdn.net/kinghzking/article/details/136781623
- 【Frida】 06_分析扫雷游戏的数据,显示地雷位置 https://blog.csdn.net/kinghzking/article/details/136685316
- 【Frida】 07_让系统重新绘制指定窗口 https://blog.csdn.net/kinghzking/article/details/136829854
- 【Frida】 08_将目标窗口切换到前台 https://blog.csdn.net/kinghzking/article/details/136837275
- 【Frida】 09_获取软件窗口位置,设置鼠标指针位置 https://blog.csdn.net/kinghzking/article/details/136854052
- 【Frida】 10_用鼠标自动标记棋盘上的雷区(一键过关) https://blog.csdn.net/kinghzking/article/details/136854020
- 【frida-实战】“一行”代码教你获取WeGame平台中所有的lua脚本 https://blog.csdn.net/kinghzking/article/details/125590584
- 【Frida-实战】EA游戏平台的文件监控(PsExec.exe提权) https://blog.csdn.net/kinghzking/article/details/130512479
▒ 目录 ▒
🛫 导读
需求
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.2.1 | 高版本各种异常 |
扫雷程序下载地址 | https://download.csdn.net/download/kinghzking/88979919 | |
课程源码 | 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
,然后就可以正常运行了!!!
📖 参考资料
ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。