CN107423582A - 一种维护软件的方法 - Google Patents
一种维护软件的方法 Download PDFInfo
- Publication number
- CN107423582A CN107423582A CN201710211758.3A CN201710211758A CN107423582A CN 107423582 A CN107423582 A CN 107423582A CN 201710211758 A CN201710211758 A CN 201710211758A CN 107423582 A CN107423582 A CN 107423582A
- Authority
- CN
- China
- Prior art keywords
- software
- encryption lock
- code
- safeguarding
- safeguarded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000013519 translation Methods 0.000 claims abstract description 20
- 230000008569 process Effects 0.000 claims abstract description 5
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 230000003993 interaction Effects 0.000 abstract description 3
- 230000009466 transformation Effects 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000002834 transmittance Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000686 essence Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Remote Sensing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Radar, Positioning & Navigation (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种维护软件的方法,包括受维护软件在运行过程中通过加密锁API接口调用连接在该受维护软件所在计算机上的加密锁,若返回结果正确,则受维护软件继续运行,若返回结果错误,则受维护软件终止运行,该受维护软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码,本发明的软件维护方法中,受维护软件中用于调用加密锁的代码和加密锁API接口的代码已被转换成破解者难以分析的代码,使破解者无法跟踪受维护软件调用加密锁时的输入数据和输出数据,因而使受维护软件和加密锁API接口之间的数据交互得到了维护,提高了基于加密锁的软件维护方案的安全强度。
Description
技术领域
本发明涉及软件领域,尤其是涉及一种维护软件的方法。
背景技术
软件由于其纯数字化的特征,一直遭受盗版的困扰,而使用加密锁是实现商业软件版权维护的一种主要手段。其中,加密锁是一个连接在计算机的并口或者通用串行总线(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_buff
PUSHoffset_T_buff
CALL?LIV_encrypt?
这三行原始代码用于通过加密锁API接口的LIV_Encrypt函数调用加密锁计算C1;PUSHoffset_C1_buff
PUSHOffset_C_buff
CALL?MEMCMP?
JNZ?EXIT?
这四行原始代码用于比较C和C1。
根据上述代码,破解者能够很容易地找到CALL?LIV_encrypt?指令并设置断点,并跟踪参数传递过程获得LIV_encrypt函数的输入数据和输出数据,最终通过模拟LIV_encrypt函数来直接返回明文T对应的输出C,欺骗受维护软件。
结合图1所示,在本实施例提供的软件的维护方法中,用户使用的软件是经过指令变形的软件,所述软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码,对所述原始代码进行变换的方法是:对所述原始代码进行指令变形。经过变换后,受维护软件中用于调用加密锁的新代码可能是:
PUSHoffset_C1_buff
PUSHoffset_T_buff
PUSHOFFSET_?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_buff
PUSHOffset_C_buff
CALL?MEMCMP?
JNZ?EXIT?
这四行原始代码用于比较C和C1。
根据上述代码,破解者能够很容易地找到CALL?LIV_encrypt?指令并设置断点,并跟踪参数传递过程获得LIV_encrypt函数的输入数据和输出数据,最终通过模拟LIV_encrypt函数来直接返回明文T对应的输出C,欺骗受维护软件。
结合图1所示,在本实施例提供的软件的维护方法中,用户使用的软件是经过虚拟机代码变换的软件,所述受维护软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码,对所述原始代码进行变换的方法是:将所述原始代码变换为虚拟机代码,使分析反编译后的代码和破解变得极为困难,甚至无法设置有效的断点。
经过这样的处理之后,破解者想要分析受维护软件和加密锁之间的交互关系,则必须要先将转换后的代码完全分析出来才能进行,这就就增加了整个维护方案的安全性。
其中,所述受维护软件中为调用所述加密锁准备输入数据的代码和对所述加密锁的返回结果进行处理的代码是进行代码变换的重点。
此外,为了进一步提高本实施例提供的软件的维护方法的安全性,所述加密锁API接口也是经过虚拟机代码变换的加密锁API接口,所述加密锁API接口的代码是在加密锁API接口被交付用户之前对加密锁API接口的原始代码进行变换生成的新代码,尤其是加密锁API接口的入口部分的代码,通过该变换使受维护软件和加密锁API之间的界限难以区分。
最后,对所述受维护软件中用于调用加密锁的原始代码和所述加密锁API接口的原始代码进行变换的规则是动态的,每次所述变换生成的新代码均不相同。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的维护范围之内。
Claims (7)
1.一种维护软件的方法,其特征在于,包括受维护软件在运行过程中通过加密锁API接口调用连接在该受维护软件所在计算机上的加密锁,若返回结果正确,则受维护软件继续运行,若返回结果错误,则受维护软件终止运行;
所述受维护软件中用于调用加密锁的代码是在软件被交付用户之前对该软件中用于调用加密锁的原始代码进行变换生成的新代码。
2.根据权利要求1所述的一种维护软件的方法,其特征在于,所述受维护软件中用于调用加密锁的代码包括为调用所述加密锁准备输入数据的代码和对所述加密锁的返回结果进行处理的代码。
3.根据权利要求1所述的一种维护软件的方法,其特征在于,所述加密锁API接口的代码是在加密锁API接口被交付用户之前对加密锁API接口的原始代码进行变换生成的新代码。
4.根据权利要求1所述的一种维护软件的方法,其特征在于,对所述原始代码进行变换的方法是:将所述原始代码进行指令变形或将所述原始代码变换为虚拟机代码。
5.根据权利要求1所述的一种维护软件的方法,其特征在于,所述加密锁API接口的代码包括加密锁API接口的入口代码。
6.根据权利要求1所述的一种维护软件的方法,其特征在于,对所述加密锁API接口的原始代码进行变换的规则是动态的,每次所述变换生成的新代码均不相同。
7.根据权利要求1所述的一种维护软件的方法,其特征在于,对所述受维护软件中用于调用加密锁的原始代码进行变换的规则是动态的,每次所述变换生成的新代码均不相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710211758.3A CN107423582A (zh) | 2017-03-31 | 2017-03-31 | 一种维护软件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710211758.3A CN107423582A (zh) | 2017-03-31 | 2017-03-31 | 一种维护软件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107423582A true CN107423582A (zh) | 2017-12-01 |
Family
ID=60423869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710211758.3A Withdrawn CN107423582A (zh) | 2017-03-31 | 2017-03-31 | 一种维护软件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107423582A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136052A (zh) * | 2011-04-29 | 2011-07-27 | 北京深思洛克软件技术股份有限公司 | 一种软件的保护方法 |
CN103186729A (zh) * | 2013-03-26 | 2013-07-03 | 北京深思数盾科技有限公司 | 利用加密锁对软件进行保护的方法及加密锁 |
-
2017
- 2017-03-31 CN CN201710211758.3A patent/CN107423582A/zh not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136052A (zh) * | 2011-04-29 | 2011-07-27 | 北京深思洛克软件技术股份有限公司 | 一种软件的保护方法 |
CN103186729A (zh) * | 2013-03-26 | 2013-07-03 | 北京深思数盾科技有限公司 | 利用加密锁对软件进行保护的方法及加密锁 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7346780B2 (en) | Integrity ordainment and ascertainment of computer-executable instructions | |
US8984272B2 (en) | Information processing apparatus, secure module, information processing method, and computer product | |
CN103218549B (zh) | 一种Java源代码加解密的方法及装置 | |
CN101719210B (zh) | 基于linux平台数字版权管理的文件使用控制方法 | |
CN102136052A (zh) | 一种软件的保护方法 | |
US20120042380A1 (en) | Secure module and information processing apparatus | |
Diao et al. | Evading android runtime analysis through detecting programmed interactions | |
CN103903043B (zh) | 一种智能卡三位一体抗侧信道攻击防护方法和系统 | |
TW201539247A (zh) | 密碼輸入與確認方法及其系統 | |
TWI759827B (zh) | 異構處理器透過開放式連接器進行具有遠距認證及資訊獨立的可信運算系統及方法 | |
CN109255259B (zh) | 一种高安全加解密运算能力扩展方法及系统 | |
WO2017161569A1 (zh) | 访问控制的方法、装置和系统 | |
CN103116715A (zh) | Windows平台可执行文件API延迟导入保护方法 | |
CN113722683A (zh) | 模型保护方法、装置、设备、系统以及存储介质 | |
CN103514405B (zh) | 一种缓冲区溢出的检测方法及系统 | |
CN105930728A (zh) | 一种应用审查方法及装置 | |
US6934850B2 (en) | Program creation method and program execution method | |
CN105184119B (zh) | 一种软件的安全保护方法 | |
CN109325322B (zh) | 用于嵌入式平台的软件知识产权保护系统和方法 | |
TWI467409B (zh) | 加密狗裝置及其軟體保護方法 | |
CN104239778B (zh) | 基于Android系统的应用的加密启动方法 | |
CN107423582A (zh) | 一种维护软件的方法 | |
CN106682470A (zh) | 基于加密指纹信息的指纹识别系统、终端设备及方法 | |
US9760699B2 (en) | User authentication | |
CN109190407B (zh) | 一种高性能加解密运算能力扩展方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20171201 |