[发明专利]基于软件保护装置的软件加壳方法、系统及软件保护方法有效
申请号: | 201210353459.0 | 申请日: | 2012-09-20 |
公开(公告)号: | CN102930204A | 公开(公告)日: | 2013-02-13 |
发明(设计)人: | 孙吉平;韩勇 | 申请(专利权)人: | 北京深思洛克软件技术股份有限公司 |
主分类号: | G06F21/54 | 分类号: | G06F21/54 |
代理公司: | 北京金信立方知识产权代理有限公司 11225 | 代理人: | 黄威;张彬 |
地址: | 100086 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 软件 保护装置 方法 系统 保护 | ||
技术领域
本发明涉及计算机软件保护技术领域,特别涉及一种基于软件保护装置的软件加壳方法、系统及软件保护方法。
背景技术
现有技术中,对软件进行加壳保护就是在被保护软件中插入一段代码(即壳代码),并将被保护软件的入口点即软件执行的第一条指令指向壳代码,然后把被保护软件的代码和数据通过加密或压缩等方式进行保护。经过加壳处理的软件在运行时首先会进入到壳代码中,在壳代码中把被加密或压缩的原始代码还原回来,然后再跳转到被保护软件的原始的入口点继续执行。
现有技术中还提供了一种基于软件保护装置对软件进行加壳保护的方式,即在壳代码中加入对软件保护装置的访问,并在访问软件保护装置之后通过判断某些条件是否成立来确定软件是否可以继续执行,最简单的判断条件就是软件保护装置是否存在,即若找到了软件保护装置,则允许软件执行,若找不到软件保护装置,就不让软件继续运行。
然而,现有技术中的软件加壳保护方式都有一个弱点,即加壳的被保护软件运行时,在执行完壳代码跳转到被保护软件的原始入口点之后,被保护软件的所有代码和数据都暴露在内存中了,通过一些工具就可以很容易地将其转储出来,导致被保护软件容易被破解,也就是常说的对软件进行脱壳。
发明内容
本发明的一个目的是提供一种基于软件保护装置的软件加壳方法,以解决采用现有技术中的加壳方法处理的被保护软件运行时,在执行完壳代码跳转到被保护软件的原始入口点之后因被保护软件的所有代码和数据都暴露在内存中而导致的被保护软件容易被破解的问题。
为了实现上述目的,本发明提供了一种基于软件保护装置的软件加壳方法,包括以下步骤:
S1:在被保护软件的全部代码段中查找目标代码段;
S2:将所述目标代码段提取到所述软件保护装置中进行存储;
S3:在所述被保护软件的全部代码段中,将所述目标代码段替换为包括跳转指令的代码段或者用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,所述跳转指令指向用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,并对所述被保护软件进行加壳。
作为优选,所述步骤S1中,所述目标代码段为与单个函数对应的代码段或者与单个函数对应的代码段中的一段。
作为优选,所述步骤S2进一步包括:将所述目标代码段发送至所述软件保护装置,并存储在所述软件保护装置的存储区内。
作为优选,所述步骤S3具体为:
S301:向所述被保护软件中注入壳代码;
S302:在所述被保护软件的全部代码段中,将所述目标代码段替换为用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;
S303:将所述被保护软件的全部代码段进行加密或压缩。
作为优选,所述步骤S3具体为:
S311:在所述被保护软件的全部代码段中,将所述目标代码段替换为用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;
S312:向所述被保护软件中注入壳代码;
S313:将所述被保护软件的全部代码段进行加密或压缩。
作为优选,所述步骤S3具体为:
S321:向所述被保护软件中注入壳代码,所述壳代码中包含所述用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;
S322:在所述被保护软件的全部代码段中,将所述目标代码段替换为所述包括跳转指令的代码段;
S323:将所述被保护软件的全部代码段进行加密或压缩。
本发明的另一个目的是提供一种基于软件保护装置的软件加壳系统,以解决采用现有技术中的加壳系统处理的被保护软件运行时,在执行完壳代码跳转到被保护软件的原始入口点之后因被保护软件的所有代码和数据都暴露在内存中而导致的被保护软件容易被破解的问题。
为了实现上述目的,本发明提供了一种基于软件保护装置的软件加壳系统,包括:
查找模块,其用于在被保护软件的全部代码段中查找目标代码段;
提取模块,其用于将所述目标代码段提取到所述软件保护装置中进行存储;
替换模块,其用于在所述被保护软件的全部代码段中,将所述目标代码段替换为包括跳转指令的代码段或者用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段,所述跳转指令指向用于从所述软件保护装置中提取所述目标代码段并将其还原到原始位置的代码段;
加壳模块,其用于对所述被保护软件进行加壳。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京深思洛克软件技术股份有限公司,未经北京深思洛克软件技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210353459.0/2.html,转载请声明来源钻瓜专利网。