一、安装模块
pip install frida # 安装很慢20分钟
pip install frida-tools
二、安装frida-server
放在手机上执行 要注意手机CPU型号
下载链接:https://github.com/frida/frida/releases/tag/14.0.8
下载好后使用adb工具导入手机指定目录下/data/local/tmp/
adb push frida-server-14.0.7-android-arm64 /data/local/tmp/
D:\工具\安卓反编译\platform-tools>adb shell
shell@le_x6:/ $ su 获取root权限
root@le_x6:/ # cd data/local/tmp/
root@le_x6:/ #chmod 777 frida-server-12.6.8-android-x86 修改权限可读可写可执行
./frida-server-12.6.8-android-x86 运行
这里我使用的真机乐视2 并且有root权限,使用奇兔
刷的
注意:在启用frida-server之前要设置端口转发(命令行模式下)
D:\工具\安卓反编译\platform-tools> adb forward tcp:27043 tcp:27043
27043
D:\工具\安卓反编译\platform-tools> adb forward tcp:27042 tcp:27042
27042
检查端口占用情况
Microsoft Windows [版本 10.0.18362.1139]
(c) 2019 Microsoft Corporation。保留所有权利。
C:\Users\v_mcsong>netstat -ano|findstr "27042"
TCP 127.0.0.1:27042 0.0.0.0:0 LISTENING 10148
C:\Users\v_mcsong>taskkill -F -PID 10148
成功: 已终止 PID 为 10148 的进程。
在命令行测试frida-server
是否运行成功
D:\工具\安卓反编译\platform-tools>frida-ps -U
三、简单测试使用frida框架打印app版本和加载的所有类
编写python代码
import frida #导入frida模块
import sys #导入sys模块
jscode = """
Java.perform(function(){
// 获取当前安卓设备的安卓版本
var v = Java.androidVersion;
send("version:"+v);
// 获取该应用加载的所有类
var classnames = Java.enumerateLoadedClassesSync();
for (var i=0;i<classnames.length;i++){
send("class name:"+classnames[i])
}
});
"""
def on_message(message,data): #js中执行send函数后要回调的函数
if message["type"] == "send":
print("[*] {0}".format(message["payload"]))
else:
print(message)
process = frida.get_usb_device().attach('com.iCitySuzhou.suzhou001') # app包名
script = process.create_script(jscode) #创建js脚本
script.on('message',on_message) #加载回调函数,也就是js中执行send函数规定要执行的python函数
script.load() #加载脚本
sys.stdin.read()
基础开发固定模式:
注意:
- 确定端口做了转发
- 确保frida-server运行着
- 运行脚本之前要先将app在终端上运行起来
更多api参考官网:https://www.frida.re/docs/javascript-api
本文含有隐藏内容,请 开通VIP 后查看