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

软件加壳技术的研究与实现李璇李林鹏李理摘要从软件保护角度出发,研究对可执行文件进行加密与压缩操作,仅在载入内存后才对其进行解密操作,能够很好地保护软件信息。提供多种软件保护方案,兼顾用户体验与其实用性、安全性。既对软件进行加密保护措施,又不影响其使用。关键词软件保护;加壳技术;软件水印:G633.6:ADOI:10.19694/j.cnki.issn2095-2457.2020.04.830引言随着应用软件提供的服务越来越普及,各种恶意软件往往附加在正常软件上恶意传播,危害信息安全;另一方面,为了保护软件不随意被他人“借鉴”,必须对软件中的核心算法和机密数据进行保护。那么研究软件加壳技术实现反调试、反附加等功能,从而增加破解难度,阻碍逆向分析,实现软件保护是相当有必要的。就目前的破解技术来看,单一的软件保护技术已经无法抵挡破解技术的攻击,因此我们需要进行多种技术的糅合。目前最常用的保护技术是加壳,有加密壳和压缩壳等,但最常用的还是两者结合起来。此外,还有代码虚拟技术,通过构造一个虚拟机,产生一些模拟代码来模拟被保护代码的执行,产生出与保护代码相同的结果,这样就很大程度上阻止了源代码的泄露。这种代码虚拟技术几乎是目前最好的保护技术,但其复杂程度与开发难度相当高。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水印部分总体设计水印部分采用动态水印技术。动态水印技术主要分为执行状态水印、数据结构水印和复活节彩蛋水印。执行状态水印对内存地址走向进行编码生成水印,有时也会根据指令执行顺序来生成水印,通过控制地址和操作码顺序的统计特性来执行水印检测。实施起来较为困难。数据结构水印通过输入特定信息激发程序将水印信息隐藏在诸如堆...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?