我试图通读组装线并破译它们的工作,而我的理解到了:
%eax当前为70,并且即将被覆盖
%ebx是我输入的字符串,由70个“ m”组成。它的地址是0x804d850,并作为终止字符继续到0x804d896。中间的所有地址的m值为109。
这是我遇到的问题:
0x0804927b <+39>: movzbl (%ebx), %eax
0x0804927e <+42>: test %al, %al
据我了解,我正在尝试从字符串中移出一个字节来覆盖%eax,然后对其进行零扩展。然后,我将%eax(刚刚移动的“ m”)的最低字节与零进行比较。
我怎样才能使%al等于0?那不是对应于NULL字符吗?如果我将其输入为字符串的第70个字符,则字符串的长度将改为69个字符,并且结尾处仍会带有'm'。
很抱歉,这个问题的措辞令人困惑。