一种软件保护方法及装置的制作方法

文档序号:6395013阅读:109来源:国知局
专利名称:一种软件保护方法及装置的制作方法
技术领域
本发明涉及软件保护领域,特别是涉及一种通过验证过程保护软件的方法及装置。
背景技术
随着信息技术的发展,软件产业也越来越受到人们的重视,各种系统软件和应用软件层出不穷。通常,软件开发商需要投入庞大的人力物力进行软件的研发。但是,一旦软件开发成功,盗版者只需要花费少量的精力就可以进行仿制并低价销售,大为打击人们从事软件开发的积极性并严重阻碍软件产业的发展。
为了遏制盗版以保护知识产权,业界推出了一系列软件保护技术。其中,在软件启动时,根据用户信息、产品序列号、数字签名和/或软件运行载体的标识进行使用权限验证是目前常用的软件保护方法,如果验证通过,则允许进行软件的运行;如果验证通不过,则返回提示信息,不允许运行所述软件或屏蔽部分功能只允许软件的受限运行。
请参阅图1,是一种现有技术的软件保护方法的流程。
当被保护的软件初始化时,将触发验证单元启动验证过程首先,获取用户信息、产品序列号、数字签名和/或软件运行载体的标识等信息;其次,返回值生成单元根据用户信息、产品序列号、数字签名和/或软件运行载体的标识进行验证,生成返回值;随后,比较单元根据所述返回值进行比较,以判断验证是否通过,如果是,则允许运行所述软件进行业务处理;如果否,则进行验证失败处理,如返回提示信息,不允许运行所述软件或屏蔽部分功能只允许软件的受限运行。
所述现有技术的软件保护方法具有一些缺陷由于仅仅在软件初始化时进行处理,且通常由比较单元直接根据返回值进行判断,如果攻击者跟踪软件的验证过程,就可以通过修改这些验证过程的返回值,或者更改某些比较操作,使验证过程中总是返回验证通过,从而导致攻击者可以彻底绕过验证过程,而无需关注其它验证操作细节。

发明内容
本发明解决的技术问题在于提供一种增加攻击难度以提高安全性的软件保护方法及装置。
为此,本发明解决技术问题的技术方案是提供一种软件保护方法,包括步骤1)在所述软件启动时生成验证值,根据所述验证值生成扰码结果;2)判断验证是否通过,如是,则进入步骤3);如否,则不允许运行所述软件或进行所述软件的受限运行;3)运行所述软件,并启动定时器;4)判断前述定时器是否到达预定周期,如是,则进入步骤5);如否,则不进行操作;5)对前述扰码结果进行校验,判断校验是否通过,如是,则返回步骤4);如否,则退出所述软件的运行或进行所述软件的受限运行。
其中,所述步骤1)中,生成扰码结果具体包括11)生成伪随机数;12)利用所述伪随机数对验证值进行变换,生成第一变换结果。
其中,所述步骤12)具体包括将伪随机数和验证值相加;对相加结果进行哈希变换。
其中,将哈希变换结果作为字符串或者将哈希变换结果的值变换为字符串,所述字符串即第一变换结果。
其中,所述步骤5)具体包括51)对扰码结果进行变换操作,生成第二变换结果;52)根据前述第一变换结果和第二变换结果获得校验结果;53)判断校验结果是否为预定值。
其中,所述步骤51)中变换操作是哈希变换;所述步骤52)中将第一变换结果和第二变换结果进行按位异或。
其中,所述步骤2)中,所述判断是否通过是判断验证值是否为预定值或对前述扰码结果进行校验。
其中,在所述步骤1)之前还包括选取扰码结果存储单元。
本发明还提供一种用于实现权利要求1所述的软件保护方法的软件保护装置,包括验证值生成单元,用于在所述软件启动时生成验证值;比较单元,用于比较验证值是否为预定值;还包括扰码结果生成单元,用于根据前述验证值生成扰码结果;定时器,用于在所述软件运行时触发校验装置;校验单元,用于在软件启动或定时器到达预定周期时对前述扰码结果进行校验。
其中,所述验证值生成装置和比较装置集成为一体。
相对于现有技术,本发明的有益效果是首先,由于本发明对返回的验证值进行扰码处理,生成扰码结果,并且在软件运行时设置定时器,当定时器到达预定周期时对扰码结果进行校验,即定期对扰码结果进行校验,从而增大攻击者针对返回的验证值进行攻击的难度并提高安全性,实现软件保护。其次,由于本发明对扰码结果进行定时校验,而不是重新生成验证值并对验证值进行判断,定时校验的速度较高。其次,在本发明的一个实施方式中,在软件启动时对扰码结果进行校验,相对现有技术在软件启动时对返回值进行验证而言,增加了针对返回值攻击的难度。


