一种通过硬件进行反调试的方法和装置的制作方法

文档序号:6440748阅读:277来源:国知局
专利名称:一种通过硬件进行反调试的方法和装置的制作方法
技术领域
本发明涉及软件版权版权保护领域,更具体地涉及一种保护软件的反调方法及装置。
背景技术
软件作为一种特殊的产品,由于其纯数字化的特征,从问世起就一直遭受盗版的困扰。盗版的存在不仅给软件开发者造成了巨大的损失,也极大阻碍了整个软件行业的发展。因此,几乎所有的软件都采取了相应的技术措施来避免软件遭受破解和盗版,其中最为有效的就是基于硬件的软件保护装置技术。基于硬件的软件保护装置是一种通过计算机接口(包括但不限于并口或者USB接口)连接到计算机主机上的硬件设备。该设备内部具有非易失性存储空间可供读写,通常还具有单片机或者微处理控制芯片等计算处理单元。软件开发者可以通过接口函数和软件保护装置进行数据交换(即对软件保护装置进行读写),来检查软件保护装置是否插在接口上;或者直接用软件保护装置附带的工具进行加密。这样,软件开发者可以在软件中设置多处软件锁,利用软件保护装置做为钥匙来打开这些锁;如果没插软件保护装置或软件保护装置不对应,软件将不能正常执行。此外,软件保护装置内部包含特定的功能,例如一部分存储空间、一些密码算法或者一些用户自定义的算法或者功能。在软件发行之前,软件开发者修改自己的软件代码,使得软件在运行过程中需要使用到软件保护装置内部的一些功能,这样软件离开软件保护装置之后就会无法运行,而软件保护装置作为一种硬件设备复制的难度较大,从而起到防止盗版软件非法传播的作用。当前市场上主要的软件保护装置包括:美国SafeNet公司的Sentinel Superpro>以色列Aladdin公司的Hasp HL、中国北京深思洛克数据保护中心的精锐IV、德国W1-Bu公司的WIBU-Key等。所有这些软件保护装置都提供了内置的存储空间、私有或公开的密码算法,当软件运行过程中可以调用这些功能来检验是否属于正版。其中北京深思洛克数据保护中心的精锐IV于2002年上市,其特点是采用了智能卡芯片作为硬件的基础,而且支持用户将自己定义的功能写入到软件保护装置内部,甚至可以直接将软件的部分功能移植到软件保护装置内部完成,从而大大提高了软件被盗版的难度,通常称这种将自己定义的功能或者软件的部分功能移植到软件保护装置内部的技术为代码移植。北京深思洛克数据保护中心是本发明人的前身,现在对应网站为http://www.sense, com, cn/,其中详细公开了本发明人开发的精锐IV型软件保护装置的具体参数性能和工作原理。随着计算机技术普及与应用,计算机软件产业迅速发展起来,针对软件的各种攻击和未授权使用以及盗版复制等行为越来越多,软件安全成为保护知识产权的关键。目前的计算机软件基本上是以二进制代码形式发布的,攻击者通常利用静态反汇编工具或动态调试工具等逆向分析技术对软件可执行版本进行分析破解,通过寻找软件漏洞或抽取其核心算法等方式,对软件进行窜改进而窃取软件知识产权。软件逆向分析技术包括针对软件的反汇编技术和反编译技术两个部分。反汇编技术是把可执行的二进制机器码反汇编成为基本可读的汇编语言程序代码的方法,一般包含静态反汇编技术和动态反汇编技术。静态反汇编是把二进制代码一次性全部翻译为汇编代码,采用该技术时,处理二进制文件的耗时与二进制文件的大小成正比。动态反汇编是通过分析载入到反汇编器的二进制程序,捕捉运行特征指令,将其翻译为可读的汇编代码。反编译技术是把汇编程序进一步反编译为可读性更强的高级语言代码。现有技术中通常采用软件防窜改技术以及软件反调试技术(狭义上来分,软件防篡改技术是防止软件被恶意篡改,如果软件发现自己被恶意篡改,那么就执行对应的惩罚功能;软件反调试是对调试软件进行检测或者迷惑,使调试软件分析错误或者不能正常运行。广义而言,这两种技术都是针对调试行为的一种防范,也就是反调试)来抵抗各种非法使用。目前常用的软件防窜改技术以及软件反调试技术有:花指令、信息隐藏、文件校验、父进程检测、时间差等技术。花指令技术是指,通过生成特殊的汇编代码或无用的字节,使得调试程序在反汇编时候产生不正确汇编指令。常见的花指令技术是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令可利用各种jmp,call, ret,一些堆栈技巧,位置运算,等等。信息隐藏技术是指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是透明的。“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来实现,这些独立的模块彼此之间仅仅交换那些为了完成系统功能所必需的信息,而将那些自身的实现细节与数据“隐藏”起来。信息隐蔽为软件系统的修改、测试及以后的维护都带来好处。通过信息隐藏,可以定义和实施对模块的过程细节和局部数据结构的存取限制。参见图1,目前反调试技术的一种实现流程如下。受保护软件运行在计算机主机的系统当中。为了侦测系统中是否存在调试行为,受保护软件在开始启动时会检查是否存在有调试行为的进程。判断调试行为的方法具有很多种,各有优缺点。作为示例,这里采用判断父进程名称的方式来判断是否被调试软件调试。正常情况下,一个进程(指的是在系统中运行的可执行程序)需要它的父进程来启动。比如使用Windows系统时,在桌面上双击应用程序的图标(作为一个示例,这里的应用程序是腾讯公司的QQ.exe),此时QQ.exe程序便会启动起来,但是并没有看到父进程。其实双击QQ.exe时,只是通知Windows系统的Explorer, exe (可以狭义地理解为Windows桌面)要启动QQ.exe,剩下启动QQ.exe的工作都是由Explorer, exe完成的,实际上启动QQ.exe的是Explorer, exe,这个启动QQ.exe的Explorer, exe就是QQ.exe的父进程。当然,还可以通过其他形式启动应用程序,比如通过命令行。即,通过Windows的开始菜单执行“运行”,在打开输入框里面输入cmd命令,并点击确定,这时就会启动Windows的命令行程序cmd.exe ο在命令行里面输入mspaint并点击回车,这个时候Windows的画图板程序就会启动。同理在输入框中输入clac并点击回车,Windows的计算机器工具也会启动,这个时候是通过cmd.exe启动的画图板程序和计算器工具,此时它们的父进程不是Explorer, exe而是cmd.exe。调试程序的时候,通常是用调试软件来启动被调试的程序,方法可能与正常启动Windows程序不一样,但是都是同样的道理。通过调试软件启动被调试程序时,这个被调试的程序的父进程就不是Explorer, exe也不是cmd.exe,而是调试软件。判断一个程序的父进程是否是可信任的父进程(比如Explorer, exe, cmd.exe等)就可以判断一个程序是否被调试。如果判断出系统中不存在调试行为(这里指父进程是一个可信任的进程),则继续执行受保护软件中的其他功能模块,继续执行受保护软件的运行;如果判断出存在调试行为(指父进程是一个不可信任的进程),则受保护软件不再执行受保护软件中的其他功能模块,不再继续执行受保护软件的运行,退出该受保护软件。但是这些技术只是增加了解密者解密的复杂度,即便是使用非常复杂的反调试代码逻辑或者同时使用多个反调试代码逻辑,由于反调试的相关处理逻辑及其代码也是软件本身的一个部分(比如上面提到判断父进程的逻辑),因此与软件一样完全暴露在所运行的环境之中,直接面对解密者的调试与分析。一旦解密者正确分析出反调试的逻辑以后,解密者就会使反调试代码逻辑失效,使软件失去反调试代码逻辑的保护。在软件中添加反调试代码逻辑只是给解密者增加了一定的难度,在保护软件的同时也使反调试代码逻辑本身面对解密者。这样造成了软件本身及其反调试代码逻辑均容易被解密者破坏的问题。

