Frida开发环境搭建记录开发环境搭建记录
Frida在安装时容易出现网络状况,两个小建议
使用镜像源,不要用豆瓣源
先pip install frida-tools –user,因为tools会一并尝试安装frida
Frida在环境搭建中会遇到各种问题
一、一、Frida版本问题版本问题
由于frida版本更新极快,不断修复bug,不断增加新特性,因此建议使用较新版本的server,较新版本的frida,较新版本的frida-tools。
手机上的server版本和电脑上的frida版本不一致也没关系,可以正常运行,但尽量一致。
在必要的时候使用pyenv,virtualenv等版本管理工具。即每个项目给予单独的Frida版本和环境,这样可以避免许多烦恼。比如Objection的最新版就因为相关原因不支持frida-tools的
最新版,因此如果没有使用注入Pyenv一类的版本管理工具,就只能Objection/Frida-tools二选一版本降级。
二、编写二、编写Frida脚本相关问题脚本相关问题
Frida编写脚本时无智能提示,这个真的很烦,严重影响开发体验,我们可以通过Frida官方提供的方案解决。首先需要电脑上有nodejs以及npm环境,新版的nodejs似乎自带npm,如
果不在环境变量里就加上去,如图方式检测是否配置好环境。
需要注意的是,由于国内的网络状况,后续install很容易失败,这里建议使用阿里的cnpm镜像。
命令行输入如下,安装好了就可以使用cnpm install xxx来替代npm install进行js依赖的下载了。
> npm install -g cnpm --registry=https://registry.npm.taobao.org
其次需要一个智能IDE,建议Webstorm,Jetbrain家的东西总是好用的。我们需要clone或者下载这个项目,在Webstorm中打开这个文件夹,terminal里cnpm install。(不用Webstorm
的朋友可以直接在命令行终端里cd到相应文件夹)
一切就绪,在agent目录下编写的javascript/typescript代码就将拥有Frida相关api的智能提示。你可以以如下代码进行测试。
function frida_Java() {
Java.perform(function () {
//作为判断用
if(Java.available)
{
//注入的逻辑代码
console.log("hello java vm");
}else{
//未能正常加载JAVA VM
console.log("error");
}
});
}
setImmediate(frida_Java,0);
除此之外,它可以帮我们做更多的事。
agent目录中新建一个文件夹test,编写test1.js内容如下
var a = "测试var定义变量";
console.log(a);
const b = "测试const定义变量";
console.log(b);
let c = "测试let定义变量";
console.log(c);
根据ES6规范,Js中定义变量的方法由单一的 var 方式发展到了 var、let、const 三种之多。我们在Webstorm中测试一下。