图1是一种现有技术的软件保护方法的流程图;图2是本发明软件保护装置的原理框图;图3是本发明软件保护方法的流程图;图4是本发明软件保护方法实施例的流程图;图5是图4所示流程中扰码处理的流程图;图6是图4所示流程中扰码结果校验的流程图。
具体实施例方式
本发明软件保护方法及装置通过对返回的验证值进行扰码处理和对扰码结果进行定时校验,可以有效防御攻击者针对返回值进行的攻击,从而实现对软件的保护。
请参阅图2,是应用本发明软件保护方法的软件保护装置的原理框图。所述软件保护装置包括验证值生成单元110、比较单元120、扰码结果生成单元130、定时器140和校验单元150;所述验证值生成单元110用于在被保护的软件启动时从数据处理系统200获取信息并生成验证值;所述比较单元120用于比较验证值是否为预定值并影响数据处理系统200的运行;所述扰码结果生成单元130用于根据前述验证值生成扰码结果;所述定时器140用于在所述软件运行时触发校验单元150;所述校验单元150用于在软件启动或定时器到达预定周期时对前述扰码结果进行校验,并影响数据处理系统200的运行。
需要说明的是,所述验证值生成单元110和比较单元120可以集成在一起。
请参阅图3,是本发明软件保护方法的流程图。
首先,实施步骤S1,验证值生成单元110在所述软件启动时生成验证值,并且扰码结果生成单元130根据所述验证值生成扰码结果;步骤S2,判断验证是否通过,如是,则进入步骤S3;如否,则不允许数据处理系统200运行所述软件或进行所述软件的受限运行;步骤S3,允许运行所述软件,并启动定时器140;步骤S4,判断前述定时器140是否到达预定周期,如是,则进入步骤S5,如否,则不进行操作;步骤S5,校验单元150对前述扰码结果进行校验,判断校验是否通过,如是,则返回步骤S4;如否,则数据处理系统200退出所述软件的运行或进行所述软件的受限运行。
需要说明的是,所述步骤S2中,判断验证是否通过时,可以采用比较单元120对验证值进行比较,也可以采用校验单元150对扰码结果进行校验。
为了便于对本发明的理解,下面结合实施例对本发明做进一步的详细描述。
请参阅图4,当被保护的软件初始化时,首先执行步骤S11,选定扰码结果存储单元,所述扰码结果存储单元包括第一存储区和第二存储区。
随后,步骤S12中,验证值生成单元根据用户信息、产品序列号、数字签名和/或软件运行载体的标识生成验证值rtValue。
一并参阅图5,扰码结果生成单元产生一个长度与第一存储区宽度一致(如32位)的伪随机数rtResult.ulData1,将其保存在第一存储区;利用所述伪随机数rtResult.ulData1对验证值rtValue进行变换,生成第一变换结果rtResult.ulData2,将所述第一变换结果rtResult.ulData2保存在第二存储区。所述伪随机数rtResult.ulData1和第一变换结果rtResult.ulData2组成扰码结果rtResult。
本实施例中,所述变换操作采用H(rtResult.ulData1+rtValue)_32,即将伪随机数rtResult.ulData1和验证值rtValue相加,对其结果进行HASH变换,最后取HASH结果的前32位作为一个无符号整数。
可以理解的是,对于HASH变换的原始数据可以有两种处理方式其一,将32位整数rtResult.ulData1+rtValue作为一个4字节长字符串;其二,将32位整数rtResult.ulData1+rtValue的值变换为一个字符串。
步骤S13,比较单元对验证值rtValue进行比较,判断验证值rtValue是否为预定值,如是,则表示验证通过,执行步骤S14;如否,则表示验证不通过,将进行验证失败处理,退出软件运行或者屏蔽软件的部分功能进行软件的受限运行。
步骤S14,允许软件运行以进行业务处理,启动定时器。定时器的周期可以根据软件运行环境的特点自行选择。
步骤S15,判断定时器是否到达预定周期,如是,则进入步骤S16;如否,则不进行任何操作,不影响软件的正常运行。
一并参阅图6,步骤S16,当定时器到达预定周期时,对扰码结果进行校验。具体校验过程包括首先,从扰码结果存储单元读取扰码结果;进行变换操作,生成第二变换结果H(rtResult.ulData1+1)_32,即将伪随机数rtResult.ulData1加1,对其结果进行HASH变换,最后取HASH结果的前32位作为一个无符号整数;接着将第二变换结果H(rtResult.ulData1+1)_32和第一变换结果rtResult.ulData2进行“按位异或”,生成校验结果H(rtResult.ulData1+1)_32^rtResult.ulData2;最后,判断校验结果是否为预定值,判断校验是否通过,如是,则返回步骤S15;如否,则退出所述软件的运行或进行所述软件的受限运行。
本实施例中,设定只有当被保护的验证值rtValue为1时,扰码结果校验不通过。因此,如果最后的校验结果为0,则表示被保护的验证值为1,也就意味着扰码校验结果不通过。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种软件保护方法,其特征在于,包括步骤1)在所述软件启动时生成验证值,根据所述验证值生成扰码结果;2)判断验证是否通过,如是,则进入步骤3);如否,则不允许运行所述软件或进行所述软件的受限运行;3)运行所述软件,并启动定时器;4)判断前述定时器是否到达预定周期,如是,则进入步骤5);如否,则不进行操作;5)对前述扰码结果进行校验,判断校验是否通过,如是,则返回步骤4);如否,则退出所述软件的运行或进行所述软件的受限运行。
2.根据权利要求1所述的软件保护方法,其特征在于,所述步骤1)中,生成扰码结果具体包括11)生成伪随机数;12)利用所述伪随机数对验证值进行变换,生成第一变换结果。
3.根据权利要求2所述的软件保护方法,其特征在于所述步骤12)具体包括将伪随机数和验证值相加;对相加结果进行哈希变换。
4.根据权利要求3所述的软件保护方法,其特征在于将哈希变换结果作为字符串或者将哈希变换结果的值变换为字符串,所述字符串即第一变换结果。
5.根据权利要求2所述的软件保护方法,其特征在于,所述步骤5)具体包括51)对扰码结果进行变换操作,生成第二变换结果;52)根据前述第一变换结果和第二变换结果获得校验结果;53)判断校验结果是否为预定值。
6.根据权利要求5所述的软件保护方法,其特征在于所述步骤51)中变换操作是哈希变换;所述步骤52)中将第一变换结果和第二变换结果进行按位异或。
7.根据权利要求1所述的软件保护方法,其特征在于,所述步骤2)中,所述判断是否通过是判断验证值是否为预定值或对前述扰码结果进行校验。
8.根据权利要求1至7任一项所述的软件保护方法,其特征在于在所述步骤1)之前还包括选取扰码结果存储单元。
9.一种用于实现权利要求1所述的软件保护方法的软件保护装置,包括验证值生成单元,用于在所述软件启动时生成验证值;比较单元,用于比较验证值是否为预定值;其特征在于,还包括扰码结果生成单元,用于根据前述验证值生成扰码结果;定时器,用于在所述软件运行时触发校验装置;校验单元,用于在软件启动或定时器到达预定周期时对前述扰码结果进行校验。
10.根据权利要求9所述的软件保护装置,其特征在于所述验证值生成装置和比较装置集成为一体。
全文摘要
本发明公开了一种软件保护方法,包括步骤在所述软件启动时生成验证值,根据所述验证值生成扰码结果;判断验证是否通过;如果验证通过,运行所述软件,并启动定时器;判断前述定时器是否到达预定周期;如达到预定周期,对前述扰码结果进行校验,判断校验是否通过;如果通过,则继续检测定时器;如果未通过,则退出所述软件的运行或进行所述软件的受限运行。
文档编号G06F1/00GK1684017SQ20041003106
公开日2005年10月19日 申请日期2004年4月12日 优先权日2004年4月12日
发明者林中, 范云松, 谢永政 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1