当我在一个裂缝上练习逆向工程时,我发现自己被的指令弄糊涂了
MOV DWORD PTR [6CCCDC],EDX
它不应该被允许,因为intel语法是MOV dest,src
感谢那些愿意提供帮助的人;
它是有效的,并且实际上遵循您提到的语法MOV dest,src
。
简单的部分,EDX
是源,它从CPU寄存器中读取值。
则[6CCCDC]
是目的地。注意方括号,它们表示数字是指针,而不是立即值。因此,目的地是存储器地址0x6CCCDC。
DWORD PTR
是指示正在操作的数据的大小的修饰符,这里是32位。在这个特定的指令中,它是多余的,因为可以通过使用EDX(一个32位寄存器)推断出双字。根据具体的编译器,它可能是可选的,也可能是强制性的。它在直接到内存的传输中很有用,因为它指定了硬编码常量的宽度。
简而言之,整个指令的意思是"取EDX
寄存器的值,并将其放入从6CCCDC.
为什么不允许?
EDX
是src
,而DWORD PTR [6CCCDC]
是dest。因此,这将CCD_ 10移动到CCD_ 11。