import re, struct exe = open("HAVOC_NOCD.EXE", "rb").read() rdata = exe[0x067000:] base = 0x067000 print("=== ALL filename/path strings in rdata ===") for m in re.finditer(rb'[A-Za-z0-9][A-Za-z0-9_.\\: ]{3,39}(?=\x00)', rdata): s = m.group().decode('latin1') fo = base + m.start() if '.' in s or chr(0x5c) in s or ':' in s: print(f" 0x{fo:06x}: {s!r}") # Find ALL MessageBoxA / error-display calls in .text print("\n=== MessageBoxA calls in .text ===") # Find MessageBoxA IAT entry msgbox_name = b'MessageBoxA\x00' idx = exe.find(msgbox_name) print(f" MessageBoxA name at: 0x{idx:06x}") # Find all CALL DWORD PTR [mem] (ff 15 xx xx xx xx) in .text 0x000400-0x067000 print("\n=== All CALL [mem] in .text (indirect calls, includes IAT) ===") call_targets = {} for m in re.finditer(b'\xff\x15', exe[0x400:0x067000]): off = 0x400 + m.start() va = struct.unpack_from('