IDA IDC 获取指令中的内存引用

逆向工程 艾达 idapro-sdk
2021-06-22 05:00:19

如何获取指令的第一个操作数中引用的内存:

mov     [ebp+__GetProcAddress], eax ; I want to get 0x0133FD48

我想在跟踪代码时这样做,以便知道寄存器。

如果我将鼠标放在第一个参数上,我基本上需要获得相同的地址:

鼠标悬停在第一个移动操作数上

谢谢

1个回答

在该指令上放置一个断点。您可以在断点的条件下使用 IDC。

如果您只想将其记录到控制台,我将使用的代码段是:

Message("__GetProcAddress = %08X\n", Dword(ebp+offset));0

将 offset 替换为__GetProcAddressfrom ebp的值 offset 您可以在函数的顶部看到它,或者如果您右键单击指令中的操作数,您可以看到如果将其从堆栈变量转换为简单的偏移量会是什么样子。看起来[ebp+XXh]XX 是您想要的偏移量。

条件末尾的 0 使断点不会中断,只需运行代码并继续。如果你想打破它,你可以把那个 0 改为 1。