Files

12 lines
568 B
Python

#!/usr/bin/env python3
"""Quick disassembler for groove.exe: disx86.py VA [bytes] (VA hex, .text: file = VA-0x400000)"""
import os
import sys
from capstone import Cs, CS_ARCH_X86, CS_MODE_32
EXE = os.environ.get('GROOVE_EXE', os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 're', 'groove.exe'))
d = open(EXE, 'rb').read()
va = int(sys.argv[1], 16); n = int(sys.argv[2], 0) if len(sys.argv) > 2 else 0x400
md = Cs(CS_ARCH_X86, CS_MODE_32)
for i in md.disasm(d[va - 0x400000:va - 0x400000 + n], va):
print(f'{i.address:08x} {i.mnemonic} {i.op_str}')