ASM指令似乎不是标准语法



当我在一个裂缝上练习逆向工程时,我发现自己被的指令弄糊涂了

MOV DWORD PTR [6CCCDC],EDX

它不应该被允许,因为intel语法是MOV dest,src感谢那些愿意提供帮助的人;

它是有效的,并且实际上遵循您提到的语法MOV dest,src

简单的部分,EDX是源,它从CPU寄存器中读取值。

[6CCCDC]是目的地。注意方括号,它们表示数字是指针,而不是立即值。因此,目的地是存储器地址0x6CCCDC。

DWORD PTR是指示正在操作的数据的大小的修饰符,这里是32位。在这个特定的指令中,它是多余的,因为可以通过使用EDX(一个32位寄存器)推断出双字。根据具体的编译器,它可能是可选的,也可能是强制性的。它在直接到内存的传输中很有用,因为它指定了硬编码常量的宽度。

简而言之,整个指令的意思是"取EDX寄存器的值,并将其放入从6CCCDC.

开始的32位内存位置

为什么不允许?

EDXsrc,而DWORD PTR [6CCCDC]是dest。因此,这将CCD_ 10移动到CCD_ 11。

最新更新