lea 指令#
LEA 即LOAD EFFECTIVE ADDRESS:“LEA A, B”
指令将 B 的地址传递给 A。
该指令不会获取 B 存储的内容,只会传递地址或者后一个操作数的运算结果 (外加中括号),这种方法普遍运用于获取变量参数的地址。
函数参数与局部变量#
IDA 发现的函数在调用前一般需要传递参数,大部分是通过 PUSH 指令 (仅指 32 位) 。
函数参数
传参
LEA 指令尽管使用了中括号,但它只计算中括号中的表达式然后传递地址而不读取其中的内容。
LEA 的其他作用#
LEA 也可以用于将中括号中的运算结果传递到目标寄存器,而不会读取结果地址上存储的内容。例如:LEA EAX,[4+5]
指令将运算结果 9 传给 EAX,而不会像MOV EAX,[4+5]
指令那样将地址0x9
上存储的内容传给 EAX。
LEA 获取变量地址,MOV 获取变量地址上存储的值 (OFFSET 除外) 。