Как прикрепить к функции Python с помощью Frida?
Я пытаюсь выяснить, как перехватывать вызовы функций внутри программы на Python с использованием Frida.
Код Python ниже - это программа, в которую нужно погрузиться
# hello.py
from time import sleep
def print_num(i=0):
print(i)
print("print_num address: {print_num}")
i = 0
while i < 10:
i += 1
print_num(i)
sleep(4)
И скрипт хука просто пытается присоединиться к print_num
функция с его адресом, а затем сообщить результат i
каждый раз, когда это было введено.
# hook.py
import frida
import sys
session = frida.attach("THE PID OF THE hello.py")
# replaced with the real print_num address
func_addr = "THE FUNC ADDR OF print_num"
script = session.create_script(
"""
send("start injecting...");
Interceptor.attach(ptr("%s"), {
onEnter: function(args) {
send(args[0].toInt32());
}
});
""" % int(func_addr)
)
def on_message(message, data):
print(message)
script.on('message', on_message)
script.load()
sys.stdin.read()
Результат:
{'type': 'send', 'payload': 'start injecting...'}
Кажется, что hook.py
мог бы правильно адресовать test.py
программа, но не может обратиться к print_num
функция. В противном случае он должен сообщить что-то вроде
{'type': 'send', 'payload': '1'}
{'type': 'send', 'payload': '2'}
{'type': 'send', 'payload': '3'}
{'type': 'send', 'payload': '4'}
...
Так можно ли присоединить к функции python с помощью Frida? Как это сделать?