http://download.youkuaiyun.com/detail/doublewei1/4140866
#include<stdio.h>
#include<stdlib.h>
#define GET_ESP(esp) do{ \
asm volatile("movl %%esp,%0\n\t":"=m"(esp)); \
}while(0)
#define K 1024
int main(){
char*c;
int i=0;
unsigned long esp;
GET_ESP(esp);
printf("Current stack pointer is %#x\n",esp);
while(1){
c=(char*)esp-i*K;
*c='a';
GET_ESP(esp);
printf("esp=%#x,overflow %dK\n",esp,i);
i++;
}
}
本文通过一个简单的C程序演示如何使用汇编指令获取当前栈指针的位置,并逐步修改内存来观察栈溢出的过程。该实验有助于理解程序运行时的内存布局及栈区的工作原理。
3156

被折叠的 条评论
为什么被折叠?



