本帖最后由 spcspcspcspcspc 于 2022-2-28 12:05 编辑
最近想学下FrIDA,看教程挺简单,就动手试试,结果三步一个坑,坑坑要狗命!
主要参考 windy_ll 大神的《frida入门总结》
小白避坑原则第一条:所有软件一定从官网下载原版!!!(其中的心酸就不细说了。。。)
1.Python+Frida安装
按照原帖第1步下载安装,没有问题。继续安装frida。
开始-运行-cmd,输入命令pip install frida 然后“ Running setup.py install for frida ...”这里就卡住了,卡了半小时还不动。。。
解决办法:手动安装frida,官方下载地址:https://pypi.org/project/frida/#files,下载最新的frida-15.1.17.tar.gz,解压得到frida-15.1.17.tar,再解压得到frida-15.1.17文件夹,进入文件夹,地址栏输入cmd回车,输入命令“python setup.py install”。提示“ please download it manually to C:\Users\Administrator/frida-15.1.17-py3.10-win-amd64.egg”。(网速好也可能自动下载,省略后面步骤)
根据提示回刚才的网页下载frida-15.1.17-py3.10-win-amd64.egg,放到“C:\Users\Administrator”。命令行中再输入命令“python setup.py install”,安装完成没有问题。
2.安装frida-tools
(原帖第3步),命令行输入“pip install frida-tools”,自动完成。网速慢的话可以开5到6个cmd同时运行。
3.安装frida-sever到雷电模拟器
打开雷电模拟器,下载adb调试工具(也可以到雷电模拟器安装目录里),地址栏输入cmd回车,
输入命令“adb.exe kill-server”(连不上的时候就运行该命令,很好用。),
再输入命令“adb.exe devices”就可以看到5554的设备。(雷电模拟器是自动连接的,其他模拟器要用类似“adb connect 127.0.0.1:5555”的命令连接)
继续输入命令“adb shell”,“getprop ro.product.cpu.abi”,“exit”。显示X86。
按照原帖第4步,但是下载的是‘frida-server-15.1.17-android-x86.xz’,解压出最里面的‘frida-server-15.1.17-android-x86’文件放到adb.exe所在文件夹,地址栏输入cmd回车,输入命令“adb push frida-server-15.1.17-android-x86 /data/local/tmp”等一会就完成了。继续输入命令“adb shell”,“su”,“cd /data/local/tmp”,“chmod 777 frida-server-15.1.17-android-x86”,“./frida-server-15.1.17-android-x86”,然后没有反应了。。。
不要关闭这个窗口,另开个cmd,继续原帖第6步。(“frida-ps -U”列举出来设备上的所有进程“frida-ps -Ua”列举出来设备上的所有应用程序)
4.调试HOOK
下载原帖中的附件,我们用fridajava.apk和fridajava.py来测试,模拟器中安装fridajava.apk并打开。
5.安装PyCharm
PyCharm是主流的python编辑器了,官方地址:https://www.jetbrains.com/pycharm/download/#section=windows ,下载右边的Community版本。安装运行都很顺利。
汉化方法:点击file-settings-plugins,中上位置搜索框chinese,找到chinese(simplified)的那个安装重启。
把附件的‘fridajava.py’代码贴到PyCharm中运行,显示未找到'frida'模块。。。
解决方法:放弃python,没错从入门到放弃就是这么迅速。。。因为折腾半天还是各种错误,Python实在搞不定。卸载删除PyCharm。
6.继续调试HOOK
Frida既然是python + java的框架,能不能绕过Python直接用java呢?当然是可以的。参照<逆向分析某视频app>https://www.52pojie.cn/thread-1566183-1-1.html帖子中的一段代码“frida -U -n com.yensbcyabet.cmsnaygeste:plugin -l 1.js --no-pause”。根据fridajava.py中代码改成下列Java代码,保存为'1.js'.
[Java] 纯文本查看 复制代码
Java.perform(function () {
var MainActivity = Java.use('com.example.testfrida.MainActivity');
MainActivity.testFrida.implementation = function () {
console.log('Statr! Hook!');
return 'Change String!'
};
});
'1.js'所在目录地址栏输入CMD,回车,输入命令“frida -U -n com.example.testfrida -l 1.js --no-pause”显示错误‘unable to find process with name 'com.example.testfrida'’,
百度到一个办法可以用PID来替代名字执行代码,执行命令”frida-ps -Ua“看到testfrida的PID为2503,执行命令“frida -U -p 2503 -l 1.js --no-pause”,雷电模拟器里点击按钮,确实HOOK成功了。
但是用PID的话每次打开都不一样,需要修改。
还有一种方法使用命令“frida -U -f com.example.testfrida --no-pause”,“%exec 1.js”先找到进程再执行脚本,也成功了,而且不用改命令。
经历各种错误和失败,总算是运行Frida且HOOK成功了。
希望此贴能对初学者有点用处。
关于上面的各种坑希望大神给解答下。
后续填坑:
Python+Frida+雷电模拟器 新手入坑记录2 |