Radare2 - 反汇编中的点是什么意思

逆向工程 拆卸 雷达2 x86-64
2021-06-29 09:15:17

我刚刚开始使用radare2,当我试图在我的程序中解散一个点时,我注意到了一个点。输出是:

0x00000000      48b841000000.  movabs rax, 0x41

我知道 0x48 是 mov (0xB8) 的 REX 前缀,立即操作数是 0x41。如果 0x41 消耗 64 位,它将是 0x0000000000000041(8 个字节)。

指令的总长度应该是 10 字节 (0xA),这很有意义,因为我的下一条指令从 0xA 开始(因为第一条指令消耗了从 0x0 到 0x9 的 10 个字节)

上面反汇编中的点是什么意思?有人可能会指出我关于反汇编格式的文档吗?

1个回答

由于指令中的字节数可能不同,并且它们必须对列宽进行一些限制,因此这表明指令中的字节数比您在屏幕上看到的字节数多。一个 '。' 表示还有更多,并不意味着它总是零——它可以是任何东西。

如果这让您感到困扰,则可以使用控制行为的标志。

:> e asm.nbytes = 6

控制显示多少字节,如果你把这个值设为一个相对较小的数字,几乎所有的数字都会以'.'.

你可以把它放在那里10查看完整的指令,但当然这会将操作码推向更多的右侧。您还可以关闭字节以节省一些空间:

:> e asm.bytes = false