论文部分内容阅读
随着计算机技术的发展,计算机技术成为各个行业提高生产效率的关键技术。人们在享受各种计算机技术带来便捷的同时,也面临着日益严峻的信息安全形势。由于冯诺依曼体系结构的计算机将数据和指令连续地放置于存储器中,程序运行过程中计算机不会实时检查指令指针寄存器的值,导致部分不在代码区的数据可以获得执行的权限,这种技术可称为代码触发技术。目前代码触发技术主要的触发方式有基于PE文件加壳的方式和基于系统漏洞的方式。触发的代码都是不具有PE文件结构的机器码。本文研究并实现利用不同的方式进行代码触发,进一步归纳总结出其中的关键技术问题。研究代码触发技术对今后针对安全系统的研究与设计具有重要意义,基于此本文设计并实现了代码触发系统,本文的主要研究工作如下:首先,本文深入分析了PE文件格式,研究了通过不同的方式实现PE文件加壳,实现了插入新节的方式PE行代码触发。本文设计了一种结合PE文件伪装的PE文件加壳新方法,以达到更加安全的触发效果。其次,本文研究了Windows系统中的堆缓冲区溢出技术,结合JPEG图片缓冲区溢出漏洞设计并实现了代码触发。在Shellcode生成中,本文设计了一种新的Shellcode解密流程,使得Shellcode的生成避免了敏感字符,保证Shellcode可以正确运行。最后,本文通过分析不同的代码触发方式所触发的Shellcode共同特点,总结了不具有PE文件结构的Shellcode在设计中的相同技术问题,即函数的定位、变量的定位、解密运行等问题。基于此,本文研究并给出了函数定位的多种方法,研究变量定位时,设计了一种在Shellcode中构建数据区,使Shellcode运行时变量动态定位的新方法。通过实验对比验证了优化方法可以使得生成的Shellcode更短,从而使Shellcode运行时占用更小的内存空间。