Sea*_*mey 3 x86 assembly x86-64 disassembly
我正在使用反汇编程序(SmartDec:http://decompilation.info/ ),生成的反汇编中的许多指令看起来类似于:
mov rax, [rip + 0x32b5]:64
Run Code Online (Sandbox Code Playgroud)
我不熟悉:64这条指令的部分内容.这是什么意思?
其他例子:
cmp [rcx + r8 * 0x8]:64, 0x0
mov eax, [rip + 0x592a]:32
jmp [rip + 0x6bad]:64
Run Code Online (Sandbox Code Playgroud)
这个反汇编程序没有显示相应的机器代码,所以我使用了一个十六进制编辑器,并查找了它说该指令所在的地址:
1665: mov rax, [rip + 0x19a4]:64
Run Code Online (Sandbox Code Playgroud)
这就是Little Endian中有16个字节的内容:
54 00 00 49 89 E8 FF 15 DC 5F 00 00 E9 57 FF FF
Run Code Online (Sandbox Code Playgroud)
这是内存操作数的大小,无论出于何种原因打印.我从一个推导出它的SmartDec主页上例如其内容movzx edx, [ecx]:16因此,这只是相当于什么会movzx edx, word [ecx]在其他的汇编(或word ptr).只有在不能从其他操作数推导出大小时才有用,就像在这种movzx情况下一样.SmartDec似乎每次都会显示它,例如,对于你在问题中的例子,mov rax, [rip + 0x32b5]:64很明显大小是64位所以它没有多大帮助.