初识Frida框架
初识Frida框架
Frida是一款基于Python + JavaScript 的hook框架,本质是一种动态插桩技术。可以用于Android、Windows、iOS等各大平台,其执行脚本基于Python或者Node.js写成,而注入代码用JavaScript写成。相比于Xposed更加便捷,环境安装简单,使用方便。
Frida安装
1、安装Python(这里不做介绍)。
2、安装frida、frida-tools(两个版本必须一致,我这里都为15.1.2)
pip install pipfrida
pip install frida-tools
安装之后可以检查版本是否一致。
2、连接模拟器,安装frida-server。
frida-server下载链接,找到对应的版本,手机是arm64,模拟器是x86,下载之后解压,将文件改名为fs。
连接模拟器,adb devices 显示不到打开的模拟器时手动连接。如下:
夜神模拟器:adb connect 127.0.0.1:62001
逍遥安卓模拟器:adb connect 127.0.0.1:21503
天天模拟器:adb connect 127.0.0.1:6555
海马玩模拟器:adb connect 127.0.0.1:53001
网易MUMU模拟器:adb connect 127.0.0.1:7555 MacOS:adb connect 127.0.0.1:5555
genymotion模拟器:adb connect 127.0.0.1:5555
谷歌原生模拟器:adb connect <设备的IP地址>:5555
连接之后进行如下操作:
1、adb push fs文件所在地址/fa /data/local/tmp
2、adb shell
3、su
4、cd /data/local/tmp
5、chmod 777 fs
6、./fs
(如果此时光标在下一行闪,说明frida运行成功)
3、、验证是否安装成功
不要关闭此页面,另外打开一个cmd窗口,执行以下指令:frida-ps -U,如果该模拟器中运行的所有进程都显示出来,说明frida安装成功。
Frida初体验
frida框架最大的优势就是操作简单,相比于Xposed来说不需要另生成一个项目来运行,只需要编写一个插件直接再命令框执行即可。Frida的编写可以用js、python、js+python三种方法来写。初学者建议使用js+python方式来写,只需要编写相应的js代码,python文件基本固定。
在使用插件进行hook时,首先应该转发端口。具体操作如下:
脚本样例:
import frida
import sys
def on_message(message,data):
print(message)
jscode = """
Java.perform(function(){
var MainActivity=Java.use('com.example.frida_new1.MainActivity');
MainActivity.getCale.implementation=function(){
send('Hook start....');
return 'hook成功!!!'
}
});
"""
process = frida.get_remote_device().attach('Frida_new1')//这里踩了很多坑,attach里面抓包并不是完整包名,而是文件名
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()
这里有两种方法运行该插件:
1、打开python所在的目录,打开cmd页面执行
python test.py
2、在NotePad++等高级记事本中,直接运行。建议将如下命令保存以便后面可以直接使用该文件运行。
cmd /k python "D:\Desktop\test.py" & ECHO & PAUSE & EXIT//双引号中表示脚本的路径
运行之后点击按钮(这里hook 的是Button事件的显示方法)
Hook 成功。