一种软件保护方法及装置与流程

文档序号:12272003阅读:241来源:国知局
一种软件保护方法及装置与流程

本发明涉及计算机应用技术领域,特别是涉及一种软件保护方法及装置。



背景技术:

随着计算机应用技术的快速发展,各种功能的应用软件逐渐增多。很多企业或者个人开发的一些应用软件并不总是免费的,在提供给用户免费试用之后,为保护软件开发商的正版版权,通常需要用户购买注册码对要使用的软件注册后才能正常使用。

注册码的验证通常是用RSA等加密算法来实现,例如:

if RSAVerify(MD5(Key),MD5(Code),e,n);

thenShowMessage('注册成功!');

elseShowMessage('注册失败!');

其中,Key为用户输入的注册码,Code是根据用户终端硬件信息自动计算出来的机器码,e是RSA算法的公匙,n是RSA算法的模数。

这种方法在一定程度上能够实现对注册码的验证,但是很容易被破解,破解者可以通过反汇编或者跟踪程序,把程序的逻辑判断改为否,直接跳过RSA加密算法的验证就可以破解,比如:

if not RSAVerify(MD5(Key),MD5(Code),e,n);

thenShowMessage('注册成功!');

elseShowMessage('注册失败!')。



技术实现要素:

为解决上述技术问题,本发明提供一种软件保护方法及装置。

一种软件保护方法,应用于目标软件的客户端,包括:

在接收到针对目标软件的使用指令时,获得所述目标软件的注册码;

将所述注册码和自身所在终端的机器码发送给服务器,以使所述服务器在映射表中查询是否存在与所述注册码和所述机器码相匹配的对应关系项,如果是,则向所述客户端返回所述目标软件对应的业务代码串,如果否,则在确定所述注册码为合法注册码后,在所述映射表中记录所述注册码和所述机器码的对应关系项,并执行所述向所述客户端返回所述目标软件对应的业务代码串的步骤;

接收所述服务器返回的所述目标软件对应的业务代码串;

获得所述业务代码串包含的若干个业务代码段;

将获得的业务代码段分别还原至所述目标软件的源代码的相应位置处,以启动所述目标软件,使用户正常使用所述目标软件。

在本发明的一种具体实施方式中,所述获得所述目标软件的注册码,包括:

查询本地是否保存有所述目标软件的注册码;

如果是,则获得本地保存的所述目标软件的注册码;

如果否,则输出注册窗口,并接收用户在所述注册窗口输入的注册码。

在本发明的一种具体实施方式中,在查询本地未保存有所述目标软件的注册码的情况下,在所述启动所述目标软件之后,还包括:

在本地保存所述目标软件的注册码。

在本发明的一种具体实施方式中,所述业务代码串为经过加密处理的业务代码串,所述获得所述业务代码串包含的若干个业务代码段,包括:

对所述业务代码串进行解密处理;

将解密后的业务代码串拆分为若干个业务代码段。

在本发明的一种具体实施方式中,所述业务代码串包含的业务代码段为所述目标软件的关键业务功能的代码段。

一种软件保护装置,应用于目标软件的客户端,包括:

注册码获得模块,用于在接收到针对目标软件的使用指令时,获得所述目标软件的注册码;

注册码发送模块,用于将所述注册码和自身所在终端的机器码发送给服务器,以使所述服务器在映射表中查询是否存在与所述注册码和所述机器码相匹配的对应关系项,如果是,则向所述客户端返回所述目标软件对应的业务代码串,如果否,则在确定所述注册码为合法注册码后,在所述映射表中记录所述注册码和所述机器码的对应关系项,并执行所述向所述客户端返回所述目标软件对应的业务代码串的步骤;

业务代码串接收模块,用于接收所述服务器返回的所述目标软件对应的业务代码串;

业务代码段获得模块,用于获得所述业务代码串包含的若干个业务代码段;

业务代码段还原模块,用于将获得的业务代码段分别还原至所述目标软件的源代码的相应位置处,以启动所述目标软件,使用户正常使用所述目标软件。

在本发明的一种具体实施方式中,所述注册码获得模块,具体用于:

