frida hook实例

上一篇简单介绍了frida安装,这一章说一下frida的简单调用,直接上代码

使用工具
rps.apk(这是一个石头剪刀布的游戏应用)
mumu模拟器

rps.apk下载链接:https://pan.baidu.com/s/1dlfdrr0dTAJcuAx6M4cLEQ
提取码:6g93

启动./frida-server 服务后,执行如下代码。

python脚本注入方式

import frida, sys

def on_message(message, data):
    if message['type'] == 'send':
        print("[*] {0}".format(message['payload']))
    else:
        print(message)

jscode = """
    Java.perform(function () {
        var MainActivity = Java.use('com.example.seccon2015.rock_paper_scissors.MainActivity');
        MainActivity.onClick.implementation = function (v) {
            send("Hook Start...");

            # 不改变参数v的情况下,直接调用原方法onClick(v),这样不妨碍程序原本的运行
            # 如果想要修改参数,也是在此处直接对v进行修改。
            this.onClick(v);

            # 程序中代码的变量可以随意修改
            this.n.value = 0;
            this.m.value = 2;
            this.cnt.value = 999;

            # 以下两种方式都能打印
            send("Success!")
            console.log("Success!")
        }
    });
    """
process = frida.get_usb_device(1000).attach('com.example.seccon2015.rock_paper_scissors')
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()

使用jadx-gui反编译,可以看到onClick源码如下:
frida hook实例_第1张图片

启动apk,界面上有R,P,S按钮,比如点击R按钮,会出现如下图所以:
frida hook实例_第2张图片

代码会如下图所示:
frida hook实例_第3张图片

到此运行成功。

本章没有过多的介绍hook的理论知识,就是一个简单的入门代码,可以直接运行,感受一下frida如何hook。

有时间再详细的介绍frida+hook的一些常用方法和实例。

你可能感兴趣的:(python,安卓)