1
我是逆向工程的新手,当我遇到LEA
指令时,我有时会感到困惑。 我想知道如何知道如果lea指令是一个数组或引用指针。 很多人说LEA
指令作为参考指令使用Olly或IDA进行拆卸
例如:lea ecx, [eax]
在C++ --meaning像 “INT A = & B”;
有的人说,它是用来将寄存器的内容加载到另一个寄存器
如:lea ecx, [eax]
--meaning被加载到ECX [EAX]的内容;
但我选择第一个选项。但是,在很迷茫的当升看到奥利是这样的:
lea ecx, dword ptr ss:[ecx+eax*2]
或
lea ecx, dword ptr ds:[ecx+eax*2]
等。
请详细解释这些指令的含义,以便知道它何时代表C++中的引用指针或数组,甚至是如何知道olly或IDA中的两者(数组和指针指针)。 我升级提前。 谢谢。
'lea'不执行取消引用,'mov'。 –
@IgorSkochinsky你说得很好。我错了。我不确定'lea ecx,[eax]'是什么意思,而不是使用'mov ecx,eax'。 – rjp
'lea ecx,[eax]'是毫无意义的。但'ecx,dword ptr ss:[ecx + eax * 2]'只是更快的数学运算(不必从存储器位置读取额外的操作数) –