基于软件保护装置的软件加壳方法、系统及软件保护方法制造方法及图纸

技术编号:8323767 阅读:181 留言:0更新日期:2013-02-14 02:44
本发明专利技术公开了一种基于软件保护装置的软件加壳方法,包括以下步骤:S1:在被保护软件的全部代码段中查找目标代码段;S2:将目标代码段提取到软件保护装置中进行存储;S3:在被保护软件的全部代码段中,将目标代码段替换为包括跳转指令的代码段或者用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,并对被保护软件进行加壳。本发明专利技术还公开了一种软件加壳系统及软件保护方法。加壳软件运行时,由于目标代码段存储在软件保护装置内,所以没有将被保护软件的所有代码和数据都暴露在内存中,加大了对软件的保护强度。

【技术实现步骤摘要】
基于软件保护装置的软件加壳方法、系统及软件保护方法
本专利技术涉及计算机软件保护
,特别涉及一种基于软件保护装置的软件加壳方法、系统及软件保护方法。
技术介绍
现有技术中,对软件进行加壳保护就是在被保护软件中插入一段代码(即壳代码),并将被保护软件的入口点即软件执行的第一条指令指向壳代码,然后把被保护软件的代码和数据通过加密或压缩等方式进行保护。经过加壳处理的软件在运行时首先会进入到壳代码中,在壳代码中把被加密或压缩的原始代码还原回来,然后再跳转到被保护软件的原始的入口点继续执行。现有技术中还提供了一种基于软件保护装置对软件进行加壳保护的方式,即在壳代码中加入对软件保护装置的访问,并在访问软件保护装置之后通过判断某些条件是否成立来确定软件是否可以继续执行,最简单的判断条件就是软件保护装置是否存在,即若找到了软件保护装置,则允许软件执行,若找不到软件保护装置,就不让软件继续运行。然而,现有技术中的软件加壳保护方式都有一个弱点,即加壳的被保护软件运行时,在执行完壳代码跳转到被保护软件的原始入口点之后,被保护软件的所有代码和数据都暴露在内存中了,通过一些工具就可以很容易地将其转储出来,导致被保护软件容易被破解,也就是常说的对软件进行脱壳。
技术实现思路
本专利技术的一个目的是提供一种基于软件保护装置的软件加壳方法,以解决采用现有技术中的加壳方法处理的被保护软件运行时,在执行完壳代码跳转到被保护软件的原始入口点之后因被保护软件的所有代码和数据都暴露在内存中而导致的被保护软件容易被破解的问题。为了实现上述目的,本专利技术提供了一种基于软件保护装置的软件加壳方法,包括以下步骤:S1:在被保护软件的全部代码段中查找目标代码段;S2:将所述目标代码段提取到所述软件保护装置中进行存储;S3:在所述被保护软件的全部代码段中,将所述目标代码段替换为包括跳转指令的代码段或者用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,所述跳转指令指向用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,并对所述被保护软件进行加壳。作为优选,所述步骤S1中,所述目标代码段为与单个函数对应的代码段或者与单个函数对应的代码段中的一段。作为优选,所述步骤S2进一步包括:将所述目标代码段发送至所述软件保护装置,并存储在所述软件保护装置的存储区内。作为优选,所述步骤S3具体为:S301:向所述被保护软件中注入壳代码;S302:在所述被保护软件的全部代码段中,将所述目标代码段替换为用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;S303:将所述被保护软件的全部代码段进行加密或压缩。作为优选,所述步骤S3具体为:S311:在所述被保护软件的全部代码段中,将所述目标代码段替换为用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;S312:向所述被保护软件中注入壳代码;S313:将所述被保护软件的全部代码段进行加密或压缩。作为优选,所述步骤S3具体为:S321:向所述被保护软件中注入壳代码,所述壳代码中包含所述用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;S322:在所述被保护软件的全部代码段中,将所述目标代码段替换为所述包括跳转指令的代码段;S323:将所述被保护软件的全部代码段进行加密或压缩。本专利技术的另一个目的是提供一种基于软件保护装置的软件加壳系统,以解决采用现有技术中的加壳系统处理的被保护软件运行时,在执行完壳代码跳转到被保护软件的原始入口点之后因被保护软件的所有代码和数据都暴露在内存中而导致的被保护软件容易被破解的问题。为了实现上述目的,本专利技术提供了一种基于软件保护装置的软件加壳系统,包括:查找模块,其用于在被保护软件的全部代码段中查找目标代码段;提取模块,其用于将所述目标代码段提取到所述软件保护装置中进行存储;替换模块,其用于在所述被保护软件的全部代码段中,将所述目标代码段替换为包括跳转指令的代码段或者用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,所述跳转指令指向用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;加壳模块,其用于对所述被保护软件进行加壳。作为优选,所述查找模块具体用于在被保护软件的全部代码段中查找与单个函数对应的代码段作为目标代码段或者查找与单个函数对应的代码段中的一段作为目标代码段。本专利技术的又一个目的是提供一种软件保护方法,以解决现有技术中的加壳软件运行时因所有代码和数据都暴露在内存中而导致的被保护软件容易被破解的问题。为了实现上述目的,本专利技术提供了一种基于软件保护装置的软件保护方法,包括以下步骤:S401:运行壳代码,解密或解压缩被保护软件的全部代码段,跳转到所述被保护软件的全部代码段的原始入口点继续执行;S402:执行到用于从所述软件保护装置中提取目标代码段并将其还原到原始位置的代码段时访问所述软件保护装置,读取存储在所述软件保护装置中的目标代码段并将其写到所述用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段的位置,所述目标代码段为预先在所述被保护软件的全部代码段中查找到并提取到所述软件保护装置中存储的代码段;S403:所述目标代码段的第一条指令开始执行,所述目标代码段执行完后继续向下执行。为了实现上述目的,本专利技术提供了另一种基于软件保护装置的软件保护方法,包括以下步骤:S501:运行壳代码,解密或解压缩被保护软件的全部代码段,跳转到所述被保护软件的全部代码段的原始入口点继续执行;S502:执行到包括跳转指令的代码段时跳转到用于从所述软件保护装置中提取目标代码段并将其还原到原始位置的代码段,所述跳转指令指向所述用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;S503:访问所述软件保护装置,读取存储在所述软件保护装置中的目标代码段并将其写到所述包括跳转指令的代码段的位置,所述目标代码段为预先在所述被保护软件的全部代码段中查找到并提取到所述软件保护装置中存储的代码段;S504:所述目标代码段的第一条指令开始执行,所述目标代码段执行完后继续向下执行。与现有技术相比,本专利技术具有以下有益效果:1)采用本专利技术提供的基于软件保护装置的软件加壳方法及系统加壳过的软件运行时,在执行完壳代码并跳转到被保护软件的原始入口点后,由于被保护软件的部分代码段仍然存储在软件保护装置内,所以没有将被保护软件的所有代码和数据都暴露在内存中,因此,被保护软件就不会在执行完壳代码之后被轻易地转储出来,加大了对软件的保护强度;2)本专利技术提供的基于软件保护装置的软件保护方法中,由于被保护软件的部分代码段存储在软件保护装置内,加壳软件运行时没有将代码和数据都暴露在内存中,因此,被保护软件就不会在执行完壳代码之后被轻易地转储出来,加大了对软件的保护强度。附图说明图1为本专利技术实施例一的软件加壳方法的流程示意图;图2为采用实施例一的软件加壳方法对软件进行加壳处理的示意图;图3为采用实施例一的软件加壳方法加壳过的软件运行时的流程示意图;图4为本专利技术实施例二的软件加壳方法的流程示意图;图5为本专利技术实施例三的软件加壳方法的流程示意图;图6为采用实施例三的软件加壳方法对软件进本文档来自技高网...
基于软件保护装置的软件加壳方法、系统及软件保护方法