查询本地是否保存有所述目标软件的注册码;

如果是,则获得本地保存的所述目标软件的注册码;

如果否,则输出注册窗口,并接收用户在所述注册窗口输入的注册码。

在本发明的一种具体实施方式中,还包括:

注册码保存模块,用于在查询本地未保存有所述目标软件的注册码的情况下,在所述启动所述目标软件之后,在本地保存所述目标软件的注册码。

在本发明的一种具体实施方式中,所述业务代码串为经过加密处理的业务代码串,所述业务代码段获得模块,具体用于:

对所述业务代码串进行解密处理;

将解密后的业务代码串拆分为若干个业务代码段。

在本发明的一种具体实施方式中,所述业务代码串包含的业务代码段为所述目标软件的关键业务功能的代码段。

应用本发明实施例所提供的方法,客户端在接收到针对目标软件的使用指令时,可以获得目标软件的注册码,并将该注册码和自身所在终端的机器码发送给服务器,服务器对该注册码和该机器码进行验证,如果验证通过,则向客户端返回目标软件对应的业务代码串,客户端接收到该业务代码串后,可以获得该业务代码串中包含的若干个业务代码段,并将获得的业务代码段分别还原至目标软件的源代码的相应位置处,以启动目标软件,使用户正常使用目标软件。注册码验证为第一层验证,业务代码段验证为第二层验证,通过这两层验证之后目标软件才能正常使用,这样,即使破解者通过反编译篡改代码逻辑跳过了第一层注册码验证,也会由于缺少第二层业务代码段的成功验证,而不能正常使用软件,增大了软件被破解的难度系数,可以有效保护软件的版权。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种软件保护方法的实施流程图;

图2为本发明实施例中业务代码串生成示意图;

图3为本发明实施例中一种软件保护装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种软件保护方法,该方法可以应用于目标软件的客户端,目标软件可以是任意一款应用软件。目标软件的客户端安装于终端中,与目标软件的服务器通信连接,二者配合为用户提供目标软件的各种功能。但是,在为用户提供目标软件的各种功能之前,首先需要进行合法性验证,验证用户是否有权使用目标软件,以保护目标软件的版权。

参见图1所示,为本发明实施例所提供的一种软件保护方法的实施流程图,该方法可以包括以下步骤:

S110:在接收到针对目标软件的使用指令时,获得目标软件的注册码。

目标软件的客户端安装于终端中后,用户在需要使用目标软件时,可以点击该客户端图标,发出使用指令。客户端在接收到针对目标软件的使用指令时,可以获得目标软件的注册码。

在本发明的一种具体实施方式中,客户端可以通过以下步骤获得目标软件的注册码:

步骤一:查询本地是否保存有目标软件的注册码,如果是,则执行步骤二,如果否,则执行步骤三;

步骤二:获得本地保存的目标软件的注册码;

步骤三:输出注册窗口,并接收用户在注册窗口输入的注册码。

为便于描述,将上述三个步骤结合起来进行说明。

为保护目标软件的版权,目标软件需要授权使用。用户可以通过购买注册码注册目标软件获得授权。

客户端在接收到针对目标软件的使用指令时,可以查询本地是否保存有目标软件的注册码,如果没有,则表明这可能是用户在客户端所在终端上第一次使用目标软件,还未对目标软件进行注册,可以输出注册窗口,提示用户输入注册码进行目标软件的注册。客户端接收用户在该注册窗口输入的注册码,该注册码即为目标软件的注册码。

如果本地保存有目标软件的注册码,则表明用户之前在客户端所在终端上可能已经使用过目标软件,并且对目标软件进行了注册,在这种情况下,可以直接获得本地保存的目标软件的注册码。

客户端获得目标软件的注册码后,可以继续执行步骤S120的操作。

S120:将注册码和自身所在终端的机器码发送给服务器,以使服务器在映射表中查询是否存在与注册码和机器码相匹配的对应关系项,如果是,则向客户端返回目标软件对应的业务代码串,如果否,则在确定注册码为合法注册码后,在映射表中记录注册码和机器码的对应关系项,并执行向客户端返回目标软件对应的业务代码串的步骤。

