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:\Users\asus\Desktop>python2 demo.py
hook start...
[*] 666