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 = "Navi" # 目标包名 package_name = "com.tencent.qqmusic" # 注入的脚本路径 # script_path = "./hook_conversions.js" # script_path = "./r0capture/script.js" # script_path = "url_request.js" script_path = "hook_qqmusic.js" main(package_name,script_path, is_spawn)