This repository has been archived on 2024-09-30. You can view files and clone it, but cannot push or open issues/pull-requests.
hook-frida/main.py

77 lines
2.4 KiB
Python

import frida
import modules.command
import modules.files_utils
import sys
import time
FIRST_WRITE = True # 全局变量,用于跟踪是否是首次写入
def on_message(message, data):
print(message)
# modules.files_utils.write_log(message)
# print(message)
# if message['type'] == 'send':
# print(message['payload'])
def attach_method(is_spawn):
if type(is_spawn) == bool:
if is_spawn:
return True
else:
return False
else:
print(f"is_spawn type error,please check is_spawn type.")
def main(package_name,script_path,is_spawn):
# 从Python发送数据到Frida的JavaScript脚本
print(f"script_path: {script_path}")
js_code = modules.files_utils.read_javascript(script_path)
# print(js_code)
modules.command.start_frida()
# modules.command.clearCache(package_name)
# 连接到USB设备
device = frida.get_usb_device()
print(device)
if attach_method(is_spawn):
pid = device.spawn(package_name)
print(f"进程pid: {pid}")
process = device.attach(pid)
script = process.create_script(js_code)
# script.on("message", on_message)
script.load()
# data_to_send = {'data': 'Hello from Python!'}
# script.post({'type': 'input_data', 'payload': data_to_send})
device.resume(pid) # 加载完脚本后, 恢复进程运行
sys.stdin.read()
else:
# 列出设备上的所有进程
pid = None
processes = device.enumerate_processes()
for process in processes:
if process.name == attach_process_name:
pid = process.pid
print(f"pid: {process.pid},App Name: {process.name}")
# 如果你想附加到一个特定的进程并注入一个脚本:
if pid is not None:
session = device.attach(pid)
script = session.create_script(js_code)
script.on('message', on_message)
script.load()
else:
print(f"get process error")
if __name__ == '__main__':
# 是否以spawn模式运行
is_spawn = True
# 目标进程名
attach_process_name = "百度网盘"
# 目标包名
package_name = "com.baidu.netdisk"
# 注入的脚本路径
# script_path = "scripts/hook_conversions.js"
script_path = "scripts/baidunetdisk.js"
main(package_name,script_path, is_spawn)