Capstone disassembly/disassembler framework: Core (Arm, Arm64, BPF, EVM, M68K, M680X, MOS65xx, Mips, PPC, RISCV, Sparc, SystemZ, TMS320C64x, Web Assembly, X86, X86_64, XCore) + bindings.
(bloaty 依赖)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#!/usr/bin/env python
|
|
|
|
# Capstone Python bindings, by Nguyen Anh Quynnh <aquynh@gmail.com>
|
|
|
|
|
|
|
|
from __future__ import print_function
|
|
|
|
import sys
|
|
|
|
_python3 = sys.version_info.major == 3
|
|
|
|
|
|
|
|
|
|
|
|
def to_hex(s):
|
|
|
|
if _python3:
|
|
|
|
return " ".join("0x{0:02x}".format(c) for c in s) # <-- Python 3 is OK
|
|
|
|
else:
|
|
|
|
return " ".join("0x{0:02x}".format(ord(c)) for c in s)
|
|
|
|
|
|
|
|
def to_hex2(s):
|
|
|
|
if _python3:
|
|
|
|
r = "".join("{0:02x}".format(c) for c in s) # <-- Python 3 is OK
|
|
|
|
else:
|
|
|
|
r = "".join("{0:02x}".format(ord(c)) for c in s)
|
|
|
|
while r[0] == '0': r = r[1:]
|
|
|
|
return r
|
|
|
|
|
|
|
|
def to_x(s):
|
|
|
|
from struct import pack
|
|
|
|
if not s: return '0'
|
|
|
|
x = pack(">q", s)
|
|
|
|
while x[0] in ('\0', 0): x = x[1:]
|
|
|
|
return to_hex2(x)
|
|
|
|
|
|
|
|
def to_x_32(s):
|
|
|
|
from struct import pack
|
|
|
|
if not s: return '0'
|
|
|
|
x = pack(">i", s)
|
|
|
|
while x[0] in ('\0', 0): x = x[1:]
|
|
|
|
return to_hex2(x)
|