最近看到一篇古老的帖子(http://thr3ads.net/dtrace-discuss/2008/03/379528-stack-tracing-and-uregs),说是执行完一个把堆栈写坏的函数,为什么DTrace输出EBP
的值改变了,但是EIP
的值没变?我觉得很有意思,就研究了一下。下面就是整个分析过程:
首先看一下C程序:
#include <stdio.h> int handle_reply(char *str){ char response[256]; strcpy(response,str); printf("T[......]