import r2pipe, sys, io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') r2 = r2pipe.open("Z:/Development/devl/Havoc/HAVOC_NOCD.EXE", ["-e", "bin.relocs.apply=true"]) print("=== 0x464DF1 (heap init / VirtualAlloc path) - full function ===") print(r2.cmd("pdr @ 0x464df1")) print("\n=== 0x464E77 (alloc helper - called when free list empty) ===") print(r2.cmd("pdr @ 0x464e77")) print("\n=== 0x4633D1 (real allocator impl) ===") print(r2.cmd("pdr @ 0x4633d1")) print("\n=== What calls 0x464DF1? ===") print(r2.cmd("axt @ 0x464df1")) print("\n=== What calls 0x464E77? ===") print(r2.cmd("axt @ 0x464e77")) # Also: data layout around 0x480960 print("\n=== Data at 0x480960 (heap struct) ===") print(r2.cmd("pxw 32 @ 0x480960")) r2.quit()