汇编指令中冒号(:)的未知含义
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编指令中冒号(:)的未知含义相关的知识,希望对你有一定的参考价值。
我正在使用反汇编程序(SmartDec:http://decompilation.info/),生成的反汇编中的许多指令看起来与此类似:
mov rax, [rip + 0x32b5]:64
我不熟悉这条指令的:64
部分。这是什么意思?
其他例子:
cmp [rcx + r8 * 0x8]:64, 0x0
mov eax, [rip + 0x592a]:32
jmp [rip + 0x6bad]:64
这个反汇编程序没有显示相应的机器代码,因此我使用了一个十六进制编辑器并查找了它说该指令所在的地址:
1665: mov rax, [rip + 0x19a4]:64
这就是Little Endian中有16个字节的内容:
54 00 00 49 89 E8 FF 15 DC 5F 00 00 E9 57 FF FF
答案
这是内存操作数的大小,无论出于何种原因打印。我从example on the SmartDec home page中推断出它的内容为movzx edx, [ecx]:16
因此,这与其他汇编程序(或movzx edx, word [ecx]
)中的word ptr
相当。只有在不能从其他操作数推导出大小时才有用,就像在这个movzx
情况下一样。 SmartDec
似乎每次都会展示它,例如对于你在问题中的例子,mov rax, [rip + 0x32b5]:64
显然大小是64位所以它没有多大帮助。
以上是关于汇编指令中冒号(:)的未知含义的主要内容,如果未能解决你的问题,请参考以下文章
Windows 逆向使用 CE 工具挖掘关键数据内存真实地址 ( 数据查找技巧 | 地址访问调试 | 指令选择技巧 | MOV 汇编指令含义 | 基址值搜索 ) ★