发明内容
有鉴于此,本发明针对现有反调试技术直接面对解密者的这个缺点,提出一种利用硬件反调试的实现技术方法。通过将反调试代码逻辑移植在计算机主机系统外部的软件保护装置中,进而防止了反调试代码逻辑被随意反调试和随意修改,从而提高了解密者调试软件的难度,便于软件得到更好的保护。根据本发明的一个方面,提供一种通过软件保护装置防止对受保护软件进行调试的方法,所述软件保护装置是用于软件保护的硬件设备,包括微控制器单元、存储单元以及用于与计算机主机相连接的接口单元;所述方法包括步骤:步骤1:所述受保护软件收集关于操作系统环境的系统信息;步骤2:所述受保护软件将收集到的所述系统信息发送给所述软件保护装置;步骤3:所述软件保护装置接收到所述系统信息之后,利用所述系统信息判断所述受保护软件所运行的操作系统环境中是否存在调试行为;步骤4:如果存在调试行为,则所述软件保护装置禁止所述受保护软件正常运行。根据本发明的一个方面,所述软件保护装置中具有:通信模块,用于所述软件保护装置与计算机主机之间的通信;调试行为判断模块,用于判断所述受保护软件所运行的操作系统环境中是否存在调试行为;硬件惩罚模块,用于在判断出存在所述调试行为时,禁止所述受保护软件正常运行。根据本发明的一个方面,在步骤I之前,启动所述受保护软件中的系统信息收集模块;所述系统信息收集模块收集所述关于操作系统环境的系统信息。根据本发明的一个方面,所述通信模块采用的通信方式包括:串行接口通信、并行接口通信、1394接口通信、射频识别接口通信、无线局域网接口通信、通用串行总线接口通信、蓝牙接口通信、红外接口通信、W1-Fi接口通信、IS07816串行通信;
所述调试行为判断模块采用的判断方式包括:判断父进程、判断操作系统AP1、判断系统权限、判断正在运行程序的窗口名称、查找所述受保护软件运行的环境中的所有进程是否具有调试进程;查找特定进程的端口或者字段;还可以查找进程的PEB的BeingDebuged字段以及进程执行块EPR0CESS的DebugPort端口 ;调试行为判断方式有很多,不限于上面提到这些。所述硬件惩罚模块采用的硬件惩罚方式包括:所述软件保护装置的硬件锁死一定时间、所述软件保护装置的硬件完全锁死、所述软件保护装置的硬件返回随机数据。


