Frida 是一款针对移动应用的动态分析工具。它允许开发人员、安全研究人员和逆向工程师在运行中的应用程序中进行动态修改和调试。Frida 提供了一种简单而强大的方式来理解应用程序的内部工作原理,并帮助用户对其进行修改和扩展。
使用 Frida,您可以在运行的移动应用中注入 JavaScript 或本机代码以执行各种任务,例如监视函数调用、修改函数返回值、拦截网络请求、绕过应用程序的安全检查、动态修改应用程序的行为等等。Frida 可以在多种操作系统上使用,例如 Android、iOS、Windows、macOS 和 Linux。
1.安装Frida模块,pip install frida
2.安装frida-tools模块,pip install frida-tools
3.下载运行在目标机上的frida-server端,官网地址:Releases · frida/frida · GitHub
注意在模拟器上运行下载的是X86版本,电脑是64位的,下了X86_64版本运行一直报错,可能跟模拟器有关
使用模拟器测试的原因是真机root比较麻烦
附上模拟器中查看的芯片信息
4.将下载好的服务器文件解压,通过命令adb push到模拟器/data/local/tmp/路径下
修改文件权限并运行,非Root机器无法运行
可以看到已经启动运行
5.下载使用的雷电模拟器,一定要打开root模式
模拟器上安装需要测试的应用
模拟器设置
6.python测试脚本
AppFuncs是一个单例模式的类
com.chenke.AndroidCore是这个类的package
Frida测试是应用的进程名,使用命令frida-ps -U可以查看确认
import frida #导入frida模块
import sys #导入sys模块
jscode = """
Java.perform(function(){
var AppFuncs = Java.use('com.chenke.AndroidCore.AppFuncs');
var instance = AppFuncs.getInstance();
instance.testFrida.implementation = function() {
send('Statr! Hook!');
return 'Change String!';
};
});
"""
def on_message(message,data): #js中执行send函数后要回调的函数
print(message)
process = frida.get_remote_device().attach('Frida测试') #得到设备并劫持进程com.example.testfrida(该开始用get_usb_device函数用来获取设备,但是一直报错找不到设备,改用get_remote_device函数即可解决这个问题)
script = process.create_script(jscode) #创建js脚本
script.on('message',on_message) #加载回调函数,也就是js中执行send函数规定要执行的python函数
script.load() #加载脚本
sys.stdin.read()
7.运行测试脚本