一种通过硬件进行反调试的方法和装置制造方法及图纸

技术编号:8834498 阅读:230 留言:0更新日期:2013-06-22 20:39
本发明专利技术公开了一种通过硬件反调试对软件进行保护的技术方法和实现装置,属于软件版权保护领域。包括:反调试过程中需要依赖于外部的硬件处理单元,硬件处理单元中所包含的功能是用来判断受保护软件所在环境是否存在调试软件,这样可以防止调试软件判断逻辑被跟踪且被而已修改。

【技术实现步骤摘要】

本专利技术涉及软件版权版权保护领域,更具体地涉及一种保护软件的反调方法及装置。
技术介绍
软件作为一种特殊的产品,由于其纯数字化的特征,从问世起就一直遭受盗版的困扰。盗版的存在不仅给软件开发者造成了巨大的损失,也极大阻碍了整个软件行业的发展。因此,几乎所有的软件都采取了相应的技术措施来避免软件遭受破解和盗版,其中最为有效的就是基于硬件的软件保护装置技术。基于硬件的软件保护装置是一种通过计算机接口(包括但不限于并口或者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:如果存在调试行为,则所述软件保护装置禁止所述受保护软件正常运行。

【技术特征摘要】
1.一种通过软件保护装置防止对受保护软件进行调试的方法,所述软件保护装置是用于软件保护的硬件设备,包括微控制器单元、存储单元以及用于与计算机主机相连接的接口单元; 其特征在于,所述方法包括步骤: 步骤1:所述受保护软件收集关于操作系统环境的系统信息; 步骤2:所述受保护软件将收集到的所述系统信息发送给所述软件保护装置; 步骤3:所述软件保护装置接收到所述系统信息之后,利用所述系统信息判断所述受保护软件所运行的操作系统环境中是否存在调试行为; 步骤4:如果存在调试行为,则所述软件保护装置禁止所述受保护软件正常运行。2.根据权利要求1的通过软件保护装置防止对受保护软件进行调试的方法,其特征在于, 所述软件保护装置中具有: 通信模块,用于所述软件保护装置与计算机主机之间的通信; 调试行为判断模块,用于判断所述受保护软件所运行的操作系统环境中是否存在调试行为; 硬件惩罚模块,用于在判断出存在所述调试行为时,禁止所述受保护软件正常运行。...

【专利技术属性】
技术研发人员:孙吉平韩勇
申请(专利权)人:北京深思洛克软件技术股份有限公司
类型:发明
国别省市:

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

1