CN105653908B - 一种隐式反调试保护方法 - Google Patents

一种隐式反调试保护方法 Download PDF

Info

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
Application number
CN201511025912.5A
Other languages
English (en)
Other versions
CN105653908A (zh
Inventor
周祥
汤战勇
房鼎益
张洁
叶贵鑫
张恒
李政桥
刘方圆
吕留东
陈晓江
龚晓庆
陈锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Northwest University
Original Assignee
Northwest University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Northwest University filed Critical Northwest University
Priority to CN201511025912.5A priority Critical patent/CN105653908B/zh
Publication of CN105653908A publication Critical patent/CN105653908A/zh
Application granted granted Critical
Publication of CN105653908B publication Critical patent/CN105653908B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting 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所述的隐式反调试保护方法,其特征在于,所述程序变量为:
所述待保护程序的输入,或
所述待保护程序的输出,或
所述待保护程序的输入的变形,或
所述待保护程序的输出的变形。
CN201511025912.5A 2015-12-31 2015-12-31 一种隐式反调试保护方法 Expired - Fee Related CN105653908B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 北京深思洛克软件技术股份有限公司 一种通过硬件进行反调试的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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