上一篇简单介绍了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源码如下:
启动apk,界面上有R,P,S按钮,比如点击R按钮,会出现如下图所以:
到此运行成功。
本章没有过多的介绍hook的理论知识,就是一个简单的入门代码,可以直接运行,感受一下frida如何hook。
有时间再详细的介绍frida+hook的一些常用方法和实例。