保护软件的方法和安全组件
技术领域
本申请涉及软件保护,尤其涉及一种保护软件的方法和安全组件。
背景技术
软件开发商发布软件后,经常被盗版问题困扰。在软件领域,所谓盗版软件,通常由盗版者对软件进行例如增加附加文件作为盗版补丁等方式的处理从而使消费者可以避开软件所有者相关的验证而使用该软件的功能,通常盗版软件无法提供合法的证书(版权证书),也不能为用户提供售后服务,然而消费者由于盗版软件的价格低廉或免费还是倾向于使用盗版软件。
由于软件(或软件产品)本身更新较快,软件开发商若采取司法手段来解决盗版问题,不但维权成本高,而且时效性差。因而,每当遇到盗版,软件开发商常用方法是自己花费大量人力和时间来对市面上所搜集的盗版问题进行分析,定制相应的加密方案,再重新发布软件来解决该盗版问题。通过这种方法来处理软件盗版问题的缺点在于:增加了软件开发商的开发成本,并且需要有专人来处理相应的工作,因此整体维权成本增加;由于上述安全相关的处理方法与软件本身的逻辑没有太大关系,普通的软件开发商通常并不擅长,在处理时显得力不从心,不能达到保证软件所有权不受侵犯的预期效果;每当发生软件被盗版的情况,需要重新发布软件的版本,既耗时又费力。
当前,为了保护软件的版权,已经提出了一些解决方案。例如,通过加壳程序实现对目标程序的处理,或者调用提供保护功能的模块的软件开发工具包(SDK)接口等,通过这样的方式,或者容易被杀毒软件误报病毒,或者使用起来不够便利。
需要一种能够在不提高开发成本的同时,又达到对目标软件进行保护的目的的软件保护方法和系统。
发明内容
为了提高软件所有权的保护力度并缓解软件开发商在保护软件所有权方面的压力,本发明提供了一种保护软件的方法、安全组件和保护软件的系统。
根据本发明的一个方面,提供了一种保护软件的方法,该方法包括:在任一软件启动时,根据预存的指定特征,检测该任一软件中是否包括具有指定特征的预定数据内容,如果有,确定该任一软件为目标软件并且对目标软件进行保护,其中,预定数据内容是预先植入目标软件中的。
优选地,目标软件中可以预先加入与预定数据内容关联的签名数据,该方法还可以包括:检测任一软件中是否包括签名数据和预定数据内容,如果是,利用预存的验签数据对签名数据进行验签,验签通过,则确定任一软件为目标软件。
优选地,对目标软件进行保护可以包括:根据预存的破解补丁特征,检测目标软件中是否包含破解补丁,如果是,则禁止目标软件的运行。
优选地,对目标软件进行保护可以包括:检测目标软件的运行环境中是否有恶意软件,如果有,则禁止目标软件的运行。
优选地,在确定任一软件为目标软件后,可以将指定特征添加到保护列表中;当目标软件停止运行时,将指定特征从保护列表中移除。
优选地,目标软件的具有指定特征的预定数据内容具有禁止优化标识。
根据本发明的另一方面,提供一种保护软件的安全组件,安全组件可以包括:存储单元,其预存有指定特征;处理单元,其配置为在任一软件启动时,根据预存的指定特征,检测该任一软件中是否包括具有指定特征的数据内容,如果有,则确定该任一软件为目标软件并且对目标软件进行保护,上述的预定数据内容可以是预先植入目标软件中的。
优选地,处理单元可以配置为根据预存的破解补丁特征,检测目标软件中是否包含破解补丁,如果是,则禁止目标软件的运行。
优选地,处理单元可以配置为检测目标软件的运行环境中是否有恶意软件,如果有,则禁止目标软件的运行。
优选地,存储单元还可以预先存储有预定数据内容关联的验签数据;并且处理单元还配置为检测任一软件中是否包括签名数据和预定数据内容,如果是,利用验签数据对签名数据进行验签,验签通过则确定该任一软件为目标软件。
优选地,处理单元还可以配置为在确定任一软件为目标软件后,将指定特征添加到保护列表中。
优选地,处理单元还可以配置为当目标软件停止运行时,将指定特征从保护列表中移除。
根据本发明的上述方面所提供的保护软件的方法和安全组件,本发明实现了,在不增加软件开发商的开发成本的情况下,在很大程度上以灵活、便利的方式提高了软件安全性,有效保护目标软件。
附图说明
附图说明了本文描述的原理的各种示例,并且是本说明书的一部分。附图应当以示例而非限制的方式来理解,其中:
图1是说明本发明的实施例的原理的示意图;
图2是根据本发明的一个实施例中实现软件保护系统的计算系统的结构示意图;
图3是根据本发明的实施例的安全组件的结构示意图;
图4是根据本发明的一个实施例的由安全组件执行的软件保护方法的步骤的流程图;
图5是根据本发明的另一实施例的由安全组件执行的软件保护方法的步骤的流程图。
具体实施方式
下面将参考附图对本发明的各实施例进行详细说明。
图1是对根据本发明的实施例的原理进行大概说明的示意图。
如图1所示,首先,在原始目标软件中植入具有指定特征的预定数据内容(下文也称为特征数据),该特征数据用于标识目标软件,可以由软件开发商提供的工具生成,并且在反黑引擎或安全组件预先存储该特征数据在软件发布后,该包含特征数据的软件在启动运行时,用于实时监控软件启动的安全组件对启动的软件进行检测,如果检测识别到特征数据,则将该启动运行的软件识别为目标软件,并且对目标软件进行实时保护。进而,安全组件检测目标软件中是否包含破解补丁从而确定该目标软件是否被盗版,如果被盗版,则禁止该目标软件的运行。另外还可以检测软件运行环境中是否有恶意软件,例如意图对目标软件进行破解分析的调试软件,如果有,则禁止目标软件的运行,从而达到防止盗版来实时保护目标软件的目的。如果安全组件在检测软件的过程中没有检测到特征数据,则确定该软件是普通软件,不对该普通软件进行实时保护。目标软件可以包括但不限于例如文字处理应用、电子表格应用、数据库应用、日历应用、幻灯片演示应用、绘图或计算机辅助应用、照片编辑应用等。
下面参考图2对根据本发明的一个实施例中的实现软件保护系统的计算系统的结构组成进行详细说明。如图2所示,用于实现软件保护系统的计算系统1包括系统存储器10、中央处理单元(CPU)20和输入/输出(I/O)组件40。系统存储器10中可存储操作系统(OS)以及多个程序模块和数据文件。程序模块可以是例如I/O管理器、其他实用程序和应用程序,比如本文所提到的任一软件、目标软件等。计算系统1可以包括台式计算机、笔记本电脑、平板设备、移动计算设备以及任何类型的终端设备。
此外,用于实现软件保护系统的计算系统包括安全组件30,安全组件30可以是由软件保护商提供的一种用来对软件进行保护的组件,它可以与软件开发商无直接关联。根据本公开的一个实施例,将安全组件30与目标软件进行绑定以便能对目标软件进行实时监控和保护。具体地,如图3所示,安全组件30包括存储单元31和处理单元32。预先在目标软件的源程序中植入具有指定特征的预定数据内容。该具有指定特征的预定数据内容(下文也称为特征数据)可以由软件保护商提供的专用工具来生成。或者,具有指定特征的预定数据内容也可以由目标软件的某程序模块来生成。同时,防止编译器对该特征数据进行优化,比如,对该特征数据设置禁止优化的标记。可采取任何方式实现这点,只要能够防止编译器对该特征数据进行优化即可。
根据一个实施例,将目标软件与安全组件30同时发布。并且,在计算系统1的操作系统中安装目标软件时,自动检测计算系统1中是否已经安装了安全组件。如果已经安装了安全组件30且该安全组件30是最新版本,则不再安装安全组件。如果未检测到安全组件或所检测到的安全组件不是最新版本,则在安装目标软件的同时也自动安装安全组件30。通过这种设置,能够确保在目标软件安装时,安全组件30也能够同时安装,并随着目标软件的启动而启动并实时运行于操作系统中,来起到对目标软件进行实时监控和保护的作用。
无论采取哪种方式生成,上述的特征数据需预先存储在安全组件的存储单元31中。除了预先植入目标软件中的特征数据之外,存储单元31还存储用来识别目标软件是否发生盗版的破解补丁。
在软件的程序启动时,安全组件监控OS创建进程,监控内存中该程序的运行数据。该安全组件30的处理单元32根据预存的特征数据,检测该程序在内存中的运行数据中是否包含标识软件的特征数据,如果有,则确定该软件为目标软件,将该目标软件的特征数据添加到安全组件的保护对象列表中;如果处理单元32未检测到软件在内存中的运行数据中有特征数据,则确定该软件为普通软件,不对其进行保护。
当确定所检测的软件为目标软件时,处理单元32根据预先存储在存储单元31中的破解补丁特征,检测目标软件中是否包含破解补丁,如果处理单元32未检测到目标软件中包含破解补丁,则表明该目标软件未发生盗版情况,该允许目标软件正常运行。如果包含破解补丁,表明该目标软件已被盗版,则可以直接禁止该目标软件的运行。在目标软件停止运行后,可将上述的特征数据从安全组件30的保护对象列表中移除,以实现实时监控并且避免占用资源。每当有软件在计算系统1中启动时,安全组件30就进行上述的检测和识别过程。
根据本公开的另一个实施例,在安全组件30的存储单元31中还可以预先存储用于标识目标软件的特征数据和用于验证特征数据的签名数据的验签数据,该签名数据已预先写入目标软件中。根据一个实施例,在任一软件启动时,处理单元32根据预存的验签数据,检测该软件中是否包括与特征数据关联的签名数据,并在检测到该软件包括签名数据和特征数据两者时,确定该软件为目标软件。安全组件30对目标软件进行监控和保护的过程与上述的实施例中所描述的基本相同。
根据本公开的另一个实施例,在软件启动运行时,安全组件30在检测到该软件的程序中包含特征数据和签名数据时,安全组件30的处理单元32首先根据该特征数据和验签数据对签名数据进行验签,如果签名数据验证通过,表明该特征数据是有效签发的,则安全组件30的处理单元32将该目标软件的特征数据添加到安全组件的保护对象列表中。如果签名数据验证未通过,则表明该特征数据不是有效签发的,则安全组件30的处理单元32不将该软件作为目标软件来处理,不对其进行监控和保护。
图4是根据本发明的一个实施例的由安全组件30执行的软件保护方法的示意性流程图。该软件保护方法的处理过程开始于S300,检测到软件启动。
然后,该处理流程进行到S302,在该步骤中,根据预存的指定特征,检测该软件中是否包括具有指定特征的预定数据内容。
如果检测到该软件中具有指定特征的预定数据内容,则处理进行到步骤S304,确定该软件为目标软件。
然后,处理进行到步骤S306,在步骤306中,根据预存的破解补丁特征,检测目标软件中是否包含破解补丁。
而如果在步骤S302中未检测到具有指定特征的预定数据内容,则处理进行到步骤S310,在步骤S310中,确定该软件是普通软件,不对其采取保护措施。
在步骤S306中检测到目标软件中包含破解补丁的情况下,则确定发生盗版,在步骤S308中禁止该目标软件的运行。
在步骤S306中检测到目标软件中未包含破解补丁的情况下,该目标软件正常运行。
根据本公开的实施例,预先在目标软件中植入具有指定特征的预定数据内容可以包括:在目标软件的源程序中植入具有指定特征的预定数据内容;通过编译器对源程序进行编译以得到可执行程序,在编译过程中禁止编译器对源程序中的具有指定特征的预定数据内容进行优化来保护该具有指定特征的预定数据内容。根据一个实施例,在编译过程中禁止编译器对源程序中的具有指定特征的预定数据内容进行优化例如可以通过对具有指定特征的预定数据内容设置禁止优化的标记来实现。
根据一个实施例,在确定所检测的软件为目标软件后,将指定特征添加到保护列表中。根据一个实施例,当目标软件停止运行时,安全组件可以将指定特征从保护列表中移除。
图5是根据本发明的另一实施例的由安全组件30执行的软件保护方法的步骤的流程图。该软件保护方法的处理过程开始于S400,检测到软件的启动。
然后,该处理流程进行到S402,在该步骤中,在软件启动时,根据预存的指定特征,检测该软件中是否包括具有指定特征的预定数据内容和有效的签名数据。
如果检测到该软件中具有指定特征的预定数据内容和有效的签名数据,则处理进行到步骤S404,确定该软件为目标软件。
然后,处理进行到步骤S406,在步骤406中,根据预存的破解补丁特征,检测所检测到的目标软件中是否包含破解补丁。
而如果在步骤S402中未检测到具有指定特征的预定数据内容,则处理进行到步骤S410,在步骤S410中,确定所检测的软件是普通软件,不采取保护措施。
在步骤S406中检测到所检测到的目标软件中包含破解补丁的情况下,则在步骤S408中确定发生盗版,禁止该目标软件的运行。
在步骤S406中检测到所检测到的目标软件中未包含破解补丁的情况下,该目标软件正常运行。
根据本公开的另一个实施例,在软件启动运行时,在检测到该软件的程序中包含特征数据和签名数据时,首先根据预存的验签数据和该特征数据对签名数据进行验签,如果签名数据验证通过,则证明该特征数据是有效签发的,则将该目标软件的特征数据添加到安全组件的保护对象列表中。如果签名数据验证未通过,则证明该特征数据不是有效签发的,则安全组件30不将该软件作为目标软件来处理,并且不对其进行监控和保护。
根据一个实施例,本发明的软件保护方法可以包括:将具有指定特征的预定数据内容预先植入目标软件中,其中具有指定特征的预定数据内容用于在目标软件运行时识别目标软件,对目标软件的源程序进行编译,在编译过程中禁止对目标软件中的具有指定特征的预定数据内容进行优化。根据实施例,在编译过程中禁止对目标软件中的具有指定特征的预定数据内容进行优化包括:对具有指定特征的预定数据内容设置禁止优化的标记。
本文所示的流程图提供了各种处理动作的序列的示例。尽管以特定的顺序或顺序示出,除非另有说明,可以修改动作的顺序。因此,所示出的实施例仅为示例的目的而提供,可以按不同的顺序执行处理,并且可以并行地执行一些处理。另外,在各种实施例中可以省略一个或多个步骤。
本文描述的实施例的软件可以经由其中存储有软件内容的计算机可读存储介质或任何制品来提供,或者经由通信接口来提供。计算机可读存储介质可以使机器执行所描述的功能或操作,包括以计算设备能访问的形式存储程序模块或数据内容的任何机制,例如,只读存储器,随机存取存储器,磁盘存储介质,光盘存储介质,闪存设备等。通信接口包括与硬连线、无线、光学等介质中的任何一种接口以与另一设备通信的任何机制,例如存储器总线接口、处理器总线接口、因特网连接、磁盘控制器等。
本文描述的各种组件可以是用于执行所描述的操作或功能的模块。本文描述的每个组件包括软件、硬件或其组合。这些组件可以实现为软件模块、硬件模块、专用硬件(例如,专用集成电路、数字信号处理器等)、嵌入式控制器等。
说明书中对于“一个实施例”、“实施例”等的提及表明所描述的实施例可以包括特定的特征、结构或特性。而且,这些短语不一定是指同一实施例。此外,当结合一个实施例描述特定的特征或结构时,无论是否做出明确说明,都认为结合其他实施例实现这些特征或结构均在本领域技术人员的技能范围内的。
除了本文所描述的内容之外,可以在不脱离本发明的范围的情况下对所公开的实施例进行各种修改。因此,这里的说明和示例应理解为说明性的而不是限制性的。本发明的范围应仅通过参考权利要求及其等同内容来考量。