用汇编语言解释这一行?

时间:2018-05-10 17:51:35

标签: c gcc assembly x86 reverse-engineering

下面是一个反汇编的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代码会提示这种保护。

0 个答案:

没有答案