wip: checkpoint FIFA 17 SBC research for Windows migration
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
"""DIMENSION 1 Q1: enumerate the userInfo.feature restriction vocabulary IN FULL.
|
||||
|
||||
Hypothesis: FUN_18013ec10 (userInfo deser) handles atom 0x11c (feature) by entering a
|
||||
nested object-parse loop that dispatches sub-keys (trade=0x330 known) each writing a byte
|
||||
into the userInfo record. Enumerate EVERY sub-key and the offset each writes.
|
||||
|
||||
CONTROL: the known trade atom 0x330 MUST appear and map to +0x17c. If it does not, the
|
||||
dispatch form assumed is wrong and the enumeration below is unreliable.
|
||||
|
||||
Method: print full decompile length + full text of FUN_18013ec10, then scan for the
|
||||
feature atom 0x11c and identify the nested parser (a callee entered at that case), then
|
||||
decompile that callee in full too.
|
||||
"""
|
||||
import re, traceback
|
||||
|
||||
UI_DESER = 0x18013ec10
|
||||
|
||||
try:
|
||||
f = func(UI_DESER)
|
||||
src = dec(UI_DESER, 300)
|
||||
print("=== FUN_%08x body=%d insns decompile=%d chars ===" %
|
||||
(UI_DESER, f.getBody().getNumAddresses() if f else -1, len(src)))
|
||||
print(src)
|
||||
|
||||
print("\n=== callees of FUN_%08x ===" % UI_DESER)
|
||||
for a, n in callees(UI_DESER):
|
||||
print(" %#x %s" % (a, n))
|
||||
|
||||
# where does 0x11c (feature) / 0x330 (trade) appear textually?
|
||||
print("\n=== atom mentions in the decompile ===")
|
||||
for atom, name in ((0x11c, "feature"), (0x330, "trade"), (0x17c, "off+0x17c"),
|
||||
(0x50, "off+0x50")):
|
||||
for ln in src.splitlines():
|
||||
if ("0x%x" % atom) in ln.replace("0X", "0x"):
|
||||
print(" [%-10s] %s" % (name, ln.strip()))
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
Reference in New Issue
Block a user