CN105653908B - 一种隐式反调试保护方法 - Google Patents
一种隐式反调试保护方法 Download PDFInfo
- Publication number
- CN105653908B CN105653908B CN201511025912.5A CN201511025912A CN105653908B CN 105653908 B CN105653908 B CN 105653908B CN 201511025912 A CN201511025912 A CN 201511025912A CN 105653908 B CN105653908 B CN 105653908B
- Authority
- CN
- China
- Prior art keywords
- program
- debug
- protected
- encryption
- variable
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 230000001681 protective effect Effects 0.000 abstract description 8
- 230000008901 benefit Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000037213 diet Effects 0.000 description 1
- 235000005911 diet Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001960 triggered effect Effects 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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Abstract
本发明公开了一种隐式反调试保护方法,属于计算机软件安全领域。所述发明包括选取待保护程序中的程序变量,确定与待保护程序对应的反调试程序,选取反调试程序的关键值,结合反调试程序的关键值对程序变量进行加密,得到加密处理后的程序,执行加密处理后的程序,如果加密处理后的程序在被调试时出现异常,而当加密处理后的程序在未被调试时执行正常,则隐式反调试保护有效。通过使用获取到的关键值对程序变量进行加密的方式对待保护程序中的关键代码进行保护,加强了反调试代码的隐蔽性,提高了被检测出的难度,增大了逆向人员的工作量,最终使得反调试保护强度增强。
Description
技术领域
本发明属于计算机软件安全领域,特别涉及一种隐式反调试保护方法。
背景技术
当今软件已经深入到生活的方方面面,在人们的饮食、出行、交通等领域均扮演着越来越重要的角色。因此增强软件的防护能力已经成为重要的工作。
在现有技术中,为了防止破解者对软件进行破解,通常采用反调试的方式进行保护,但是破解者可以根据反调试API名称找到反调试保护软件的位置,进而修改跳转指令从而达到绕过反调试函数、最终去除反调试保护的效果。这里以API IsDebuggerPresent为例,对上述破解手段具体说明如下:
使用IsDebuggerPresent保护程序包括以下步骤:
步骤1:程序正常执行到检测点调用IsDebuggerPresent.
步骤2:IsDebuggerPresent判断是否有调试器存在并返回1(存在)或0(不存在).
步骤3:根据步骤2的结果跳向正常的执行函数或提示关闭函数,若不存在调试器则程序正常执行,若存在调试器则跳向程序出口,跳出程序。
针对如上保护方法,其破解方法为:使用IsDebuggerPresent的API名称定位到反调试代码的位置,破解者便可以看见反调试代码,只需要取消程序跳转便可以避过反调试检测,进一步便可对程序进行逆向分析。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
针对上述破解手段,目前尚没有有效的解决办法,这样会使得反调试保护方法形同虚设,使得软件得不到有效保护,进而令人们的财产安全处于危险境地。
发明内容
为了解决现有技术的问题,本发明提供了一种隐式反调试保护方法,所述隐式反调试保护方法,包括:
选取待保护程序中的程序变量;
确定与所述待保护程序对应的反调试程序,选取所述反调试程序的关键值;
结合所述反调试程序的关键值对所述程序变量进行加密,得到加密处理后的程序;
执行所述加密处理后的程序;
如果所述加密处理后的程序在被调试时出现异常,而当所述加密处理后的程序在未被调试时执行正常,则所述隐式反调试保护有效。
可选的,所述程序变量为:
所述待保护程序的输入,或
所述待保护程序的输出,或
所述待保护程序的输入的变形,或
所述待保护程序的输出的变形。
可选的,所述关键值为:
所述反调试程序结果的检测值,或
影响所述反调试程序结果的变量。本发明提供的技术方案带来的有益效果是:
通过使用获取到的关键值对程序变量进行加密的方式对待保护程序中的关键代码进行保护,加强了反调试代码的隐蔽性,提高了被检测出的难度,增大了逆向人员的工作量,最终使得反调试保护强度增强。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种固定装置的结构示意图。
具体实施方式
为使本发明的结构和优点更加清楚,下面将结合附图对本发明的结构作进一步地描述。
实施例一
本发明提供了一种隐式反调试保护方法,所述隐式反调试保护方法,如图所示,该方法包括:
101、选取待保护程序中的程序变量。
102、确定与所述待保护程序对应的反调试程序,选取所述反调试程序的关键值。
103、结合所述反调试程序的关键值对所述程序变量进行加密,得到加密处理后的程序。
104、执行所述加密处理后的程序。
105、如果所述加密处理后的程序在被调试时出现异常,而当所述加密处理后的程序在未被调试时执行正常,则所述隐式反调试保护有效。
在实施中,为了解决现有技术中对程序逆向保护不足的缺陷,本发明提出了一种隐式反调试保护方法,主要思想上是从待保护程序中提取程序变量,从与待保护程序对应的反调试程序中选取关键值,使用获取到的关键值对程序变量进行加密,根据加密后的程序变量得到加密处理后的程序。在对加密处理后的程序进行调试时出现了执行异常,而对加密处理后的程序不进行调试时却正常执行,则说明该隐式反调试是有效的。
为了便于对本发明中的技术方案的理解,这里提供了一个代码示例,同时附有代码的解释说明,如下:
如下是一段实现5的N次方的汇编代码:
现选用IsDebuggerPresent方法及隐式反调试保护对其进行保护。IsDebuggerPresent普通保护方法为在主程序关键函数前加入反调试,其伪代码如下,
上述代码的用途是求3的5次方。其中加入IsDebuggerPresent API来进行反调试。选取待保护程序中的的3和5作为待保护程序中的程序变量,选取反调试程序IsDebuggerPresent中的返回值为反调试的关键值。
在原程序中,A=3,B=5,结果=A的B次方即3的5次方。
加入反调试后,A=3,B=5,IsDebuggerPresent用于判断是否被调试,
如果被触发调试,则结束程序或者因变量赋值发生变化得到异常结果;
如果触发调试,则结果=A的B次方即3的5次方。
在加入隐式反调试后,A=3,B=5,取反调试位的值,这里选取的是位于PEB中的BEINGDEBUGGED标志位(值为0或1,0表示未调试1表示调试),通过令“B=B+反调试标志位的值”的方式对程序变量B进行加密,若程序未被调试则程序中的变量值正常,若程序被调试则程序中的值改变不能得到正常结果。执行完成获取结果应该为A的B次方对应的数值,若未被调试则返回正常结果3的5次方,若被调试则返回错误结果这里是3的6次方。
如果处于调试状态则al值为1,5的N次方的指数将会被加1,运算结果将出现错误。如果未被调试al值为0,5的N次方的指数将被加上0,对程序并无影响。
综上可知若程序被调试则程序执行的结果会出现异常,若未被调试,则程序正常执行。由此可见,反调试代码更为隐蔽,程序关键代码得以保护;与一般的反调试相比,隐式反调试与程序中关键代码结合,更难被检测出来,且其触发周期更长,这样就增大了逆向人员的工作量,从而使得反调试保护强度大大增强。
值得注意的是,本实施例中给予反调试程序的关键值对程序变量进行加密的方式出于便于理解的方式,仅选取了“B=B+反调试标志位的值”的方式,其实在实际操作中,往往选取更为复杂的加密方式对待保护程序中的程序变量进行加密处理,随着加密方式难度的增加,本方法中隐式反调试的保护性也就越强。上述隐式反调试并未直接调用IsDebuggerPresent API,且省去了判断语句这样能够增加了反调试的隐蔽性。
本发明提供了一种隐式反调试保护方法,包括选取待保护程序中的程序变量,确定与待保护程序对应的反调试程序,选取反调试程序的关键值,结合反调试程序的关键值对程序变量进行加密,得到加密处理后的程序,执行加密处理后的程序,如果加密处理后的程序在被调试时出现异常,而当加密处理后的程序在未被调试时执行正常,则隐式反调试保护有效。通过使用获取到的关键值对程序变量进行加密的方式对待保护程序中的关键代码进行保护,加强了反调试代码的隐蔽性,提高了被检测出的难度,增大了逆向人员的工作量,最终使得反调试保护强度增强。
可选的,所述程序变量为:
所述待保护程序的输入,或
所述待保护程序的输出,或
所述待保护程序的输入的变形,或
所述待保护程序的输出的变形。
在实施中,本方法中被加密的程序变量可以为待保护程序的输入、输出,以及输入、输出的变形等多种形式,以便于实现对待保护程序的全面保护。
可选的,所述关键值为:
所述反调试程序结果的检测值,或
影响所述反调试程序结果的变量。
在实施中,选取的关键值可以为反调试程序结果的检测值或者是影响反调试程序结果的变量(即标志位的地址,基于时序检测反跳的时间差等),通过扩大选取关键值的范围,提高了攻击者的检测难度,增强了隐式反调试方法的保护性。
本发明提供了一种隐式反调试保护方法,包括选取待保护程序中的程序变量,确定与待保护程序对应的反调试程序,选取反调试程序的关键值,结合反调试程序的关键值对程序变量进行加密,得到加密处理后的程序,执行加密处理后的程序,如果加密处理后的程序在被调试时出现异常,而当加密处理后的程序在未被调试时执行正常,则隐式反调试保护有效。通过使用获取到的关键值对程序变量进行加密的方式对待保护程序中的关键代码进行保护,加强了反调试代码的隐蔽性,提高了被检测出的难度,增大了逆向人员的工作量,最终使得反调试保护强度增强。
需要说明的是:上述实施例提供的隐式反调试保护方法进行代码保护的实施例,仅作为该隐式反调试保护方法在实际应用中的说明,还可以根据实际需要而将上述隐式反调试保护方法在其他应用场景中使用,其具体实现过程类似于上述实施例,这里不再赘述。
上述实施例中的各个序号仅仅为了描述,不代表各部件的组装或使用过程中的先后顺序。
以上所述仅为本发明的实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种隐式反调试保护方法,其特征在于,所述隐式反调试保护方法,包括:
选取待保护程序中的程序变量;
确定与所述待保护程序对应的反调试程序,选取所述反调试程序的关键值;
结合所述反调试程序的关键值对所述程序变量进行加密,得到加密处理后的程序变量,即得到加密处理后的程序;
执行所述加密处理后的程序;
如果所述加密处理后的程序在被调试时出现异常,而当所述加密处理后的程序在未被调试时执行正常,则所述隐式反调试保护有效;
其中,所述关键值为:
所述反调试程序结果的检测值,或
影响所述反调试程序结果的变量。
2.根据权利要求1所述的隐式反调试保护方法,其特征在于,所述程序变量为:
所述待保护程序的输入,或
所述待保护程序的输出,或
所述待保护程序的输入的变形,或
所述待保护程序的输出的变形。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511025912.5A CN105653908B (zh) | 2015-12-31 | 2015-12-31 | 一种隐式反调试保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511025912.5A CN105653908B (zh) | 2015-12-31 | 2015-12-31 | 一种隐式反调试保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105653908A CN105653908A (zh) | 2016-06-08 |
CN105653908B true CN105653908B (zh) | 2018-12-25 |
Family
ID=56490395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511025912.5A Expired - Fee Related CN105653908B (zh) | 2015-12-31 | 2015-12-31 | 一种隐式反调试保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105653908B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106096404B (zh) * | 2016-08-18 | 2019-05-21 | 北京深思数盾科技股份有限公司 | 一种数据保护方法及系统 |
US11409635B2 (en) | 2019-08-23 | 2022-08-09 | Raytheon Company | Hacker-resistant anti-debug system |
CN110865630B (zh) * | 2019-11-14 | 2022-07-05 | 深圳供电局有限公司 | 智能变电站内置程序的验收方法和系统 |
CN111309444B (zh) * | 2020-03-04 | 2023-12-15 | 北京奇艺世纪科技有限公司 | 利用进程虚拟机反调试的方法、装置、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2023248A1 (en) * | 2006-04-24 | 2009-02-11 | Panasonic Corporation | Data processing device, method, program, integrated circuit, and program generating device |
CN103116714A (zh) * | 2013-03-01 | 2013-05-22 | 中标软件有限公司 | 一种Windows平台可执行文件双进程保护方法 |
CN103164643A (zh) * | 2011-12-08 | 2013-06-19 | 北京深思洛克软件技术股份有限公司 | 一种通过硬件进行反调试的方法和装置 |
-
2015
- 2015-12-31 CN CN201511025912.5A patent/CN105653908B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2023248A1 (en) * | 2006-04-24 | 2009-02-11 | Panasonic Corporation | Data processing device, method, program, integrated circuit, and program generating device |
CN103164643A (zh) * | 2011-12-08 | 2013-06-19 | 北京深思洛克软件技术股份有限公司 | 一种通过硬件进行反调试的方法和装置 |
CN103116714A (zh) * | 2013-03-01 | 2013-05-22 | 中标软件有限公司 | 一种Windows平台可执行文件双进程保护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105653908A (zh) | 2016-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653908B (zh) | 一种隐式反调试保护方法 | |
Eldib et al. | Formal verification of software countermeasures against side-channel attacks | |
Abraham et al. | GroddDroid: a gorilla for triggering malicious behaviors | |
KR20100010749A (ko) | 난독화된 악성 웹페이지 탐지 방법 및 장치 | |
CN103560877B (zh) | 攻击密钥的方法及装置 | |
CN106611122A (zh) | 基于虚拟执行的未知恶意程序离线检测系统 | |
CN110866255B (zh) | 一种智能合约漏洞检测方法 | |
CN102012988A (zh) | 自动二进制恶意代码行为分析方法 | |
Almomani et al. | An efficient machine learning-based approach for android v. 11 ransomware detection | |
Song et al. | Appis: Protect android apps against runtime repackaging attacks | |
CN109711163A (zh) | 基于api调用序列的安卓恶意软件检测方法 | |
CN105245495A (zh) | 一种基于相似性匹配恶意shellcode快速检测方法 | |
You et al. | Android implicit information flow demystified | |
Ollivier et al. | Obfuscation: where are we in anti-DSE protections?(a first attempt) | |
CN106682493B (zh) | 一种防止进程被恶意结束的方法、装置及电子设备 | |
NZ533028A (en) | Method of introducing digital signature into software | |
Wang et al. | Branch obfuscation using code mobility and signal | |
CN113779578A (zh) | 移动端应用的智能混淆方法和系统 | |
Jana et al. | Code-based analysis approach to detect and prevent SQL injection attacks | |
US20240104206A1 (en) | Method and apparatus for detecting maliciousness of non-portable executable file by changing executing flow of application program | |
Thevenon et al. | iMRC: Integrated monitoring & recovery component, a solution to guarantee the security of embedded systems | |
CN104199778B (zh) | 测试软件注册算法错误的方法 | |
US10599845B2 (en) | Malicious code deactivating apparatus and method of operating the same | |
CN106980564A (zh) | 基于内核hook的进程行为监控方法 | |
CN106709359A (zh) | 一种Android应用漏洞检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181225 Termination date: 20201231 |
|
CF01 | Termination of patent right due to non-payment of annual fee |