下面是一个反汇编的C程序的前5行,我试图将其逆向工程回到它的C代码中,以便更好地学习汇编语言。在这段代码的开头,我看到它在堆栈上腾出空间并立即调用
0x000000000040054e <+8>: mov %fs:0x28,%rax
我很困惑这条线的功能,以及可能从相应的C程序中调用它的内容。到目前为止,我唯一一次看到这一行就是在C程序中调用了一个不同的方法,但这次没有跟随任何Callq指令,所以我不太确定...任何想法还有什么可以在这个C程序要打这个电话吗?
0x0000000000400546 <+0>: push %rbp
0x0000000000400547 <+1>: mov %rsp,%rbp
0x000000000040054a <+4>: sub $0x40,%rsp
0x000000000040054e <+8>: mov %fs:0x28,%rax
0x0000000000400557 <+17>: mov %rax,-0x8(%rbp)
0x000000000040055b <+21>: xor %eax,%eax
0x000000000040055d <+23>: movl $0x17,-0x30(%rbp)
...
我知道这是为缓冲区溢出攻击提供某种形式的堆栈保护,我只需要知道如果不是单独的方法,C代码会提示这种保护。