堆棧(stack):c語言程序運行時必須有的記錄調用記錄和參數的空間。shell
保存項:網絡
函數調喲能框架框架
參數傳遞函數
返回值保存spa
提供局部變量code
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> void Exit() { printf("i am a big bug,老司機\n"); ///老司機調用shell命令開車 //其實這裏能夠作的事情反而有不少種,好比 //對用戶隱私文件讀取,而且在網絡上發送。 //修改系統哦你配置等,搞蹦系統,刪除文件,等等 system("sl"); exit(10010); } void func(int x,int y) { int * p = &x; --p; printf("int Func\n"); //核心動做就是這裏,經過修改棧幀中保存返回值的位置,使得函數不是正常返回,而是進入老司機的工做位置。 *p = Exit; } int main() { func(a,b); ///程序並無進行到這裏 printf("after func()\n"); return 0; }