一、缓冲区溢出原理:
简单而言就是大缓冲区中的数据向小缓冲区复制的过程,小缓冲区的相邻内存区域被覆盖,而引起的内存问题。成功的利用缓冲区漏洞可以修改内存中变量的值,甚至是劫持进程,执行恶意代码,最终获得程序的控制权。
二、理解内存的功能:
1、代码区.text–存储被装入执行的二进制代码,CPU会到这里来取指执行。
2、数据区.data–存储全局变量。
3、堆区–进程在堆区动态的请求一定大小的内存块,并在用完后回收。特点–动态&回收。
4、栈区–动态存储函数之间的调用关系,以保证在调用完成后恢复到上级父函数执行。
三、PE文件装载:
高级语言程序编译后生成可执行的PE文件。PE文件被装载运行后,就成了进程。
PE文件中二进制机器码被装入内存的.text区。
四、栈的操作:
1、push–压栈操作,在栈顶处增加一个元素;
2、pop–弹栈操作,从栈顶处取出一个元素;
3、top–表示栈顶位置。每push一次,top++;每pop一次,top–;
4、base–表示栈底。用于防止栈空后继续弹栈。