软件加壳技术的研究与实现.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件加壳技术的研究与实现   摘要   从软件保护角度出发,研究对可执行文件进行加密与压缩操作,仅在载入内存后才对其进行解密操作,能够很好地保护软件信息。提供多种软件保护方案,兼顾用户体验与其实用性、安全性。既对软件进行加密保护措施,又不影响其使用。   关键词   软件保护;加壳技术;软件水印   中图分类号:g633.6文献标识码:a   doi:10.19694/j.cnki.issn2095-2457.2020.04.83   0引言   随着应用软件提供的服务越来越普及,各种恶意软件往往附加在正常软件上恶意传播,危害信息安全;另一方面,为了保护软件不随意被他人“借鉴”,必须对软件中的核心算法和机密数据进行保护。那么研究软件加壳技术实现反调试、反附加等功能,从而增加破解难度,阻碍逆向分析,实现软件保护是相当有必要的。   就目前的破解技术来看,单一的软件保护技术已经无法抵挡破解技术的攻击,因此我们需要进行多种技术的糅合。目前最常用的保护技术是加壳,有加密壳和压缩壳等,但最常用的还是两者结合起来。此外,还有代码虚拟技术,通过构造一个虚拟机,产生一些模拟代码来模拟被保护代码的执行,产生出与保护代码相同的结果,这样就很大程度上阻止了源代码的泄露。这种代码虚拟技术几乎是目前最好的保护技术,但其复杂程度与开发难度相当高。   1软件加壳系统的总体设计   软件加壳系统主要包括三个部分,即shell部分、加壳部分和水印部分。下面将具体介绍他们的结构与相关技术。   1.1shell部分设计   shell需要先于源程序获取控制权,shell可以修改源可执行文件的组织结构,从而能更早控制该程序,对加密后的原程序进行解密,且不影响源程序代码的正常运行。shell的作用是模拟操作系统装载pe文件,在这个过程中,额外添加解密、解压缩等步骤的过程。所以在运行被保护程序时,实际是先运行了shell部分的程序代码。   shell部分获取了程序控制权后,需要将加密后的部分依次解密、解压缩,确保其在内存中可以被操作系统识别并执行,在shell部分处理完毕后,再将程序控制权转给源程序,继续执行源程序部分的代码。   1.2加壳部分设计   加壳部分主要对pe文件进行操作,对各区段结构内容进行压缩混淆,增加静态分析难度。加壳确保被保护软件在计算机上存储时是加密状态的,虽然加壳不能完全防止静态分析,但是可以对其进行混淆。静态分析加壳后的程序时,不能直接获取被保护软件的总体结构与具体函数等信息。这样就可以提高被保护程序的安全性。   但是加壳后的程序需要先进行解密与解压操作,才可正常使用。因此采用的加密与压缩算法就需要根据实际情况来选择,有的软件需求强度高一些的算法,这样就会使运行时等候时间变长;有的软件对启动速度有要求,就可以选择加密流程较为简单的算法,即起到了一定的保护作用,又不影响程序的正常启动。在本程序中,也提供了多种加密与压缩算法可供选择。   进行加壳操作时,需要先判断其是否是pe文件。若是,就使用pe解析器对其进行解析,方便后续操作。程序中的一些特殊数据,如tls(threadlocalstorage)、数字证书信息等,在运行的时候是不会被加载进入内存的,因此在加壳时,需要隔离这部分数据,使后续加密压缩时不影响数据。接下来需要对iat进行处理,首先需要破坏源程序的iat和重定位表,将其换一个形式存储。由于修复iat和重定位表是脱壳时的重要步骤,因此对于iat和重定位表,破坏得越彻底,脱壳难度就越大。对于源程序的各个区段,对其进行加密压缩操作,可以选择不同的加密算法和壓缩算法。随后需要对资源段中的数据进行处理,将如图标版本信息等特殊数据隔离,其他资源段的数据进行压缩。待各区段处理完毕后,将所有区段进行融合,进行统一处理,这样就减少了区块间隙的个数,进一步缩小文件体积。最后,将shell引导段写入pe文件,以保shell代码在源程序之前运行。   1.3水印部分总体设计   水印部分采用动态水印技术。动态水印技术主要分为执行状态水印、数据结构水印和复活节彩蛋水印。   执行状态水印对内存地址走向进行编码生成水印,有时也会根据指令执行顺序来生成水印,通过控制地址和操作码顺序的统计特性来执行水印检测。实施起来较为困难。数据结构水印通过输入特定信息激发程序将水印信息隐藏在诸如堆、栈或者全局变量域的程序状态中当所有信息都输入完成之后,通过检测程序变量的当前值来进行水印提取。但是这种水印无法承受迷乱变换的攻击。复活节彩蛋水印不需要检测,通过可以显示版权信息的输入产生输出。但水印隐蔽性较差,

文档评论(0)

180****8756 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体盛世风云(深圳)网络科技有限公司
IP属地陕西
统一社会信用代码/组织机构代码
91440300069269024M

1亿VIP精品文档

相关文档