fifa17-recon: reconcile authoritative tools with running backend (B)
- Add 8 files present in docker/fifa17-python/tools but missing from the top-level tree: fut_accounts.py + 7 test_*.py contracts (all committed in the server's docker tree; byte-identical to the running image). - Preserve newer responder work already matching the running container: utas_server.py (offlineSeason), lsx_responder_v2.py (OPENFUT_BIND), blaze_responder_v3b.py, autopatch.py, pow_server.py, fut_store.py, test_fut_contract.py, fifa17-hook-m1.sh. - Add 30 newer ghidra_queries (draft purchase/state, SBC 9-26, runtime registries). Local tree is now a strict superset of B with all shared files byte-identical.
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
"""Map the sole live category-notifier listener into CardsDLL.
|
||||
|
||||
Live capture 2026-08-07:
|
||||
listener object 0x4216ca48
|
||||
listener vtable 0x6ffffc20d6d0
|
||||
vtable +0x08 0x6ffffc1e577a
|
||||
CardsDLL slide 0x6ffe7c020000
|
||||
static method 0x1801c577a
|
||||
"""
|
||||
|
||||
TARGET = 0x1801C577A
|
||||
VTABLE = 0x1801ED6D0
|
||||
|
||||
print("=== live notifier listener method ===")
|
||||
target_function = func(TARGET)
|
||||
if target_function is None:
|
||||
print("no Ghidra function at %#x" % TARGET)
|
||||
print("raw PE decoding: jmp [0x1801e5200], imported CRT _purecall")
|
||||
else:
|
||||
print("containing function:", target_function.getName(),
|
||||
hex(int(target_function.getEntryPoint().getOffset())))
|
||||
print(dec(TARGET))
|
||||
|
||||
print("\n=== listener vtable ===")
|
||||
for slot, target, name in vtable(VTABLE, 12):
|
||||
print("%+#04x %#x %s" % (slot, target, name))
|
||||
|
||||
print("\n=== method callers/xrefs ===")
|
||||
print("callers:", callers(TARGET) if target_function is not None else [])
|
||||
for row in xrefs_to(TARGET):
|
||||
print(row)
|
||||
Reference in New Issue
Block a user