小白学安全第二十五篇之寄存器篇 – 作者:360网络安全学院

   缓冲区溢出(bufferoverflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权。

   什么意思呢,让人摸不着头脑,算了,放弃吧。少年,坚持一下,从此文开始,通过三期内容,我们一起一步一步的揭开缓冲区溢出的神秘面纱吧:

缓冲区溢出之寄存器篇;

缓冲区溢出之堆栈原理;

缓冲区溢出之漏洞原理。

【说明】

请重点关注文中加粗、下划线内容,其它内容了解即可。

【正文】

   寄存器(Register)是CPU内部用来存放数据的一些小型存储区域。寄存器主要分成4类:

通用寄存器(8个)

段寄存器(6个)

程序状态与控制寄存器(1个)

指令指针寄存器(1个)

接下来分别介绍一下这4类的作用。

通用寄存器。主要用于传送和暂存数据,也可参与算术逻辑运算,保存运算结果。32位通用寄存器主要包括累加器(EAX)、基址寄存器(EBX)、计数器(ECX)、数据存储器(EDX)、扩展基址指针寄存器(EBP)、源变址寄存器(ESI)、目的变址寄存器(EDI)、栈指针寄存器(ESP)。

前面4个寄存器(累加器(EAX)、基址寄存器(EBX)、计数器(ECX)、数据存储器(EDX))主要用于算术运算;后面4个寄存器(扩展基址指针寄存器(EBP)、源变址寄存器(ESI)、目的变址寄存器(EDI)、栈指针寄存器(ESP))主要用于保存内存地址的指针。

段寄存器。段是一种内存保护技术,它把内存划分为多个区段,并为每个区段赋予起始地址、范围、访问权限等,以保护内存。段寄存器主要包括CS代码段寄存器、SS栈段寄存器、DS数据段寄存器、ES附加(数据)段寄存器、FS数据段寄存器、GS数据段寄存器。

程序状态与控制寄存器。EFLAGS共计32位,每1位的值为0或1,代表off或on,我们前期只需关注ZF(零标志)、OF(溢出标志)、CF(进位标志)。

指令指针寄存器(EIP)。程序运行时,EIP会存放程序执行的下一命令的地址,告诉CPU接下来要做什么。

Ok,到这里,我们需要了解的寄存器知识就差不多了,在下一篇“缓冲区溢出之堆栈原理”中,将带大家学习堆栈原理,其中就会用到寄存器的部分知识。

未完待续…

                                   

来源:freebuf.com 2018-09-20 17:50:52 by: 360网络安全学院

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论