文章目录 1.初识漏洞函数 2.栈及其栈帧结构与函数调用 3.栈帧的形成释放和栈溢出的产生过程 (1)栈帧的形成过程 (2)gets()函数漏洞的形成机理 (3)栈帧的释放过程 4.我们可以用栈溢出来做什么? 1.初识漏洞函数 观察下面C语言代码: #include<stdio.h> void vulnerable(){ char buf[10]; gets(buf); } int main(){ vulnerable(); printf("运行完毕"); } 你会发现这个代码很简单,但是它会产生巨大的安全隐患。在C语言中,gets()函数是典型的危险函数。那么gets()函数为什么会产生巨大的安全隐患呢?