一种维护软件的方法技术

技术编号:16701006 阅读:27 留言:0更新日期:2017-12-02 13:26
本发明专利技术公开了一种维护软件的方法,包括受维护软件在运行过程中通过加密锁API接口调用连接在该受维护软件所在计算机上的加密锁,若返回结果正确,则受维护软件继续运行,若返回结果错误,则受维护软件终止运行,该受维护软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码,本发明专利技术的软件维护方法中,受维护软件中用于调用加密锁的代码和加密锁API接口的代码已被转换成破解者难以分析的代码,使破解者无法跟踪受维护软件调用加密锁时的输入数据和输出数据,因而使受维护软件和加密锁API接口之间的数据交互得到了维护,提高了基于加密锁的软件维护方案的安全强度。

A method of maintaining software

The invention discloses a method for software maintenance, including the maintenance of software encryption lock through the API interface to call the connection in the protected software on the computer where the encryption lock in the operation process, if the return result is correct, is affected by the maintenance of software continues to run, if the return error results is affected by the termination of the operation and maintenance of software. The maintenance software used to invoke the encryption lock code before the software is delivered to users of the new encryption lock code to call the original code transform to generate the software, the maintenance method of the invention of the software, the maintenance software used to invoke the encryption lock code and encryption lock API interface code has been converted into a crack to analyze the code, the crack can not call tracking by the maintenance of software encryption lock when the input data and output data, so that the protected software and encryption lock AP The data interaction between the I interfaces is maintained and the security strength of the software maintenance scheme based on the encrypted lock is improved.

