概念
frida是一款基于python + javascript的轻量级Hook调试框架。从Java层到Native层的Hook无所不能,是一种动态的插桩工具,可以插入代码到原生App的内存空间中,动态的去监视和修改行为,对逆向分析很有帮助。其操作大致为手机端安装一个server程序,然后把手机端的端口转到PC端,PC端写python脚本进行通信,python脚本中用javascript语言进行Hook 。相对于Xposed而言,它可以灵活修改代码而不用重启设备加载模块。
环境搭建
安装python
从python官网(https://www.python.org/)下载安装包。
推荐安装时候勾选 Add Python xx to PATH 配置到环境变量。
推荐Customize installation,后续选项默认,但可以选择自己喜欢的安装路径。
安装完成后在cmd输入python验证:
为避免python包之间的冲突,推荐配置一下虚拟环境。使用python的 venv 命令即可配置虚拟环境。
python -m venv D:\Python\fridaenv
cmd执行 D:\Python\fridaenv\Scripts\activate 即可进入虚拟环境。
安装frida
安装frida客户端
命令行依次输入下面两条命令:
pip install frida
pip install frida-tools
期间可能遇到有库需要升级、降级、补全,参照提示自行操作一下即可。之后在python中【import frida】,没报错就是frida安装成功了。
或者输入【frida --version】出现版本号即是frida安装成功。
输入【frida-ps --version】出现版本号即是frida-tools安装成功。
安装frida服务端
adb shell查看安卓设备的处理器类型【getprop ro.product.cpu.abi】,这里我的模拟器是x86:
根据cpu版本去 https://github.com/frida/frida/releases 下载相应frida-server:
下载好解压后重命名为【frida-server】push到设备【/data/local/tmp】目录下。然后赋予其777权限。
此时已经是安装完毕了,我们简单测试一下,adb shell启动frida-server:
端口转发【adb forward tcp:27042 tcp:27042】:
使用【frida-ps -U】查看设备上的进程信息,正常输出便是成功了:
使用
frida-tools方式
写一个hook.js文件。
//hook代码放在setImmediate()里
setImmediate(function () {
Java.perform(function () {
var clazz = Java.use("类名");
clazz.方法名.implementation = function (参数1, 参数2, ...参数n) {
console.log("Hook Start...");
return this.方法名(参数1, 参数2, ...参数n); //return交还内容给程序
}
});
});
接着在python环境输入下面命令开始hook:
frida -U 包名 -l hook.js
python接口方式
写一个hook.py文件:
import frida, sys
jscode = """
Java.perform(function(){
var clazz = Java.use("类名");
clazz.方法名.implementation = function(参数1, 参数2, ...参数n)
{
console.log("Hook Start...");
return this.方法名(参数1, 参数2, ...参数n); #return交还内容给程序
}
});
"""
def message(message , data):
if message["type"]=="send":
print("[*] {0}".format(message['payload']))
else:
print(message)
process=frida.get_remote_device().attach('包名')
script=process.create_script(jscode)
script.on("message",message)
script.load()
sys.stdin.read()
为.py文件书写一个脚本hook.bat,运行开始hook。
cmd /k python "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT