在逆向分析代码的过程中,最常用的指令是MOV指令和LEA指令。这两个指令都是赋值指令。
LEA指令:取有效地址指令 (Load Effective Address )。
指令格式:LEA 目的,源;
指令功能:取源操作数地址的偏移量,并把它传送到目的操作数所在的单元。LEA 指令要求源操作数必须是存储单元,而且目的操作数必须是一个除段寄存器之外的16位或32位寄存器。当目的操作数是16位通用寄存器时,那么只装入有效地址的低16位。
MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址。
MOV 寄存器, 寄存器/内存单元/段寄存器/立即数
MOV 内存单元 , 寄存器/段寄存器/立即数
MOV 段寄存器 , 寄存器/内存单元
区别
LEA是“load effective address”的缩写,简单的说,LEA指令可以用来将一个内存地址直接赋给目的操作数,例如:lea eax,[ebx+8]就是将ebx+8这个值直接赋给eax,而不是把ebx+8处的内存地址里的数据赋给eax。而mov指令则恰恰相反,例如:mov eax,[ebx+8]则是把内存地址为ebx+8处的数据赋给eax。
共有条评论 网友评论