一种软件保护方法

文档序号:6378606阅读:219来源:国知局
专利名称:一种软件保护方法
技术领域
本发明涉及信息安全技术,特别是涉及一种软件保护方法。
背景技术
目前,软件保护装置是实现软件安全保护和版权保护的主要手段。所谓的软件保护装置特指一种附加在计算机接口(如USB接口、串口、并口等接口 )上的硬件设备,对运行在计算机中的特定软件进行安全保护和版权保护。采用软件保护装置进行软件保护的常规方法是将其视作一个与受保护软件并行的运算平台,将软件中的一部分功能移植到软件保护装置中实现,在软件运行时调用这些功能。因为受保护软件的运行依赖于软件保护装置提供的预算功能,而破解者又无法复制软件保护装置,因此可以很好的保护软件。软件保护装置中,加密锁是最常用的一种。所谓加密锁,是一种采用高强度智能卡 芯片和先进的密码学技术,具有一定的运算和存储能力的硬件设备,同时难以被破解和复制,在高强度软件版权保护中具有广泛的应用。传统的使用加密锁的方式是将加密锁插入计算机接口与受保护软件建立连接,在需要运行被移植功能时向软件保护装置发出调用请求和相关数据,软件保护装置根据调用请求将处理后的结果返回,受保护软件接收到数据后继续运行。但是,使用软件保护装置保护软件时,通常都是受保护软件与软件保护装置进行直接的数据通信,受保护软件根据软件运行的逻辑顺序,实时地直接向软件保护装置获取相应的处理结果,这样,受保护软件与软件保护装置之间交互信息的时机和顺序和软件运行有直接的对应关系,如此一来,黑客或病毒很容易通过截获两者之间交互的数据信息对软件的执行进行攻击,从而造成软件的破坏或者数据的丢失与泄露,产生安全隐患。

发明内容
有鉴于此,本发明的主要目的在于提供一种软件保护方法,该方法能提高软件的安全性。为了达到上述目的,本发明提出的技术方案为一种软件保护方法,包括a、软件运行时,建立专用于与软件保护装置进行交互的子进程或子线程;b、当所述软件需要软件保护装置进行数据处理时,利用所述子进程或子线程,采用异步方式与所述软件保护装置进行数据交互。综上所述,本发明提出的软件保护方法,利用专用的子进程或子线程,使得软件与软件保护装置之间采用异步通信的方式进行数据交互,可以提高第三方对软件进行调试和分析的难度,进而可提高软件的安全性。