图1:现有技术中未采用硬件形式的软件保护设备来保护软件反调试的示意图。图2:利用根据本发明一个具体实施方式
的硬件形式的软件保护设备来保护软件反调试的示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进行进一步详细说明。为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进行进一步详细说明。根据本发明的一个具体实施方式
,本发明中的软件保护装置(即图2中的安全硬件)为用于软件版权保护的硬件设备,包括微控制器单元(Micro Control Unit,下称MCU)、存储器以及用于与计算机主机相连接的接口模块。根据本发明的一个具体实施方式
,所述的存储器与MCU相连接,用于保存的数据。所述存储器包括但不限于非易失性存储器、易失性存储器。根据本发明的一个具体实施方式
,所述的接口模块与MCU相连接,负责MCU与计算机主机之间的通信。所述的接口模块包括但不限于串行接口、并行接口、1394接口、射频识别(RFID)接口、无线局域网接口(IEEE802.11接口等)、通用串行总线(USB)接口、蓝牙接口、红外接口、无线保真(W1-Fi)接口、ISO 7816串行等。根据本发明的一个具体实施方式
,所述MCU、存储器、接口模块也可以集成到同一个芯片中,由单一的芯片提供所有的功能。根据本发明的一个具体实施方式
,软件保护装置中的硬件包括:通信模块、调试行为判断模块、硬件惩罚模块。作为一种实施例,这些模块都是通过软件代码实现的,类似于Windows系统运行在计算机硬件上一样,所述多个模块运行在加密锁的硬件芯片上。当然,本领域的技术人员根据本发明所揭示和教导的内容,完全能够采用其它的方式(包括但不限于硬件、固件、软件的形式)来实现这些模块以完成类似的功能,或者对这些模块进行更进一步的合并、拆分、组合以实现类似的功能。总之,在此仅描述本发明的核心思想和具体实施例,并不意味着本发明的实施以及要求保护的范围仅受具体实施例的限制。其中,所述通信模块,用于安全硬件与计算机主机之间的通信。通信方式包括但不限于串行接口通信、并行接口通信、1394接口通信、射频识别(RFID)接口通信、无线局域网接口(IEEE802.11接口等)通信、通用串行总线(USB)接口通信、蓝牙接口通信、红外接口通信、无线保真(W1-Fi)接口通信、IS07816串行通信等。调试行为判断模块,用于判断受保护软件所运行的环境中是否有存在调试行为。判断方式包括但不限于判断父进程的方法、使用IsDebuggerPresent API (Windows系统 API)、使用 CheckRemoteDebuggerPresent API (Windows 系统 API)、判断SeDebugPrivilege (系统的调试权限属性)权限、判断正在运行程序的窗口名称、查找受保护软件运行的环境中的所有进程是否有调试进程等;所述调试行为判断模块采用的判断方式还可以:查找进程的PEB的BeingDebuged字段以及进程执行块EPR0CESS的DebugPort端口,调试行为判断方式有很多,不限于上面提到这些。。硬件惩罚模块,用于在发现受保护软件运行的环境存在调试行为时执行硬件惩罚。硬件惩罚方式包括但不限于硬件锁死一定时间、硬件彻底锁死、硬件返回随机数据等。本发明所提出的硬件反调试与现有反调试技术有本质的区别。首先,反调试的逻辑从被保护软件本身转移到了安全硬件(即软件保护装置)内部,采用更为复杂的硬件形式来保护软件,以防止其被反调试。其次,受保护软件正常运行需要依赖于安全硬件,因此受保护软件和安全硬件成为一个整体运行的计算系统。根据本发明的一个具体实施方式
,参考图2,软件保护过程和实施的方案如下:首先,受保护软件运行在计算机主机的系统当中。根据本发明的一个具体实施方式
,为了侦测系统中是否存在调试行为,受保护软件启动一个检查调试行为的线程,即图2中的“侦测线程”。根据本发明的另一个具体实施方式
,为了侦测系统中是否存在调试行为,也可以在受保护软件内部启动一个进程。启动进程或者线程的目的是启动与受保护软件并行的一段代码,用来进行调试行为的侦测。然后,该线程启动图2中的“系统信息收集模块”。该系统信息收集模块使用上面提到的方法来所进行系统信息的实时收集,比如上面提到的使用IsDebuggerPresentAPI (Windows 系统 API)、使用 CheckRemoteDebuggerPresent API (Windows 系统 API)、判断SeDebugPrivilege (系统的调试权限属性)权限、判断正在运行程序的窗口名称、查找受保护软件运行的环境中的所有进程是否有调试进程等。根据本发明的一个具体实施方式
,收集的信息包括但不限于上述的父进程名称、系统API IsDebuggerPresent的返回结果、系统SeDebugPrivilege (系统的调试权限属性)权限值,并将这些信息发送给安全硬件。安全硬件的通信模块接收到这些实时信息,再将这些信息发送给调试行为判断模块。调试行为判断模块对通信模块发送的的实时信息进行处理,根据预先设定的判断逻辑来判断受保护软件所运行的环境中是否存在调试软件。作为一种示例,可以对父进程的名称进行判断。比如,判断父进程的名称是不是Explorer, exe或者cmd.exe。此外,还可以判断API的返回值。比如,判断系统API IsDebuggerPresent的返回是TRUE还是FALSE等。当然,本领域的技术人员完全清楚,判断逻辑可以采用很多种方式,包括但不限于对父进程名称的判断以及对API返回值的判断。如果存在调试软件,比如父进程的名称不是可信任的,即不是Explorer, exe或者cmd.exe,或者系统API IsDebuggerPresent的返回值为TRUE,那么调试行为判断模块就将判断结果发送给安全硬件的硬件惩罚模块。安全硬件的硬件惩罚模块启动相应惩罚,比如安全硬件功能全不可用或者通过通信模块向受保护软件返回随机错误数据等。这时受保护软件就不能正常运行,达到了软件保护的目的。如果不存在调试软件,则安全硬件的功能正常执行,从而使软件功能正常执行。使用这种反调试技术后,破解者无法跟踪到安全硬件内部,也就无法获得硬件内部反调试的代码逻辑,从而保护了反调试代码逻辑的安全性。即便是破解者获得到了安全硬件内部的反调试代码逻辑,也无法更改硬件的反调试代码逻辑,从而达到了反调试代码逻辑的不可修改,这样就避免了在软件内部的反调试代码逻辑被跟踪和修改的缺点,增强了软件的安全程度。下面结合实施例,对本发明的技术内容进一步阐述。实施例1利用软件保护装置对计算机主机中运行的桌面提醒软件进行加密保护。其中桌面提醒软件是受保护软件,同时利用软件保护装置对其进行保护。对于本领域的技术人员而言,本实施例仅仅是为了说明本发明的应用简化实施例。本领域的技术人员很明显知道,实际的加密过程可能比这个例子复杂得多,但是其并未脱离本发明的具体思想。根据本发明的一个具体实施方式
,只将桌面提醒软件的提醒时间存储在安全硬件的内部,只有一个每日15:00进行例会提醒,本实施例中使用的反调试代码逻辑是判断父进程。通常情况下一个Windows程序的父进程名称是Explorer, exe或者cmd.exe,如果该程序被调试软件启动,那么该程序的父进程名称就是该调试软件,比如调试软件可采用OllyICE.exe (该软件是破解者使用的很常规的调试软件)。具体实现的步骤如下:一、根据受保护软件信息或者受保护软件的代码逻辑的重要程度确定受保护软件(即桌面提醒软件)需要保护的功能或者数据,比如每日提醒时间,每月提醒时间等。在本实施例中将把每日15:00的会议提醒这个信息存放到安全硬件内部,其存储格式为“DAY15:00 Meeting”。也就是说,在当受保护软件需要进行提醒判断时,其提醒时间必须从安全硬件中获得。二、受保护软件启动并启动上文提到的调试行为的侦测线程(或者进程,参见上文描述)。侦测线程的系统信息收集模块获得受保护软件的父进程名称,并将父进程名称通过受保护软件的通信模块发送给安全硬件。很明显,本领域的技术人员通过调用相应的系统API即可获得父进程名称,在此不再详述。三、安全硬件的通信模块接收到上述数据后,发送给调试行为判断模块。调试行为判断模块根据预先设定好的调试软件判断代码逻辑开始判断。如果所述受保护软件所在系统环境中有调试软件存在,并且是通过该调试软件启动的受保护软件,那么通信模块发送来的数据数是调试软件的名称,比如“OllyICE.exe"而不是“Explorer, exe”或者“cmd.exe”,这就说明该受保护软件正在被调试,那么调试行为判断模块将判断结果发送给硬件惩罚模块。硬件惩罚模块根据预先设定的惩罚逻辑进行惩罚,惩罚方式可以是发送错误数据,比如将受保护软件预先保存的“DAY 15:00 Meeting”数据返回成“DAY 24:00Meeting”,这样软件虽然能正常执行,但是功能是错误的。如果受保护软件所在系统环境没有调试器,那么安全硬件的通信模块接收的数据就是”Explorer, exe”或者”cmd.exe”,这样调试行为判断模块就会判断出没有调试行为,将该结果发送给硬件惩罚模块,硬件惩罚模块便不会启动硬件惩罚。
四、受保护软件在不存在调试软件或者不处于调试状态的情况下正常地向安全硬件提出功能请求,功能请求根据受保护软件的功能不同而不同。例如上面提到的将提醒信息“DAY 15:00 Meeting”存储到安全硬件内部。受保护软件想要获得存储的“DAY 15:00Meeting”数据时,就会向安全硬件发送功能请求,安全硬件就会将“DAY 15:00 Meeting”数据发送给受保护软件,作为提醒时间的判断依据。在整个软件运行过程当中,可以定时地向安全硬件发送系统实时数据,具体数据依赖于安全硬件内部的调试行为判断模块,信息包括但不限于父进程名称、系统APIIsDebuggerPresent的返回结果、SeDebugPrivilege (系统的调试权限属性)权限值,用于判断当前运行过程中是否存在调试行为,进一步的防止软件在运行过程中被调试。上述步骤二中在安全硬件内部只是通过判断父进程来判断是否存在调试行为。根据本发明的一个具体实施方式
,实际上可以将现有的大多数调试行为判断方法放到安全硬件内部,增加调试软件判断的正确性,比如判断父进程、系统API IsDebuggerPresent的返回结果、SeDebugPrivilege (系统的调试权限属性)权限值、查找受保护软件运行环境中危险进程等。另外,根据本发明的一个具体实施方式
,当判断出有调试行为存在的时候,安全硬件先不进行硬件惩罚,而是等待软件和安全硬件多次通信后再执行硬件惩罚。比如进行延时惩罚,即,发现调试行为以后不立即执行硬件惩罚,而是等过5分钟或者其他时间进行惩罚。这样使解密者难以判断硬件惩罚的依据。实施例2利用本发明中的软件保护装置保护一种绘图软件,该绘图软件中有许多重要的曲线计算公式。一、绘图软件是受保护软件,按照代码逻辑的重要程度确定受保护软件需要保护的功能或者数据。根据本发明的一种实施方式,将重要的曲线计算公式都移植到安全硬件内部。同时修改该绘图软件,使其能同安全硬件协作完成安全硬件内部的曲线公式的计算。二、绘图软件启动,同时启动调试行为侦测线程,侦测线程的系统信息收集模块将收集系统实时信息。根据本发明的一种实施方式,收集的是系统API IsDebuggerPresent的返回结果。并将系统API IsDebuggerPresent的返回结果通过通信模块发送给安全硬件。三、安全硬件的通信模块接收到绘图软件发送的系统实时信息以后,将该信息发送给安全硬件的调试行为判断模块,调试行为判断模块进行主机上的调试行为判断,即判断通信模块发送的实时信息是TRUE还是FALSE。如果发送的是TRUE,则表明主机上有调试软件正在调试受保护的绘图软件;如果为FALSE,表明主机上没有调试软件在调试受保护的绘图软件,然后将判断结果发送给硬件惩罚模块。四、硬件惩罚模块根据调试行为判断模块发送的判断结果决定是否进行硬件惩罚。根据本发明的一种实施方式,本实施例中采取的硬件惩罚措施是让移植在安全硬件内部的公式计算错误。比如,受保护的软件中需要计算加法的公式A:c = a+b,受保护的绘图软件将a和b通过通信模块发送给安全硬件,安全硬件根据公式A进行计算。如果没有硬件惩罚,则安全硬件会正常返回c = a+b,如果使用了硬件惩罚,安全硬件则会随机返回某个算法的结果,比如c = a*b, c = a-b, c = a/b等,并将c返回给受保护的绘图软件。很明显,上述具体实施例采用了文字说明的形式进行详细描述。本领域的技术人员根据现有的技术,完全能够采用多种编程语言以及类似的程序编写逻辑来实现其类似的功能。另外,上述各个具体实施方式
仅仅是用于举例说明本发明的发明构思,本发明的实现不局限于上述各种具体实施方式
。对于本领域的技术人员而言,完全可以将上述各个步骤进行更进一步的拆分、合并、变换、删除,从而实现本发明的核心构思。上述多种情况的变形是本领域的技术人员很容易想到的,因此上述举例仅仅是示意性说明,而无法涵盖软件保护领域的各种情况。本发明的核心构思是软件保护装置通过调用安全硬件中的调试行为判断模块来判断是否存在调试行为,并根据判断结果对受保护软件的执行进行控制和管理。因此,在此基础之上,其它各种调用顺序、处理顺序的变形均是很容易想到的,无需在本发明的说明书中进行穷尽式的描写。此外,对于判断出存在调试行为的情况下,安全硬件也可进行诸如发出报警或者停止工作等操作,从而提醒当前受保护软件受到调试。也就是说,一旦侦测出调试行为,安全硬件提醒方式可以有多种,这属于本领域的技术人员很容易想到的,无需在本发明的说明书中进行穷尽式的描写。以上所述包括有本发明的例子。当然,为了描述本发明的目的,描述每个可以想见的组件或方法的组合是不现实的,但是,本领域的技术人员会认识到,许多进一步的组合和轮换对本发明来说是可能的。因此,本发明旨在包含所有这样的落在所附权利要求书的精神和范围之内的变更、改进和变化。此外,以本说明书和权利要求书为限,术语“具有”类似于术语“包括”。
权利要求
1.一种通过软件保护装置防止对受保护软件进行调试的方法,所述软件保护装置是用于软件保护的硬件设备,包括微控制器单元、存储单元以及用于与计算机主机相连接的接口单元; 其特征在于,所述方法包括步骤: 步骤1:所述受保护软件收集关于操作系统环境的系统信息; 步骤2:所述受保护软件将收集到的所述系统信息发送给所述软件保护装置; 步骤3:所述软件保护装置接收到所述系统信息之后,利用所述系统信息判断所述受保护软件所运行的操作系统环境中是否存在调试行为; 步骤4:如果存在调试行为,则所述软件保护装置禁止所述受保护软件正常运行。
2.根据权利要求1的通过软件保护装置防止对受保护软件进行调试的方法,其特征在于, 所述软件保护装置中具有: 通信模块,用于所述软件保护装置与计算机主机之间的通信; 调试行为判断模块,用于判断所述受保护软件所运行的操作系统环境中是否存在调试行为; 硬件惩罚模块,用于在判断出存在所述调试行为时,禁止所述受保护软件正常运行。
3.根据权利要求1、2的通过软件保护装置防止对受保护软件进行调试的方法,其特征在于, 在步骤I之前,启动所述受保护软件中的系统信息收集模块; 所述系统信息收集模块收集所述关于操作系统环境的系统信息。
4.根据权利要求1-3的通过软件保护装置防止对受保护软件进行调试的方法,其特征在于, 所述通信模块采用的通信方式包括:串行接口通信、并行接口通信、1394接口通信、射频识别接口通信、无线局域网接口通信、通用串行总线接口通信、蓝牙接口通信、红外接口通信、W1-Fi接口通信、IS07816串行通信; 所述调试行为判断模块采用的判断方式至少包括:判断父进程、判断操作系统AP1、判断系统权限、判断正在运行程序的窗口名称、查找所述受保护软件运行的环境中的所有进程是否具有调试进程、查找特定进程的端口或者字段; 所述硬件惩罚模块采用的硬件惩罚方式包括:所述软件保护装置的硬件锁死一定时间、所述软件保护装置的硬件完全锁死、所述软件保护装置的硬件返回随机数据。
全文摘要
本发明公开了一种通过硬件反调试对软件进行保护的技术方法和实现装置,属于软件版权保护领域。包括反调试过程中需要依赖于外部的硬件处理单元,硬件处理单元中所包含的功能是用来判断受保护软件所在环境是否存在调试软件,这样可以防止调试软件判断逻辑被跟踪且被而已修改。
文档编号G06F21/14GK103164643SQ20111040972
公开日2013年6月19日 申请日期2011年12月8日 优先权日2011年12月8日
发明者孙吉平, 韩勇 申请人:北京深思洛克软件技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1