安装
参考
frida的安装需要在windows安装frida客户端和在安卓安装frida服务端。
windows安装客户端
安装frida
pip3 install frida
安装frida-tools
pip3 install frida-tools
查看是否安装成功
frida --version
> 14.1.2
手机端安装服务端
首先adb连接上手机, 查看手机的cpu
getprop ro.product.cpu.abi
> x86
然后根据型号 去github官方frida/releases](https://github.com/frida/frida/releases) 去下载对应的frida-server-XXX-XXX-XXX.xz, 注意第一个XXX为版本号, 和上面安装的服务器保持一致, 第二个XXX为设备类型, , 第三个XXX为cpu型号
不了解手机cpu型号的参考: Android 设备的CPU类
由于我们的客户端版本为14.1.2, 我们下载了frida-server-14.1.2-android-x86, 下载后解压
# 上传到手机中
adb push frida-server-14.1.2-android-x86 /data/local/tmp/
另开一个窗口,去操作运行
# 进入到手机shell
adb shell
# 重命名为 frida-server,方便后续运行
cd /data/local/tmp
mv frida-server-14.1.2-android-x86 frida-server
# 开启权限
chmod 777 frida-server
# 运行
./frida-server
手上的魅蓝note2, 不知道为啥一运行frida-server , 手机就重启, 只能使用模拟器去测试
夜神模拟器:
安卓5.1.17.0 , frida正常运行(5.1.1虽然上面看起来没问题, 但是到下面hook的时候就出现问题了, 一直在报timeout的错误)
判断frida是否正常运行
frida-ps -U
这个命令就能看到手机上的进程列表
入门案例
参考
hook java方法
1. 安装apk
安装上面参考中大神的fridajava.apk
2. 按照上面启动frida-server
新安装的app, 需要frida重启,否者获取不到
3. 添加端口映射
这样本地frida就能和手机上的frida-server进行通信
adb forward tcp:27043 tcp:27043
adb forward tcp:27042 tcp:27042
4. 编写hook脚本
import frida
import sys
jscode = """
Java.perform(function(){
var MainActivity = Java.use('com.example.testfrida.MainActivity');
MainActivity.testFrida.implementation = function(){
send('Statr! Hook!');
return 'Change String!'
}
});
"""
def printMessage(message,data):
if message['type'] == 'send':
print('[*] {0}'.format(message['payload']))
else:
print(message)
process = frida.get_remote_device().attach('com.example.testfrida')
script = process.create_script(jscode)
script.on('message',printMessage)
script.load()
sys.stdin.read()
5. 运行
python fridajava.py