堆棧(stack):c語言程序運行時必須有的記錄調用記錄和參數的空間。
保存項:
函數調喲能框架
參數傳遞
返回值保存
提供局部變量
#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;
}
