论文部分内容阅读
软件作为计算机的一种数据,可以被任意拷贝、复制等使用。未经授权的使用软件会给社会带来经济损失,所以在软件发布之前,软件保护是一个必要阶段。现有的保护软件中,大部分适用于PE格式下的可执行文件,从文件的结构和执行特点来进行保护。软件保护主要目的是阻碍PE被调试器调试,阻碍恶意用户逆向分析人员分析程序中的算法和组织结构等。现有的加壳保护软件是对程序中的代码和数据段做整体加密、压缩,然后新建立一个“外壳节”用于存储还原代码、关键数据信息等。这种加壳保护存在很多不安全因素:加壳信息明显;代码还原之后,代码和数据以明码形式存放内存;输入表还原处理过于明显等。本论文是针对现有壳保护软件的不足,然后提出改进方案,达到增加软件保护力度。另外还提出新的保护模型,新保护模型以obj文件作为保护对象。论文对PE、obj文件的保护技术进行了详尽的研究,从增加反调试和逆向工程的代价上来保护程序。论文主要研究内容为:1、研究Windows平台下可执行文件格式,obj文件格式及他们的执行过程。研究生成PE文件格式和obj文件格式的方法及注意事项。2、研究并应用软件加密和压缩技术。把多态加密引擎,密钥随机化应用在系统中,在加密中加入硬件机制来对软件进行加密,如U盘序列号作为加密相关密钥。应用多种压缩算法来保护程序,好的压缩算法可以提高程序的运行效率和保护效果。3、改进壳保护技术。壳保护软件一般以代码、数据、资源作为保护的基本单元进行加密、压缩处理,这种加密方式很容易被恶意用户写脚本破解,并最终使软件恢复原来形式。本文采取把代码分成小段,再对其进行加密、压缩处理,执行时再解密、解压。4、提出保护程序的新模型。保护生成PE文件的中间obj文件,再连接保护的obj文件。保护措施可以在obj文件中的代码、数据等进行保护。在还原代码中融合反调试、反跟踪技术。新保护模型能够提高保护之后的代码稳定性和提高保护强度。