对于这个工具的安装以及使用的教程较少,省略了很多细节,有的也不太详细,踩了很多的坑,所以我想在这里详细的说一说。把我遇到的问题给大家排排雷。
首先是安装:
1.安装前置环境
首先需要下载node.js,因为这个工具需要使用npm的工具来安装。只能使用typescript来编写。但是这里不熟悉typescript不用慌,语法还是不复杂的。
下载node.js我就不说了。下载完之后使用cmd
输入下列命令检查是否下载完成
npm -v
node -v
需要下载typescript
npm install -g typescript
//检查typescript是否安装完成
tsc --version
2.两种使用方法
接下来frida-il2cpp-bridge有两种使用的方法,两种我都详细的说一下
2.1直接编译
直接在github上下载源码。
之后在cmd里, 把目录cd到源码的目录上,之后tsc -w 。会报错,但是在dist文件夹内已经有了index.js
之后frida -l index.js
-U是注入android程序 -p是注入windows里的进程
任务管理器可以看到对应的进程号
就可以直接使用了,注意这里要先打开程序,之后再注入。这样子注入的话只能在命令行里编写代码。
这种方法无法编译index.ts文件,也就是想hook一些函数比较麻烦,只能在命令行里一句一句的输入,用来追踪一些函数比较方便。
接下来讲下第二种,比较通用
2.2 使用frida-compile编译
首先找一个空的文件夹,使用cmd到这个目录下,之后
之后新建一个index.ts文件,空的也行
在npm frida之后会出现package.json文件,修改package.json
"main": "index.ts",
"scripts": {
"prepare": "npm run build",
"watch": "frida-compile index.ts -w -o hook.js"
},
"dependencies": {
"frida-il2cpp-bridge": "^0.8.5"
}
}
打开vscode,在打开terminal,使用npm run watch。
就可以编译出hook.js文件,之后你在index.ts里写代码,按ctrl+s就会自动编译出新的hook.js
此时在利用这个hook.js注入你想注入的程序里,即可。
这里要特别注意,你的路径名不能带中文,不然会出问题!!!
il2cpp可以dump内存,可以追踪函数,写法和普通的frida不同,研究了一下,我想hook某个函数时,想设置某个值一直不成功。也等后面再研究一下了。
用法
常用的dump文件的命令就是,之后会生成一个cs文件,包含了用的unity的函数以及各种作者自己写的函数
import "frida-il2cpp-bridge"
Il2Cpp.perform(() => {
Il2Cpp.dump();
});
追踪某个类
Il2Cpp.perform(() => {
const SysString = Il2Cpp.corlib.class("System.String");
Il2Cpp.trace(true).classes(SysString).and().attach();