图I为本发明的流程示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。本发明的核心思想是软件运行时,通过异步方式与软件保护装置进行数据通信,软件本身不直接访问软件保护装置,这样,通过异步通信可以使软件保护装置与软件之间交互的数据包无法直接反映出软件执行的实时性,从而增加黑客利用所截获的数据包对软件进行调试和分析的难度,从而可以降低其破坏软件的可能性,提高软件的安全性。图I为本发明的流程示意图,如图I所示,本发明主要包括步骤101、软件运行时,建立专用于与软件保护装置进行交互的子进程或子线程。这里,通过在本步骤中建立专用于与软件保护装置进行交互的子进程或子线程, 可以确保软件的主进程或主线程不直接与软件保护装置之间进行通信,实现软件与软件保护装置的异步通信。具体地,在实际应用中,可以由软件的主进程创建专用于与软件保护装置进行交互的子进程;由软件的主线程创建专用于与软件保护装置进行交互的子线程。步骤102、当所述软件需要软件保护装置进行数据处理时,利用所述子进程或子线程,采用异步方式与所述软件保护装置进行数据交互。本步骤中,通过确保软件采用异步方式与所述软件保护装置进行数据交互,可以使得两者之间交互数据的时机与软件的执行不同步,从而使得当第三方对所述交互的数据截获后,难以根据该数据对软件进行调试和分析,从而可以降低其破坏软件的可能性,提高软件的安全性。较佳地,为了进一步确保数据交互的安全性,所述子进程或子线程与所述软件保护装置之间交互的数据可以为经过加密算法(如对称算法或非对称算法或其他加密算法等)加密后的数据,具体地,由主进程/主线程、子进程/子线程、软件保护装置加密皆可,即可以是在主进程/主线程与子进程/子线程之间对数据进行加密,或者在子进程/子线程与软件保护装置之间对数据进行加密。较佳地,所述步骤102可采用下述方法实现步骤1021、当所述软件需要触发软件保护装置进行数据处理时,将所述数据处理的相关信息存储在预设的共享存储区中并通知所述子进程或子线程。这里,在软件的主进程或主线程在执行时,当需要触发软件保护装置进行数据处理时,需要先将数据处理的相关信息存储在预设的共享存储区中,同时将所述存储通知给专用于与软件保护装置交互的子进程或子线程(具体通知可以通过向子进程或线程发送调用请求实现),以触发其将数据处理的相关信息发送给软件保护装置。较佳地,所述共享存储区可以为共享内存、全局变量或共享外部存储设备。步骤1022、所述子进程或子线程根据所述通知,从所述共享存储区中读取所述数据处理的相关信息,并将所述数据处理的相关信息发送到所述软件保护装置中。步骤1023、所述软件保护装置根据所述数据处理的相关信息进行相应的数据处理,并将处理后的数据发送给子进程或子线程。步骤1024、所述子进程或子线程将所述处理后的数据存储在所述共享存储区中。
步骤1025、所述软件从所述共享存储区中获取所述处理后的数据。本步骤具体可以由软件的主进程或主线程,从所述共享存储区中获取软件保护装置处理后的数据,然后再进行后续的操作。在实际应用中,可通过下述两种方式来触发主进程或主线程从共享存储区中获取所述处理后的数据一种是主进程或主线程可实时监控共享存储区,监控到存入所述处理后的数据后即可获取;另一种是子进程或子线程将所述处理后的数据存储在所述共享存储区中后,向主进程或主线程发送读取数据的通知消息,主进程或主线程根据该通知消息来从共享存储区中获取所述处理后的数据。下面通过两个软件保护的具体实施例来进一步阐述本发明本发明实施例一中受保护软件为一种排版软件,可以通过设置字体及字体大小、页面大小、边距等数据对报刊进行排版,保存排版结果和打开之前的排版结果文件。假定软 件保护装置为硬件加密锁,锁内包括一个密钥池Keys,存储密钥及编号信息,还包括一个加解密模块用来加解密数据信息。使用排版软件任意时刻,保存当前排版文件结果时,排版软件会根据向加密锁发送打开保存请求,把内存中的数据顺序存储到磁盘文件,当保存到页面数据关于字体的数据和页面边距等关键数据,比如 “fonttypel=simplesongxl2pt; fonttyp2=kaitixl4pt;pagesizel=A4;pagesizeout= {2,3,2. 65,3. 39}; ” 等关键数据发送到加密锁缓冲区,并且通过调用锁内加解密模块,生成一个随机加密结果,包含密文和加密钥匙ID,成为r-crypted-result,并且把加密结果保存到磁盘文件结构体里面。使用排版软件打开之前排版文件结果时,排版软件把文件中的数据顺序读取到内存中,当遇到页面数据关于字体的数据和页面边距等关键数据时,会把加密后的结果r-crypted-result字节流发送到锁内,并调用加解密模块,加密锁内的程序通过发送缓冲区读取r-crypted-result可以知道密钥ID,通过ID找到密钥池中对应的唯一密钥,并且解密,并且把明文结果发送给排版软件,排版软件继续后续的使用操作。实施例一中,加密锁已与运行排版软件的目标平台相连接,排版软件运行时,主进程会创建一个或多个子进程,子进程专用于与加密锁的数据交互,主进程与子进程通过共享内存映射内核对象来保持通信,主进程通过子进程获取所需的加密锁返回的数据信息继而进行后续的操作使用。具体流程步骤如下I、排版软件运行时,主进程创建一个或多个子进程,进程间通过共享内存映射内核对象来保持通信。2、当排版软件需要保存排版文件结果或打开之前的排版文件结果时,主进程向子进程发送请求,并将相关请求数据写入共享内存。3、子进程接收请求后,读取共享内存中的请求数据,发送给加密锁。4、加密锁内部进行加解密运算处理,并将处理结果返回给子进程。5、子进程接收返回的数据信息,并写入共享内存。6、主进程读取共享内存中加密锁返回的数据信息,进行后续的操作使用。本发明实施例二中软件程序为一种加壳的软件程序,软件保护装置为硬件加密锁(下称加密锁),加密锁已通过接口与目标平台进行连接,软件与加密锁通过多线程进行异步通信。软件程序运行时,主线程创建一个或者多个子线程,子线程专用于与加密锁进行数据交互,主线程与子线程通过全局变量方式保持数据通信。当软件程序需要交互加密锁进行相关数据处理或逻辑操作时,主线程通过子线程获取所需的加密锁返回的数据信息,从而继续进行后续的逻辑处理。在此过程中,软件本身并不直接访问加密锁,增加了软件调试和分析的难度,提高了软件的安全性。具体流程步骤如下I、软件程序运行时,通过主线程创建一个或者多个子线程。主线程与子线程通过全局变量来保持数据通信。
2、当软件需要调用加密锁数据时,主线程将请求信息(如功能调用的方法函数及参数等信息)写入全局变量中并向子线程发送调用请求。3、子线程接收调用请求后,读取全局变量中主线程所写入的请求数据并发送到加密锁内。4、加密锁接收子线程发送的请求数据,根据请求数据的内容进行相应的运算处理,将处理结果返回给子线程。5、子线程接收加密锁返回的结果数据并写入全局变量中。6、主线程读取共享内存中子线程写入的结果数据并执行后续的逻辑处理。以上所述步骤中,数据存储和通信时,为保证数据安全性,可通过对称或者非对称等加密算法对数据进行加密和解密的处理。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种软件保护方法,其特征在于,包括 a、软件运行时,建立专用于与软件保护装置进行交互的子进程或子线程; b、当所述软件需要软件保护装置进行数据处理时,利用所述子进程或子线程,采用异步方式与所述软件保护装置进行数据交互。
2.根据权利要求I所述的方法,其特征在于,所述步骤b包括 当所述软件需要触发软件保护装置进行数据处理时,将所述数据处理的相关信息存储在预设的共享存储区中并通知所述子进程或子线程; 所述子进程或子线程根据所述通知,从所述共享存储区中读取所述数据处理的相关信息,并将所述数据处理的相关信息发送到所述软件保护装置中; 所述软件保护装置根据所述数据处理的相关信息进行相应的数据处理,并将处理后的数据发送给所述子进程或子线程; 所述子进程或子线程将所述处理后的数据存储在所述共享存储区中; 所述软件从所述共享存储区中获取所述处理后的数据。
3.根据权利要求I所述的方法,其特征在于,所述共享存储区为共享内存或共享外部存储设备。
4.根据权利要求I所述的方法,其特征在于,步骤a中由软件的主进程创建所述专用于与软件保护装置进行交互的子进程。
5.根据权利要求I所述的方法,其特征在于,步骤b中由软件的主线程创建所述专用于与软件保护装置进行交互的子线程。
6.根据权利要求I所述的方法,其特征在于,步骤b中所述交互的数据为经过加密算法加密后的数据。
全文摘要
本申请公开了一种软件保护方法,包括软件运行时,建立专用于与软件保护装置进行交互的子进程或子线程;当所述软件需要软件保护装置进行数据处理时,利用所述子进程或子线程,采用异步方式与所述软件保护装置进行数据交互。采用本发明使得软件与软件保护装置之间采用异步通信的方式进行数据交互,从而可以提高第三方对软件进行调试和分析的难度,进而可提高软件的安全性。
文档编号G06F21/12GK102880818SQ20121038296
公开日2013年1月16日 申请日期2012年10月10日 优先权日2012年10月10日
发明者孙吉平, 韩勇 申请人:北京深思洛克软件技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1