#!/usr/bin/env python3 """Dump CardsDLL's 45-row route table from the ON-DISK PE. READ-ONLY, static. The transfer-market analysis locates the table at .rdata 0x18021df80 as {char*, char*} rows. This resolves VA->file offset properly through the PE section table rather than assuming a single .text mapping, then prints every row so we can see whether any route other than `tradePile` could own a trade-pile ITEM list. """ import struct, sys DLL = "/mnt/games/FIFA 17/CardsDLL_Win64_retail.dll" TABLE_VA = 0x18021DF80 MAX_ROWS = 64 pe = open(DLL, "rb").read() e_lfanew = struct.unpack_from(" file offset %s" % (TABLE_VA, hex(base) if base else None)) assert base, "table VA did not resolve" print("\n%-4s %-34s %s" % ("#", "field A", "field B")) rows = 0 for i in range(MAX_ROWS): a_va, b_va = struct.unpack_from("