【发布时间】:2021-01-28 16:39:59
【问题描述】:
我正在尝试根据程序集注册表中的现有值找出一个谜题。
我一直在这条线上遇到麻烦
cmp %sil,0x12(%rdi)
jne ...
当我在调试器中检查%rdi 和%sil 时,它们的第12 个偏移量实际上包含相同的值,但程序仍然会跳转,因为这些值被认为不相等。
我唯一能想到的是,之前的比较是使用cmpb 而不是cmp,并且%sil 是%rsi 的1 字节版本正在与8 字节值进行比较。
谁能告诉我我的想法是否正确?如果是这样,解决方案的输入是一个字符串,那么我将如何更改输入以适应这个?
【问题讨论】:
-
0x12(十六进制)不是 12(十进制)。这是(%rdi)之后的第 18 个字节。这个cmp是一个cmpb,字节操作数大小由寄存器操作数隐含,所以反汇编器省略了它。 -
哦,我明白了。谢谢