我在理解寄存器 %bl 时遇到问题

逆向工程 拆卸 调试 数据库
2021-07-10 23:38:32
   0x080484ad <+0>:     xor    %ebx,%ebx
   0x080484af <+2>:     mov    (%eax),%bl   *****
   0x080484b1 <+4>:     xor    $0x52,%bl
   0x080484b4 <+7>:     cmp    $0x11,%bl
   0x080484b7 <+10>:    jne    0x8048510 
   0x080484b9 <+12>:    mov    0x7(%eax),%bl
   0x080484bc <+15>:    sub    $0x16,%bl
   0x080484bf <+18>:    cmp    $0xd,%bl
   0x080484c2 <+21>:    jne    0x8048510 
   0x080484c4 <+23>:    mov    0x1(%eax),%bl

我在理解寄存器 %bl 时遇到问题。寄存器 %eax 在地址下的值为“12345678”(字符串)。我知道在第二行中,我们将 $eax 的值移动到 %bl(8 位)。所以它应该从字符串“12”中获取前两个数字,对吗?我希望有人澄清这条线。非常感谢。

1个回答

at&t 语法让我失望,所以我会使用 intel 语法
我也会在我的答案中坚持使用十六进制作为基础

如果eax持有一个像0x80481234这样的地址,并且它指向一个像0x12345678这样的变量,
将字节移动到 bl 会使 bl 0x78
0x780x52或,结果应该是0x11,
所以0x110x52 的异或 应该得到你需要的输入

在此处输入图片说明