如何在 Immunity Debugger PyCommand 中跟踪指令?

逆向工程 Python 调试 免疫调试器
2021-06-29 05:40:55

这听起来像是一件很容易完成的事情,但我似乎无法让它发挥作用。

我想通过指令在 ImmDbg 指令中运行程序的一部分,并跟踪它执行的一些操作(它所采取的跳转,寄存器被修改时等......)。这当然是一个繁琐的手工过程,有时我需要自动化它并根据目标添加一些自定义行为。

我没有在 Python API 中找到跟踪工具,所以我尝试单步调试代码。下面的示例代码应该只执行 10 条指令。

import immlib

imm = immlib.Debugger()

def main(args):
    for i in range(10):
        imm.stepIn()

    return "OK"

然而,它似乎执行的指令有时少于 10 条,并且每次 stepIn() 调用都会使程序冻结大约一秒钟,使脚本变得太慢而无法执行任何有用的操作。

1个回答

如果您只想跟踪指令以创建控制流图 (CFG) 甚至是相当准确的数据流图 (DFG),与我们可用的工具相比,pyCommand 无疑是笨拙的:

平台不可知论者

  • pydbg(蟒蛇)
  • 顶点反汇编(python,添加了污点分析支持)
  • Intel Pintools(C/C++,比以上所有都快)
  • openREIL(高度实验性的)

LINUX

  • perf(已经实现了CFG创建的linux内核模块)
  • valgrind/callgrind(callgrind 负责 CFG 创建)

请注意 python 解决方案比 C/C++ 解决方案慢(但更容易实现)。