mov edi, [esi+1Ch]
...
lea eax, [esi+18h]
这样的指令,那么[esi + 1Ch]和[esi + 18h]。您如何看待IDA Pro。
#1 楼
可用的选项之一是在idapython控制台中相应地简单地运行Dword(cpu.esi+0x1c)
或Dword(cpu.esi+0x18)
。#2 楼
看到OP对RE.SE来说是新的,并且从问题本身的外观来看,我将假定OP对逆向工程而言相对较新。如果不是这种情况,我们深表歉意。显示为
[esi+1Ch]
或[esi+18h]
的值是引用指令执行时当前存储在所列寄存器中的值。可执行文件运行并调试它的执行,停止您感兴趣的说明进行调查可能很难计算出那里的价值。显然,与所述寄存器有关的先前指令可以使其更容易或更难。例如,可以将一个特定的立即值分配给寄存器,从而非常容易地追溯到该值。 尽管IDA的调试器可能不是最好的,但您绝对可以将其设置为断点并读取值。作为另一个答案,使用IDAPython可以做到这一点,方法是访问
cpu
对象的寄存器值本身并添加偏移量。然后,如果实际取消了所得地址,则调用Dword
将使您读取内存中当前的值。在汇编的两行中询问的第一个(而不是第二个)取消引用就是这种情况(这是因为lea
指令的方式)。