客户端与服务器具有通信连接,当客户端获得目标软件的注册码后,可以将该注册码和自身所在终端的机器码发送给服务器,以使服务器对注册码进行验证。机器码是指将硬件序列号经过一系列加密、散列形成的一串序列号。

服务器接收到客户端发送的注册码和机器码后,可以在映射表中查询是否存在与该注册码和该机器码相匹配的对应关系项。服务器可以在其本地维护一个映射表,该映射表中包含若干个注册码和机器码的对应关系项,如下所示:

注册码A:机器码a;

注册码B:机器码b;

……

如果映射表中不存在该注册码和该机器码相匹配的对应关系项,则表明目标软件在具有该机器码的终端上还未被注册过,服务器可以对该注册码进行合法性验证,如果确定该注册码为合法注册码,则可以在该映射表中记录该注册码和该机器码的对应关系项,并向客户端返回目标软件对应的业务代码串。

具体的,服务器可以通过查询已售出注册码库查看该注册码是否为通过正规渠道售出的注册码,如果是,则可以确定该注册码为合法注册码。或者,服务器可以在映射表中查询该注册码是否具有和其他机器码的对应关系项,如果有,且该注册码符合预设的格式要求,则可以确定该注册码为合法注册码。

需要说明的是,上述仅为示例,在实际应用中,还可以通过其他方法确定注册码是否为合法注册码,本发明实施例对此不做限制。

如果映射表中存在该注册码和该机器码的对应关系项,则表明之前已经在具有该机器码的终端上对目标软件进行了注册,服务器可以直接向客户端返回目标软件对应的业务代码串。

在本发明实施例中,业务代码串包含的业务代码段为目标软件的关键业务功能的代码段。

目标软件对应的业务代码串可以包含若干个业务代码段,每个业务代码段可以是目标软件的某个关键业务功能的代码段。

参见图2所示,服务器可以在目标软件的源代码中提取出多个关键业务功能(功能A、功能B、……、功能N)的业务代码段(code 1、code 2、……、code n),并根据这些业务代码段生成业务代码串,在其本地进行保存。当接收到的客户端发送的注册码和机器码验证通过后,可以将预先存储的目标软件的业务代码串返回给客户端。

当然,如果服务器在映射表中未查询到该注册码和该机器码相匹配的对应关系项,且确定该注册码非合法注册码,则该注册码验证不通过,服务器可以不再向客户端返回任何信息,或者返回空的信息,或者将预先存储的错误的业务代码串返回给客户端。客户端据此可以确定注册码验证未通过,可以进一步向用户输出验证未通过的提示信息,提示用户重新输入注册码等。

可以理解的是,在客户端,用户要使用目标软件时,如果目标软件缺少这些业务代码段,则这些业务代码段所对应的功能模块不能正常使用,相应功能受到限制,达到保护软件版权的目的。

S130:接收服务器返回的目标软件对应的业务代码串。

服务器向客户端返回目标软件对应的业务代码串后,客户端可以接收目标软件对应的业务代码串,并继续执行步骤S140的操作。

S140:获得业务代码串包含的若干个业务代码段。

业务代码串中包含若干个业务代码段,客户端接收到目标软件对应的业务代码串后,可以获得该业务代码串中包含的若干个业务代码段。

为保证存储和传输过程中的安全性,服务器可以对业务代码串进行加密处理后再存储该业务代码串,这样,客户端接收到的业务代码串为经过加密处理的业务代码串。在这种情况下,步骤S140可以包括以下步骤:

第一个步骤:对业务代码串进行解密处理;

第二个步骤:将解密后的业务代码串拆分为若干个业务代码段。

客户端对业务代码串进行解密处理,具体的解密方法为现有技术,本发明实施例对此不再赘述。

将解密后的业务代码串进行拆分,即可获得若干个业务代码段。

S150:将获得的业务代码段分别还原至目标软件的源代码的相应位置处,以启动目标软件,使用户正常使用目标软件。

