使用Frida hook 获取native层代码的返回值

  • Post author:
  • Post category:其他



一定要注意环境,最高版本的python解释器可能会引起进程崩溃,无法挂载

使用的环境:wim10 ,python3.6, frida-server-14.1.3-android-x86,雷电模拟器

  1. 在电脑上安装firde

    • 使用命令pip install firda==14.1.3 进行安装
    • 使用命令pip install frida-tools==9.0.0 进行安装(防止后面测试firda出现 firda-ps不是内部或外部命令)
  2. 下载frida-server

    • 根据使用的设备(手机或模拟器)去下载对应的frida-server(https://github.com/frida/frida/releases)

      我是用的是雷电模拟器,使用的是frida-server-14.1.3-android-x86
  3. 将frida-server推送到设备上

    • 打开设备并检测设备 adb devices
    • 将frida-server推送到设备上命令adb push frida-server-14.1.3-android-x86 /data/local/tmp/frida-server
    • 进入设备终端 adb shell(模拟器进入自动默认是root用户,手机需要手动切换,#代表root用户)
    • 赋予权限 chmod 777 /data/local/tmp/frida-server
  4. 测试

    • 在设备上执行./frida-serve
    • 在pc端执行frida-ps -U 查看信息,有进程则代表配置正常
  5. 使用

1.	编写js代码
setImmediate(function () {
    Java.perform(function () {
        # 包的路径在代码的第一行, package后面的信息
        var utils = Java.use("包的路径.class名");
        # Func指你的方法名
        utils.Func.implementation = function () {
            var retval = this.Func(0);
            # 同指方法名, 传参数参数可以带参数, 没有可删掉
            console.log(retval);
            return retval
        }
    });
});

2.	在pc端进行端口转发adb forward tcp:27042 tcp:27042
3.	在pc执行挂在命令frida -U --no-pause -f apk的包名 -l a.js

正常情况:
	 ____
                / _  |   Frida 14.1.3 - A world-class dynamic instrumentation toolkit
               | (_| |
                > _  |   Commands:
               /_/ |_|       help      -> Displays the help system
               . . . .       object?   -> Display information about 'object'
               . . . .       exit/quit -> Exit
               . . . .
               . . . .   More info at https://www.frida.re/docs/home/
            Spawned `xx.xx.xx`. Resuming main thread!

 4.在设备上进行操作,触发方法



版权声明:本文为weixin_45008664原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。