Capstone 反汇编引擎问题:OP_Access 抛出 TypeError

逆向工程 拆卸 视窗 动态分析 Python 反汇编者
2021-07-02 08:27:51

安装 Capstone python 模块后,我在Win7x86 PC 上运行了这个示例,并进行了少量编辑(添加了 arch 和 mode)。

但是,当尝试使用时insn.regs_access(),它会抛出一个NoneType不可迭代对象:

enter preformatted text here

  1 from capstone import *
  2
  3 CODE = b"\x8d\x4c\x32\x08\x01\xd8"
  4
  5 md = Cs(CS_ARCH_X86, CS_MODE_32)
  6 md.detail = True
  7
  8 for insn in md.disasm(code, 0x1000):
  9     print("%s\t%s" % (insn.mnemonic, insn.op_str))
 10
 11     (regs_read, regs_write) = insn.regs_access()
 12
 13     if len(regs_read) > 0:
 14         print("\n\tRegisters read:", end="")
 15         for r in regs_read:
 16             print(" %s" %(insn.reg_name(r)))
 17         
 18
 19     if len(regs_write) > 0:
 20         print("\n\tRegisters modified:")
 21         for r in regs_write:
 22             print(" %s" %(insn.reg_name(r)))

但是,我得到以下信息:

X:\blah>python capTest.py
lea    ecx, dword ptr [edx + esi + 8]
Traceback (most recent call last):
  File "capTest.py", line 11, in <module>
   (regs_read, regs_write) = insn.regs_access()
TypeError: 'NoneType' object is not iterable

如何解决这个问题?

1个回答

给 Capstone 团队的成员 Quynh 发了电子邮件。他不仅有帮助!

从 msvc...msvc2012 中的下一个分支编译是一个先决条件。现在工作!

如果您尝试使用 cygwin 构建,您将在 cs_open 中收到错误(由 cs.c 导出)