【技术保护点】
一种基于软件保护装置的软件加壳方法,其特征在于,包括以下步骤:S1:在被保护软件的全部代码段中查找目标代码段;S2:将所述目标代码段提取到所述软件保护装置中进行存储;S3:在所述被保护软件的全部代码段中,将所述目标代码段替换为包括跳转指令的代码段或者用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,所述跳转指令指向用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,并对所述被保护软件进行加壳。

【技术特征摘要】
1.一种基于软件保护装置的软件加壳方法,其特征在于,包括以下步骤:S1:在被保护软件的全部代码段中查找与单个函数对应的目标代码段;S2:将所述目标代码段提取到所述软件保护装置中进行存储;S3:在所述被保护软件的全部代码段中,将所述目标代码段替换为包括跳转指令的代码段或者用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,所述跳转指令指向用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,并对所述被保护软件进行加壳;所述目标代码段外的其他代码段中不存在跳转到所述目标代码段内部的指令。2.根据权利要求1所述的基于软件保护装置的软件加壳方法,其特征在于,所述步骤S2进一步包括:将所述目标代码段发送至所述软件保护装置,并存储在所述软件保护装置的存储区内。3.根据权利要求1所述的基于软件保护装置的软件加壳方法,其特征在于,所述步骤S3具体为:S301:向所述被保护软件中注入壳代码;S302:在所述被保护软件的全部代码段中,将所述目标代码段替换为用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;S303:将所述被保护软件的全部代码段进行加密或压缩。4.根据权利要求1所述的基于软件保护装置的软件加壳方法,其特征在于,所述步骤S3具体为:S311:在所述被保护软件的全部代码段中,将所述目标代码段替换为用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;S312:向所述被保护软件中注入壳代码;S313:将所述被保护软件的全部代码段进行加密或压缩。5.根据权利要求1所述的基于软件保护装置的软件加壳方法,其特征在于,所述步骤S3具体为:S321:向所述被保护软件中注入壳代码,所述壳代码中包含所述用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;S322:在所述被保护软件的全部代码段中,将所述目标代码段替换为所述包括跳转指令的代码段;S323:将所述被保护软件的全部代码段进行加密或压缩。6.一种基于软件保护装置的软件加壳系统,其特征在于,包括:查找模块,其用于在被保护软件的全部代码段中查找与单个函数对应的目标代码段;提取模块,其用于将所...

【专利技术属性】
技术研发人员:孙吉平韩勇
申请(专利权)人:北京深思洛克软件技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1