这两个指令在做什么?

Smo*_*ndo 1 x86 assembly

我必须对一些汇编​​代码进行反向工程,但是我不确定这些指令在做什么。

我知道al应该是eax的低字节。但是我将edx中的值放入其中,并且edx是一个四字节寄存器。那么当我移动它时会变成什么?

mov     al, [edx]
mov     [ebp+var_19], al
Run Code Online (Sandbox Code Playgroud)

Gen*_*ene 6

这些指令都移动一个字节。首先将edx寄存器中32位存储器地址的内容加载到中al。第二个将相同的值从中移动al到包含在其中的内存地址中,ebp再加上一个恒定偏移量。常量偏移量可能是第19个本地堆栈插槽或第19个参数字。但这取决于您的反汇编程序创建的语法。

  • ebp + var_19是经典的IDA语法,表示[ebp-19h]。遗憾的是IDA从未使用这种令人困惑的语法。 (4认同)