【技术实现步骤摘要】
一种维护软件的方法
本专利技术涉及软件领域,尤其是涉及一种维护软件的方法。
技术介绍
软件由于其纯数字化的特征,一直遭受盗版的困扰,而使用加密锁是实现商业软件版权维护的一种主要手段。其中,加密锁是一个连接在计算机的并口或者通用串行总线(USB)等外部接口上的硬件设备。加密锁作为一种硬件设备,复制的难度较大,从而起到防止受维护软件被非法使用的作用。由于现代操作系统的开放性,破解者可以对软件层运行过程中的任何一个环节进行跟踪和分析,这样一来,特征明显的边界就成为破解者最容易实施攻击的位置。对于加密锁API接口和加密锁之间的交互,可以通过有加密锁硬件参与的通信加密等手段实现有效的维护,由于加密锁硬件的安全性很高,因此攻击的难度很高。而受维护软件和加密锁API接口则全部是软件代码构成,不能摆脱破解者的监控,破解者可以通过跟踪受维护软件调用加密锁的相关代码,包括受维护软件调用加密锁API接口的代码、调用时的输入数据、加密锁返回的结果、以及对加密锁返回结果的处理代码,最终通过篡改或者欺骗受维护软件来实现脱离加密锁运行。因此,现有技术的基于加密锁的软件维护方案只能保证加密锁硬件部分的安全,软件部分的安全仍然存在比较严重的问题。
技术实现思路
本专利技术的目的是针对现有技术的问题,提供一种维护软件的方法,该种方法能解决现有技术的基于加密锁的软件维护方案中软件部分容易被破解者跟踪和分析破解的问题。为了达到上述目的,本专利技术通过以下技术方案来实现的:一种维护软件的方法,包括受维护软件在运行过程中通过加密锁API接口调用连接在该受维护软件所在计算机上的加密锁,若返回结果正确,则受维护软件继续运行,若返回结果错误,则受维护软件终止运行;该受维护软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码。进一步地,所述受维护软件中用于调用加密锁的代码包括为调用所述加密锁准备输入数据的代码和对所述加密锁的返回结果进行处理的代码。进一步地,所述加密锁API接口的代码是在加密锁API接口被交付用户之前对加密锁API接口的原始代码进行变换生成的新代码。进一步地,对所述原始代码进行变换的方法是:将所述原始代码进行指令变形或将所述原始代码变换为虚拟机代码。进一步地,所述加密锁API接口的代码包括加密锁API接口的入口代码。进一步地,对所述加密锁API接口的原始代码进行变换的规则是动态的,每次所述变换生成的新代码均不相同。进一步地,对所述受维护软件中用于调用加密锁的原始代码进行变换的规则是动态的,每次所述变换生成的新代码均不相同。本专利技术具有如下有益效果:(1)本专利技术提供的软件的维护方法中,受维护软件中用于调用加密锁的代码和加密锁API接口的代码已被转换成破解者难以分析的代码,使破解者无法跟踪受维护软件调用加密锁时的输入数据和输出数据,因而使受维护软件和加密锁API接口之间的数据交互得到了维护,提高了破解者分析的难度,从而提高了基于加密锁的软件维护方案的安全强度;(2)由于对所述受维护软件中用于调用加密锁的原始代码和加密锁API接口的原始代码进行变换的规则都是动态的,所以每次变换生成的新代码均不一样,进一步提高了软件维护的安全性。附图说明以下附图仅对本专利技术做示意性说明和解释,并不限定本专利技术的范围。图1是本专利技术一较佳实施例的一种维护软件的方法的结构框图。具体实施方式下面结合实施例和附图对本专利技术作进一步说明。实施例1本实施例提供的软件的维护方法按照如下步骤进行:(1)利用计算机中的软件开发工具计算明文T的变换结果C;(2)在受维护软件中存储明文T和变换结果C;(3)受维护软件通过加密锁API接口调用加密锁,输入明文T,返回变换结果C1;(4)受维护软件对比C和C1,若相等,则受维护软件继续运行,否则受维护软件终止运行。软件开发商在将受维护软件交付用户之前,经过编译,受维护软件中用于调用加密锁的原始代码可能是:PUSHoffset_C1_buffPUSHoffset_T_buffCALL?LIV_encrypt?这三行原始代码用于通过加密锁API接口的LIV_Encrypt函数调用加密锁计算C1;PUSHoffset_C1_buffPUSHOffset_C_buffCALL?MEMCMP?JNZ?EXIT?这四行原始代码用于比较C和C1。根据上述代码,破解者能够很容易地找到CALL?LIV_encrypt?指令并设置断点,并跟踪参数传递过程获得LIV_encrypt函数的输入数据和输出数据,最终通过模拟LIV_encrypt函数来直接返回明文T对应的输出C,欺骗受维护软件。结合图1所示,在本实施例提供的软件的维护方法中,用户使用的软件是经过指令变形的软件,所述软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码,对所述原始代码进行变换的方法是:对所述原始代码进行指令变形。经过变换后,受维护软件中用于调用加密锁的新代码可能是:PUSHoffset_C1_buffPUSHoffset_T_buffPUSHOFFSET_?LIV_encrypt?RET...显然,原来特征明显的CALL指令被PUSH和RET组合指令替代,破解者无法直接搜索到对应的指令,显然无法直接获得LIV_encrypt函数的输入和输出,软件维护方案的安全性得到了提升。其中,所述受维护软件中为调用所述加密锁准备输入数据的代码和对所述加密锁的返回结果进行处理的代码是进行代码变换的重点。此外,为了进一步提高本实施例提供的软件的维护方法的安全性,所述加密锁API接口也是经过指令变形的加密锁API接口,所述加密锁API接口的代码是在加密锁API接口被交付用户之前对加密锁API接口的原始代码进行变换生成的新代码,尤其是加密锁API接口的入口部分的代码,通过该变换使受维护软件和加密锁API接口之间的界限难以区分。最后,对所述受维护软件中用于调用加密锁的原始代码和所述加密锁API接口的原始代码进行变换的规则是动态的,每次所述变换生成的新代码均不相同。实施例2本实施例提供的软件的维护方法按照如下步骤进行:(1)利用计算机中的软件开发工具计算明文T的变换结果C;(2)在受维护软件中存储明文T和变换结果C;(3)受维护软件通过加密锁API接口调用加密锁,输入明文T,返回变换结果C1;(4)受维护软件对比C和C1,若相等,则受维护软件继续运行,否则受维护软件终止运行。软件开发商在将受维护软件交付用户之前,经过编译,受维护软件中用于调用加密锁的原始代码可能是:PUSHoffset_C1_buffPUSHoffset_T_buffCALL?LIV_encrypt?这三行原始代码用于通过加密锁API接口的LIV_Encrypt函数调用加密锁计算C1;PUSHoffset_C1_buffPUSHOffset_C_buffCALL?MEMCMP?JNZ?EXIT?这四行原始代码用于比较C和C1。根据上述代码,破解者能够很容易地找到CALL?LIV_encrypt?指令并设置断点,并跟踪参数传递过程获得LIV_encrypt函数的输入数据和输出数据,最终通过模拟LIV_encrypt函数来直接返回明文T对应的输出C,欺骗受维护本文档来自技高网...
一种维护软件的方法

【技术保护点】
一种维护软件的方法,其特征在于,包括受维护软件在运行过程中通过加密锁API接口调用连接在该受维护软件所在计算机上的加密锁,若返回结果正确,则受维护软件继续运行,若返回结果错误,则受维护软件终止运行;所述受维护软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码。

【技术特征摘要】
1.一种维护软件的方法,其特征在于,包括受维护软件在运行过程中通过加密锁API接口调用连接在该受维护软件所在计算机上的加密锁,若返回结果正确,则受维护软件继续运行,若返回结果错误,则受维护软件终止运行;所述受维护软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码。2.根据权利要求1所述的一种维护软件的方法,其特征在于,所述受维护软件中用于调用加密锁的代码包括为调用所述加密锁准备输入数据的代码和对所述加密锁的返回结果进行处理的代码。3.根据权利要求1所述的一种维护软件的方法,其特征在于,所述加密锁API接口的代码是在加密锁API接口被交付用户之前对加密...

【专利技术属性】
技术研发人员:董雄飞
申请(专利权)人:合肥民众亿兴软件开发有限公司
类型:发明
国别省市:安徽,34

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

1