c语言中的堆栈分析

0x00 过程

我们可以看出:首先是压参数,然后压返回地址,然后压EBP,然后堆栈提升,产生缓冲区,然后压寄存器保护现场。
然后循环填写cc。然后靠ebp的移动实现局部变量在缓冲区里的分配。
c语言中的堆栈分析_第1张图片

/*基于缓冲区溢出的hello world
  2016年12月24日22:01:17
*/
#include 
void hello(void)
{
    printf("hello world");
}
void fun()
{
  int  a[5]={1,2,3,4,5};

  a[6]=(int)hello;

}
int main (void)
{

 fun();

    return  0;
}

0x01

溢出分析:如下,既然是输出了helloworld证明了什么?证明了一点:那就是hello函数的地址压给了eip。首先来说:我们执行了溢出,但是编译器应该是不知道,所以
c语言中的堆栈分析_第2张图片

你可能感兴趣的:(逆向汇编)