分析释放后使用错误(污点分析?)

逆向工程 艾达 漏洞分析
2021-07-09 08:59:37

我正在手动分析 IDA Pro 中的释放后使用错误。基本上,我控制对象的内容(由寄存器指向)并且我想在任意地址强制写入。例如,我可能会找到一个mov [ebx], eax,在那里我可以同时控制eaxebx

有没有办法至少部分地自动化这个任务?

这是一个简单的例子。假设我们控制了指向的数据ecx,我们有这样的代码:

  mov eax, [ecx]
  test dword ptr [ecx+8], 8
  jz skip
  mov ebx, [ecx+4]
  mov [eax], ebx    <---- arbitrary write
skip:

如您所见,通过仔细选择 [ecx]、[ecx+4] 和 [ecx+8] 处的值,我们可以执行任意写入。实际上,代码要复杂得多,因此很难跟踪我们控制的内容并找到合适的指令。

1个回答

我同意你的看法,因为你需要实现某种污点跟踪,这在静态上很棘手。此外,您需要知道是否有任何约束应用于您的受控值。此外,我们进入符号执行领域(警告,有龙)。

不管怎样,也许这个项目对你有帮助。它甚至在最新版本中集成IDA Pro

祝你好运!