8cba70dc90
- 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.
30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
"""Map the category success notifier already instrumented at 0x18017aa80.
|
|
|
|
The checkpoint hook can passively record ctx+0x88 and the +0x58..+0x60 handler
|
|
vector. Establish where this notifier sits relative to request ownership transfer and
|
|
whether it is the concrete receiver-side publication path we need to observe live.
|
|
"""
|
|
import traceback
|
|
|
|
try:
|
|
target = 0x18017aa80
|
|
print("=== notifier 0x18017aa80 ===")
|
|
print(dec(target))
|
|
print("\n=== notifier callers ===")
|
|
for ent, name in callers(target):
|
|
print(" %#x %s" % (ent, name))
|
|
print(dec(ent))
|
|
print("\n=== notifier xrefs ===")
|
|
for frm, typ, name, ent in xrefs_to(target):
|
|
print(" from=%#x type=%s fn=%s entry=%#x" % (frm, typ, name, ent))
|
|
|
|
# Adjacent category request methods often expose the notifier through a vtable
|
|
# or callback descriptor; inspect nearby functions and data references.
|
|
for a in (0x18017aa80, 0x18017aaf0, 0x18017ab80, 0x18017b1c0):
|
|
f = func(a)
|
|
print("\n=== %#x %s ===" % (a, f.getName() if f else "?"))
|
|
print(dec(a))
|
|
|
|
except Exception:
|
|
traceback.print_exc()
|