安装python环境
mac 自带不需要安装
安装pip
easy_install pip
安装frida 安装frida-tools
pip install frida
pip install frida-tools
//检测是否安装成功
frida-ps
//能看到系统进程,表示安装成功
下载frida-server
官网下载:https://github.com/frida/frida/releases 对应的版本,
注意:Frida-server的版本必须跟你宿主机的Frida版本一致,比如我宿主机Frida的版本是12.2.28,
getprop ro.product.cpu.abi
armeabi-v7a
Android手机是arm的,那么应该下载:rida-server-12.2.28-android-arm.xz 文件。
推送frida-server到root过的手机
#下载后解压文件,并将文件重命名为: frida-server,然后推送到手机
adb push frida-server /data/local/tmp/
#修改权限并运行frida-server
adb shell
su
cd /data/local/tmp/
chmod 777 frida-server
./frida-server
#如果要启动frida-server作为后台进程、可以使用这个命令./frida-server &
开一个终端,使用frida-ps -U命令检查Frida是否正常运行,如果正常运行则会列出Android设备上当前正在运行的进程
开始Hook
利用命令行工具hook libc.so的open()函数
frida 这个命令行工具,可以通过frida -help 查看
“-U” 参数代表我们连接的是远程USB server,同理你也可以使用其他参数来连接,
"-f " 参数则表示在手机端启动一个你指定的android程序,那个FILE则表示应用的包名,
“-f” 通常这个参数配合 --no-pause 参数来使用,因为可能不让进程恢复的话可能会有奇怪的问题,
“-p” 与**“-n”**命令分别表示attach到进程的名字或者pid,
“-l” 参数则是代表需要注入的javascript脚本,而这个javascript的脚本就是我们所写的hook代码,完成函数的hook,内存的dump等一系列功能,
当我们使用frida这个命令行工具成功attach到目标进程的时候,frida会给我们返回一个Frida CLI,说明白点就是一个交互窗口,下面我们就能看到
test.js
setImmediate(function() {
Interceptor.attach(Module.findExportByName("libc.so" , "open"), {
onEnter: function(args) {
log("open() called!")
},
onLeave:function(retval){