#!/usr/bin/env python3
"""极简Frida方法名测试 - 只加载小脚本"""
import frida, time, json, sys

print("[1] Connecting to 192.168.0.12:27042...")
d = frida.get_device_manager().add_remote_device("192.168.0.12:27042")
print(f"[2] Device: {d.name}")
print("[3] Attaching to PID 7239...")
s = d.attach(7239)
print("[4] Creating mini script...")

# 极简脚本
MINI = """
'use strict';
rpc.exports = {
    ping: function() { return "pong_mini"; },
    getInfo: function() { return {pid: Process.id, arch: Process.arch}; },
    camelCaseTest: function() { return "camel_works"; },
    snake_case_test: function() { return "snake_works"; },
};
"""

sc = s.create_script(MINI)
sc.on("message", lambda m, d: None)
sc.load()
time.sleep(1)
print("[5] Script loaded!")

e = sc.exports_sync
methods = [x for x in dir(e) if not x.startswith("_")]
print(f"[6] Available methods: {methods}")

# 测试每个方法
for name in methods:
    fn = getattr(e, name)
    try:
        r = fn()
        print(f"  {name}() -> {r}")
    except Exception as ex:
        print(f"  {name}() -> ERROR: {ex}")

sc.unload()
s.detach()
print("\n[DONE]")