在步骤S140,客户端获得目标软件对应的业务代码段,可以将获得的业务代码段分别还原至目标软件的源代码的相应位置处,以启动目标软件,使用户正常使用目标软件。

在本发明的一个实施例中,在查询本地未保存有目标软件的注册码的情况下,在启动目标软件之后,还可以包括以下步骤:

在本地保存目标软件的注册码。

这样,当客户端再次接收到针对目标软件的使用指令时,可以在本地获得目标软件的注册码。

应用本发明实施例所提供的方法,客户端在接收到针对目标软件的使用指令时,可以获得目标软件的注册码,并将该注册码和自身所在终端的机器码发送给服务器,服务器对该注册码和该机器码进行验证,如果验证通过,则向客户端返回目标软件对应的业务代码串,客户端接收到该业务代码串后,可以获得该业务代码串中包含的若干个业务代码段,并将获得的业务代码段分别还原至目标软件的源代码的相应位置处,以启动目标软件,使用户正常使用目标软件。注册码验证为第一层验证,业务代码段验证为第二层验证,通过这两层验证之后目标软件才能正常使用,这样,即使破解者通过反编译篡改代码逻辑跳过了第一层注册码验证,也会由于缺少第二层业务代码段的成功验证,而不能正常使用软件,增大了软件被破解的难度系数,可以有效保护软件的版权。

相应于上面的方法实施例,本发明实施例还提供了一种软件保护装置,应用于目标软件的客户端,下文描述的一种软件保护装置与上文描述的一种软件保护方法可相互对应参照。

参见图3所示,该装置可以包括以下步骤:

注册码获得模块310,用于在接收到针对目标软件的使用指令时,获得目标软件的注册码;

注册码发送模块320,用于将注册码和自身所在终端的机器码发送给服务器,以使服务器在映射表中查询是否存在与注册码和机器码相匹配的对应关系项,如果是,则向客户端返回目标软件对应的业务代码串,如果否,则在确定注册码为合法注册码后,在映射表中记录注册码和机器码的对应关系项,并执行向客户端返回目标软件对应的业务代码串的步骤;

业务代码串接收模块330,用于接收服务器返回的目标软件对应的业务代码串;

业务代码段获得模块340,用于获得业务代码串包含的若干个业务代码段;

业务代码段还原模块350,用于将获得的业务代码段分别还原至目标软件的源代码的相应位置处,以启动目标软件,使用户正常使用目标软件。

应用本发明实施例所提供的装置,客户端在接收到针对目标软件的使用指令时,可以获得目标软件的注册码,并将该注册码和自身所在终端的机器码发送给服务器,服务器对该注册码和该机器码进行验证,如果验证通过,则向客户端返回目标软件对应的业务代码串,客户端接收到该业务代码串后,可以获得该业务代码串中包含的若干个业务代码段,并将获得的业务代码段分别还原至目标软件的源代码的相应位置处,以启动目标软件,使用户正常使用目标软件。注册码验证为第一层验证,业务代码段验证为第二层验证,通过这两层验证之后目标软件才能正常使用,这样,即使破解者通过反编译篡改代码逻辑跳过了第一层注册码验证,也会由于缺少第二层业务代码段的成功验证,而不能正常使用软件,增大了软件被破解的难度系数,可以有效保护软件的版权。

在本发明的一种具体实施方式中,注册码获得模块310,具体用于:

查询本地是否保存有目标软件的注册码;

如果是,则获得本地保存的目标软件的注册码;

如果否,则输出注册窗口,并接收用户在注册窗口输入的注册码。

在本发明的一种具体实施方式中,还包括:

注册码保存模块,用于在查询本地未保存有目标软件的注册码的情况下,在启动目标软件之后,在本地保存目标软件的注册码。

在本发明的一种具体实施方式中,业务代码串为经过加密处理的业务代码串,业务代码段获得模块340,具体用于:

对业务代码串进行解密处理;

将解密后的业务代码串拆分为若干个业务代码段。

在本发明的一种具体实施方式中,业务代码串包含的业务代码段为目标软件的关键业务功能的代码段。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种软件保护方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1