Frida是逆向工程常用的Hook工具,是一款非常方便且易用的跨平台工具包。Frida分客户端环境和服务端环境,客户端即控制端,而服务端则是被控制端。

Frida Hook

Frida是逆向工程常用的Hook工具,是一款非常方便且易用的跨平台工具包。Frida分客户端环境和服务端环境,客户端即控制端,而服务端则是被控制端。

客户端可以编写Python代码来连接服务端,注入脚本到服务端。在服务端可以编写Javascript代码注入到目标进程进行Hook操作。

本文指导新手如何使用Frida

一、Frida安装

  1. 安装
    sudo pip3 uninstall frida
    sudo pip3 uninstall frida-tools
    
  2. 安装完查看版本
    frida --version
    
  3. 下载安装包
  • 对应的Frida 客户端包
  • 下载对应的Frida 服务端安卓包
  • .xz为压缩文件,需要进行解压
  • 版本号必须保持一致,否则无法兼容
  1. 推送到手机系统目录,手机必须Root
    adb push ./frida-server-15.1.17-android-arm64.xz /data/local/tmp/
    
  2. 授予权限
    adb shell
    su
    chmod 777 /data/local/tmp/frida-server-15.1.17-android-arm64
    
  3. 关闭系统SELinux 在打开服务端之前,需要先关闭SELinux setenforce 0 之后,运行getenforce命令,如果打印“Permissive”,说明关闭成功
  4. 运行服务
    su
    ./data/local/tmp/frida-server-15.1.17-android-arm64
    

二、查看目标APP进程

查询所有进程ID frida-ps -U 可以添加grep 应用名找到目标进程id

三、注入Hook脚本

参考 https://www.cnblogs.com/luoyesiqiu/p/10718997.html

frida -U -l myhook.js [进程ID]

参数解释:

  • -U 指定对USB设备操作
  • -l 指定加载一个Javascript脚本
  • 最后指定一个进程名,如果想指定进程pid,用-p选项。正在运行的进程可以用frida-ps -U命令查看 这种注入脚本的方法,常用于hook在App就启动期就执行的函数。 frida运行过程中,执行%resume重新注入,执行%reload来重新加载脚本;执行exit结束脚本注入

hook目标方法,打印它的返回值:

if(Java.available) {
    Java.perform(function() {
        // 获取目标类
        var targetClass = Java.use('d10');
    
        // Hook 目标方法
        targetClass.Wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww.implementation = function() {
            // 调用原始方法并获取返回值
            var returnValue = this.Wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww.apply(this, arguments);
            // 打印返回值
            console.log('xxxxxxxx  Return value: ' + returnValue);
            // 返回原始返回值
            return returnValue;
        };
    });
}

注意:defpackage下的类不需要写包路径,直接写类名即可

Frida-dexDump脱壳

参考:https://blog.csdn.net/qq_37888591/article/details/124963201

  1. Windows环境安装Frida-Dexdump
    pip3 install Frida-Dexdump
    
  2. 模拟器或者Root手机安装frida-sever

    进入模拟器或者手机放置frida-sever的目录

     cd /data/local/tmp
    

    查看

     ls
     ./frida-server-15.1.22-android-x86
    
  3. 可能有权限问题,可以先给权限 755
    adb shell chmod 755 /data/local/tmp/frida-server
    
  4. 然后新开一个cmd窗口,执行:
    frida-dexdump -FU
    

    会在frida-dexdump安装目录下输出模拟器当前运行的APP的dex文件,

查看frida-dexdump安装目录:

F:\YY>where frida-dexdump
E:\Program Files\python36\Scripts\frida-dexdump.exe

部分脱壳命令:

  • 指定App的应用名称:frida-dexdump -U -n 一点资讯
  • 指定App的应用进程ID:frida-dexdump -U -p 3302
  • 指定App的应用包名:frida-dexdump -U -f com.hipu.yidian