我正在手动分析 IDA Pro 中的释放后使用错误。基本上,我控制对象的内容(由寄存器指向)并且我想在任意地址强制写入。例如,我可能会找到一个mov [ebx], eax
,在那里我可以同时控制eax
和ebx
。
有没有办法至少部分地自动化这个任务?
这是一个简单的例子。假设我们控制了指向的数据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] 处的值,我们可以执行任意写入。实际上,代码要复杂得多,因此很难跟踪我们控制的内容并找到合适的指令。