【发布时间】:2014-11-03 12:33:54
【问题描述】:
当我在一个破解版上练习逆向工程时,我发现自己被这个指令弄糊涂了
MOV DWORD PTR [6CCCDC],EDX
不应该被允许,因为 intel 语法是 MOV dest,src
感谢那些愿意提供帮助的人;
【问题讨论】:
-
多练习 ;)
-
组装?没有一种叫做组装的东西,你必须在问题中添加正确的架构标签
标签: assembly
当我在一个破解版上练习逆向工程时,我发现自己被这个指令弄糊涂了
MOV DWORD PTR [6CCCDC],EDX
不应该被允许,因为 intel 语法是 MOV dest,src
感谢那些愿意提供帮助的人;
【问题讨论】:
标签: assembly
它是有效的,并且遵循您实际提到的语法MOV dest,src。
简单的部分,EDX 是源,它从那个 CPU 寄存器读取值。
那么[6CCCDC]就是目的地。注意方括号,它们表示数字是指针,而不是立即数。所以目的地是内存地址0x6CCCDC。
DWORD PTR 是一个修饰符,表示正在操作的数据的大小,这里是 32 位。在这个特定指令中,它是多余的,因为可以通过使用 32 位寄存器 EDX 推断出双字。根据具体的编译器,它可能是可选的或强制的。它在立即到内存的传输中很有用,因为它指定了硬编码常量的宽度。
简而言之,整个指令的意思是“将EDX 寄存器的值放入从6CCCDC 开始的32 位内存位置。
【讨论】:
为什么不允许?
EDX 是 src,DWORD PTR [6CCCDC] 是目标。因此这会将EDX 移动到DWORD PTR [6CCCDC]。
【讨论】: