我刚刚开始使用radare2,当我尝试在程序中解开一个点时,我注意到了一个圆点。输出为:
0x00000000      48b841000000.  movabs rax, 0x41

我知道0x48是mov(0xB8)的REX前缀,立即操作数是0x41。如果0x41消耗了64位,则它将为0x0000000000000041(8个字节)。
指令的总长度应为10个字节(0xA),这很有意义,因为我的下一条指令从0xA开始(因为第一个指令从0x0开始消耗10个字节)到0x9)
上面的反汇编中的点是什么意思?有人可以指出我有关反汇编格式的文档吗?

评论

它只表示00,我不知道他们为什么放。代替

@ R4444不必为00。请参阅我的答案。

#1 楼

由于指令中的字节数可以不同,并且它们必须对列宽设置一定的限制,因此这表明在指令中有更多的字节显示在屏幕上。一种 '。'表示还有更多,并不意味着它总是为零-可以是任何东西。
如果这让您感到困扰,则有控制行为的标志。
:> e asm.nbytes = 6

控制有多少会显示字节,如果将该值设置为相对较小的数字,几乎所有的值都将以'.'结尾。
您可以在此处放置10来查看完整的指令,但是当然,这会将操作码更向右推。您还可以关闭字节以节省空间:
:> e asm.bytes = false


评论


得到它了!感谢你的回答

– R4444
20年7月28日在14:10

谢谢@Pawel。我以为是这样的

– markovuksanovic
20年7月28日在14:16