69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
import frida
|
|
import modules.command
|
|
import modules.files_utils
|
|
import sys
|
|
import time
|
|
|
|
|
|
def on_message(message, data):
|
|
print(message)
|
|
|
|
|
|
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):
|
|
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()
|
|
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.msf.angelmobile"
|
|
# 注入的脚本路径
|
|
script_path = "./hook_conversions.js"
|
|
# script_path = "./r0capture/script.js"
|
|
main(package_name,script_path, is_spawn)
|