12 lines
568 B
Python
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}')
|