55 lines
2.1 KiB
Python
55 lines
2.1 KiB
Python
"""DIMENSION 3 SEASONS q1.
|
|
HYPOTHESIS: the Seasons refusal is decided in the front-end SCRIPT layer, not in
|
|
CardsDLL. If so, the CardsDLL season loaders make no network call, only read a
|
|
u16 count, and the CompetitionManager mode setters have ZERO in-DLL callers
|
|
(driven from outside). Prove or refute by enumerating callers of the mode setters,
|
|
decompiling the loader chain, and tracing the NOSEASONS event.
|
|
CONTROL: for the "zero callers" claim, a control with KNOWN callers must be in the
|
|
same batch -- I use FUN_180057560 (LoadOfflineSeasons) itself, which per prior work
|
|
is reached from the RPC dispatch, so callers() must be NON-empty for it if the
|
|
mechanism is sound; if callers() returns [] for a function I know is called, the
|
|
query form is broken and no absence claim is valid.
|
|
"""
|
|
import traceback
|
|
try:
|
|
targets = {
|
|
"FUN_180101680 (CompMgr mode set A)": 0x180101680,
|
|
"FUN_1801016c0 (CompMgr mode set B)": 0x1801016c0,
|
|
"FUN_180057560 LoadOfflineSeasons": 0x180057560,
|
|
"FUN_1800576b0 LoadSeasons": 0x1800576b0,
|
|
"FUN_180057230 LoadCurrentOfflineSeason": 0x180057230,
|
|
"FUN_180057330 (NOSEASONS fire?)": 0x180057330,
|
|
}
|
|
for name, a in targets.items():
|
|
print("=" * 70)
|
|
print(name, hex(a))
|
|
try:
|
|
cs = callers(a)
|
|
except Exception as e:
|
|
cs = "ERR %r" % e
|
|
print(" callers:", cs)
|
|
|
|
# NOSEASONS literal
|
|
print("=" * 70)
|
|
print("NOSEASONS literal search")
|
|
for lit in (b"NOSEASONS\x00", b"NOSEASONS"):
|
|
hits = find_all(lit)
|
|
print(" ", lit, "->", [hex(h) for h in hits])
|
|
# xrefs to the reported literal addr
|
|
print(" xrefs to 0x1801f92c0:")
|
|
for x in xrefs_to(0x1801f92c0):
|
|
print(" ", hex(x[0]), x[1], x[2], hex(x[3]))
|
|
|
|
# CompetitionManager singleton
|
|
print("=" * 70)
|
|
print("DAT_1802e6328 (CompetitionManager singleton) xrefs:")
|
|
for x in xrefs_to(0x1802e6328):
|
|
print(" ", hex(x[0]), x[1], x[2], hex(x[3]))
|
|
|
|
sys.stdout.flush()
|
|
os._exit(0)
|
|
except Exception:
|
|
traceback.print_exc()
|
|
sys.stdout.flush()
|
|
os._exit(0)
|