Frida安装与简单使用

环境配置

本机的Python版本为Python3
Frida GitHub下载地址
Frida分为2个部分,第一个是位于PC的frida和frida-tools,第二个是位于手机端的frida-server。
位于电脑端的可以通过下面命令安装

pip install frida
pip install frida-tools 

对于Python的环境管理推荐用Anaconda。


手机端需要一个root的手机。然后根据自己的手机架构从Github上下载对应版本的frida-server。

adb shell getprop ro.product.cpu.abi  查看手机架构

列入我的是arm64架构。



下载后进行解压,我把解压后的文件重命名为frida-server。

adb push firda-server /data/local/tmp  将frida-server放到手机的这个目录下
chmod 755 frida-server   赋予可执行权限
./frida-server &  后台运行frida-server
frida --version  电脑端查看安装的frida版本。
./frida-server --version 手机端查看安装的frida版本。

frida要求pc端和手机端的版本需要一致才可以。

简单实践

Demo GitHub地址


运行hookmethod python程序,手机上输入数字参数,点击调用成员方法。输出如下图,可以看出hook成功。

如果出现“frida.ServerNotRunningError: unable to connect to remote frida-server”的错误,试试端口转发:
adb forward tcp:27042 tcp:27042

使用gadget进行hook

在没有root手机的条件下,可以通过在代码中引入gadget.so文件来实现hook。

具体步骤

下载gadget库文件,并放到代码中进行加载

下载地址 注意,尽量下载最新版本,新版本修复了很多bug,避免之后遇到bug浪费我们的时间。将下载的.so.xz文档解压,获得so文件,重命名为libgadget.so,拷贝到项目中.

编写配置文件libgadget.config.so

{
  "interaction": {
    "type": "script",
    "path": "/data/local/tmp/gadget_script.js"
  }
}

interaction代表交互类型

  1. Listen
  2. Connect
  3. Script
  4. ScriptDirectory
    Listen和Connect交互方式需要通过电脑与手机建立连接,然后通过发送脚本命令进行交互。Script交互方式为我们写好脚本,gadget会到指定路径加载运行脚本。path则代表脚本路径

修改代码

image.png

在应用启动时就加载gadget库文件。

编写脚本

将编写好的脚本push到配置文件中写的手机存储目录

'use strict';
console.log("Waiting for Java..");
//将该脚本push到手机中 adb push gadget_script.js  data/local/tmp
setImmediate(function() {
    Java.perform(function () {
        var Log = Java.use("android.util.Log");
        Log.v("Frida", "脚本开始执行!");
        var MainActivity = Java.use("com.demo.fridahook.MainActivity");
        MainActivity.add.implementation = function(a,b){
               Log.v("Frida","MainActivity add方法调用 a="+a+" b="+b);
               return this.add(a,b);
        }
        Log.v("Frida", "脚本执行完!");
    });
});

编译运行

运行app,可以看到hook方法成功


Demo地址

你可能感兴趣的:(Frida安装与简单使用)