0x01 Frida Hook的基本代码示例
import frida, sys
jscode = """
console.log("hook start...");
send("666");
"""
def message(message, data):
if message["type"] == 'send':
print("[*] {0}".format(message['payload']))
else:
print(message)
process = frida.get_remote_device().attach('com.dlxx.mam.jtgcgk')
script= process.create_script(jscode)
script.on("message", message)
script.load()
sys.stdin.read()
以上代码是Frida hook基于python接口和js接口的基本代码框架:
-
导入frida,sys模块
-
jscode:定义一个变量,用来表示要调用的js代码,可在这里面使用frida定义的js接口,如send()方法
-
def message(message,data):自定义的python函数,作用是将参数输出到控制台。函数中的两个参数是python回调接口需要的。
-
frida.get_remote_device().attach('需要hook的app包名'):获取设备并调用attach方法通过包名指定要附加的app进程。
-
script = process.create_script(jscode):根据jscode里的js代码,创建有一个对象
-
script.on("message", message)、script.load():将jscode里的js代码和自定义的message函数联系在一起,最后通过load来执行js脚本
综上,上述代码的执行过程就是:通过frida.get_remote_device().attach('com.dlxx.mam.jtgcgk')附加上要hook的目标app -->创建一个表示自定义js代码(里面使用的frida接口函数等)的一个对象 --> 将js代码和自定义的python函数联系起来 --> 加载执行js脚本 --> 由于在之前已将自定义message函数与js联系,因此就可以在控制台看到js执行的输出结果。
C:UsersasusDesktop>python2 demo.py
hook start...
[*] 666