安装vscode + typescript开发环境
请参考《vscode编写typescript自动编译以及名称冲突问题》
安装python环境
在安装时,勾选将python添加到路径
安装完毕时,点击“Disable path length limit”
设置python源
国内python源,任意一个都可以:
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:https://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 华中理工大学:http://pypi.hustunique.com/
- 山东理工大学:http://pypi.sdutlinux.org/
- 豆瓣:http://pypi.douban.com/simple/
在vs中按ctrl+`(ESC下面的那个键),打开内置终端,在里面输入
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
安装Frida支持组件
pip install --upgrade pip
pip install frida-tools
Frida测试
启动PC微信,在vscode内置终端中输入
frida-trace -i "recv*" -i "read*" wechat.exe
点击微信界面,如果有数据发送和接收,将在终端中输出相关信息。
按Ctrl+C 退出
可修改__handlers__文件夹下的 js文件(如WS2_32.dll/recv.js),进一步解析数据。
修改js文件后,即使生效,无需重启rida-trace。
如:将log换为
log("recvfrom(socket=" + args[0].toInt32()
+ ", buffer=" + args[1]
+ ", length=" + args[2].toInt32()
+ ", flags=" + args[3]
+ ", address=" + args[4]
+ ", address_len=" + args[5].readPointer().toInt32()
+ ")");
安装基于typescript的Frida支持库
npm install @types/frida-gum
npm install @types/node
npm install frida-compile
编写ts代码
文件名:index.ts
function frida_info() {
console.log("======================", new Date().toISOString(), "==========================");
console.log("Frida.version\t\t\t", Frida.version);
console.log("Frida.heapSize\t\t\t", Frida.heapSize);
console.log("ProcessId\t\t\t", Process.id);
console.log("ProcessArch\t\t\t", Process.arch);
console.log("ProcessPlatform\t\t\t", Process.platform);
console.log("ProcessIsDebuggerAttached\t", Process.isDebuggerAttached());
console.log("ProcessPointerSize\t\t", Process.pointerSize);
console.log("ProcessCodeSigningPolicy\t", Process.codeSigningPolicy);
let modules = Process.enumerateModules();
for (const module of modules) {
console.log(module.base, module.size, "\t", module.path);
}
}
frida_info();
执行Frida
Frida需要执行ts文件和js文件。
在一些特殊的语法下,ts会执行失败,换为js则可正常执行。
frida wechat.exe -l index.ts
//上面指令执行过程中有错的话,或者执行如下指令
frida wechat.exe -l .\js\index.js
同样,可以在编写代码的同时,自动重新加载和运行代码
视频讲座,请参考《Frida快速入门》