软件保护方法和系统与流程

文档序号:11691225阅读:188来源:国知局
软件保护方法和系统与流程

本发明涉及软件安全领域,尤其涉及一种软件保护方法和系统。



背景技术:

在现有软件技术中,在软件(在本文中即各类软件,也称为“应用转件”)开发完成之后,其运行于软件开发者(文中也简称为“开发者”)不可控的环境中,该软件所有细节均暴露在使用者面前,若其意欲破解该软件,则传统的保护手段只能延迟其破解进度,而不能有效地阻止软件被破解。

目前最有效的软件保护方法是将运行软件必须用到的一些关键代码放到“安全环境”中运行,即,开发者根据开发过程所思所虑来挑选这些关键代码,可以将破解难度提高到接近重写软件的程度。

现有技术中所谓的“安全环境”是由特定的硬件提供的,如基于智能芯片的硬件锁(即,硬件加密锁),由于其易于日常使用,因此实际使用中也是这种硬件锁居多,其能提供一定程度的安全。究其具体原理,这种硬件锁通常内置有嵌入式操作系统,可以运行嵌入式程序,基于此嵌入式操作系统,最后开发者所开发的软件通过与硬件锁内的嵌入式程序通信,访问锁内数据,以控制软件的使用。具体地,开发者对设计后的软件所进行的操作如图1所示:

步骤1、抽取所设计的应用软件的关键代码;

步骤2、对所抽取的关键代码进行封装;

步骤3、将封装后的关键代码编译为锁内可执行的嵌入式程序(也可简称为“锁内可执行程序”或“可执行程序”);

步骤4、由(硬件锁提供商提供的)导入工具将上述可执行程序导入到硬件锁中,从而完成应用软件的开发。

通过上述操作之后,在运行软件的时候,可以通过与硬件锁内的可执行程序通信,以访问锁内数据,以控制软件的使用。

然而,该技术在使用过程有以下诸多问题:

其一,开发者需要向软件购买者(也即软件的最终使用者,用户)提供一把或者多把硬件锁,因此,软件购买者不仅需要承担购买硬件锁的硬件成本,而且需要负担由此带来的硬件锁采购及管理成本等;

其二,硬件锁经常与软件的用户的计算机(personalcomputer;pc机)存在匹配问题,导致用户无法使用软件,或者需要用户重装计算机的系统,甚至更换计算机;严重影响用户的软件使用;

其三,硬件锁本身的存储空间小,导致开发者只能移植少量关键代码或者逻辑至硬件锁,因而只能保障软件运行的低等级安全性;

其四,业界的硬件锁虽然都包含智能芯片,但性能远不及计算机的性能,加之开发者开发的软件如果比较庞大,或者对运算性能要求比较高,那么硬件锁的性能便不能满足软件的使用要求,因而会降低软件的良好使用性。



技术实现要素:

基于以上背景,本发明提出一种软件保护方法,其将应用于硬件锁的可执行程序无缝用于云锁平台,通过在云锁平台中设置模拟器来模拟硬件锁的容器环境,从而可以利用无限的可扩展的网络资源,既不用使用受限的硬件锁,又提高了可无限扩展的执行性能。

根据本发明的一个方面,提供了一种软件保护方法,将应用于硬件锁的至少一个可执行程序上传到云锁平台,至少一个可执行程序与软件的至少一个受保护代码段分别对应,云锁平台设置有模拟器,

根据本发明的软件保护方法可以包括:

接收来自软件的执行请求,执行请求用于请求执行至少一个可执行程序中的相应的可执行程序,并且执行请求中带有执行参数和对应相应的可执行程序的标识;

模拟器根据标识加载相应的可执行程序并进行翻译执行,在翻译执行过程中在需要输入参数时输入执行参数,从而得出结果数据;

向软件返回结果数据。

此外,在将应用于硬件锁的至少一个可执行程序上传到云锁平台之前,根据本发明的软件保护方法还可以包括:抽取软件中的至少一个代码段;对抽取的至少一个代码段分别进行封装;将封装后的至少一个代码段分别编译成至少一个可执行程序。

可选地,可执行程序可以为二进制可执行程序。

进一步地,模拟器可以为arm指令集模拟器,则上述模拟器根据标识加载相应的可执行程序并进行翻译执行可以包括:arm指令集模拟器根据标识加载相应的可执行程序,对相应的可执行程序中的二进制序列逐条进行翻译成符合arm指令集标准的源代码并执行的处理。

此外,根据本发明的软件保护方法还可以包括:在模拟器根据标识加载相应的可执行程序的同时,在云锁平台侧申请到至少两个缓冲区,其中一个缓冲区用于存储输入参数,另一个缓冲区用于存储结果数据。

可选地,根据本发明的软件保护方法还可以包括:在接收来自软件的执行请求之后,判断执行请求是否具备对于相应的可执行程序的请求权限;在判断结果为不具备请求权限时,拒绝处理执行请求。

根据本发明的另一个方面,提供了一种软件保护系统,软件保护系统预存有应用于硬件锁的至少一个可执行程序,至少一个可执行程序与软件的至少一个受保护代码段分别对应,根据本发明的装置可以包括:接口模块,其配置为接收来自软件的执行请求,执行请求用于请求执行至少一个可执行程序中的相应的可执行程序,并且执行请求中带有执行参数和对应相应的可执行程序的标识;模拟器,其配置为根据标识加载相应的可执行程序并进行翻译执行,在翻译执行过程中在需要输入参数时输入执行参数,从而得出结果数据;接口模块还配置为向软件返回结果数据。

其中,而可执行程序可以为二进制可执行程序。

进一步地,模拟器可以为arm指令集模拟器,arm指令集模拟器可以配置为根据标识加载相应的可执行程序,对相应的可执行程序中的二进制序列逐条进行翻译成符合arm指令集标准的源代码并执行的处理。

可选地,模拟器可以进一步配置为,在根据标识加载相应的可执行程序的同时,在软件保护系统中申请到至少两个缓冲区,其中一个缓冲区用于存储输入参数,另一个缓冲区用于存储结果数据。

优选地,根据本发明的装置还可以包括:判定模块,配置为判断接口模块接收的执行请求是否具备对于相应的可执行程序的请求权限,其中,模拟器配置为在判定模块的判断结果为执行请求不具备请求权限时,拒绝处理执行请求。

附图说明

图1所示为现有技术中软件开发者对设计后的软件所进行的操作的流程图;

图2所示为根据本发明的一个实施例的软件保护方法的流程图;

图3所示为根据本发明的一个实施例的软件保护系统的框图;

图4所示为根据本发明的一个实施例的软件保护系统。

具体实施方式

在此对本发明中提及的术语进行解释,翻译执行服务(见图4)模拟的是硬件锁的容器环境,arm指令集模拟器模拟的是硬件锁内代码的程序调用过程,即,在本发明实施例中,硬件锁内的模块利用软件来模拟实现。其中,arm指令集是一套标准指令,arm指令集模拟器是用来解释并执行arm指令集的,可执行程序是符合arm指令集的二进制表示的序列流。

根据本发明的一个实施例,提供了一种软件保护方法,如图2所示为根据本发明的软件保护方法的流程图。在根据本发明的软件保护方法中,预先将应用于硬件锁的至少一个可执行程序上传到云锁平台,至少一个可执行程序与软件的至少一个受保护代码段分别对应,云锁平台设置有模拟器。

根据本发明的软件保护方法可以包括:

s1,接收来自软件的执行请求,执行请求用于请求执行至少一个可执行程序中的相应的可执行程序,并且执行请求中带有执行参数和对应相应的可执行程序的标识;

s2,模拟器根据标识加载相应的可执行程序并进行翻译执行,在翻译执行过程中在需要输入参数时输入执行参数,从而得出结果数据;

s3,向软件返回结果数据。

此外,在预先将应用于硬件锁的至少一个可执行程序上传到云锁平台之前,根据本发明的软件保护方法还可以包括:抽取软件中的至少一个代码段;对抽取的至少一个代码段分别进行封装;将封装后的至少一个代码段分别编译成至少一个可执行程序。

在本发明实施例中,可执行程序可以为二进制可执行程序。

进一步地,模拟器可以为arm指令集模拟器,上述s2步骤中模拟器根据标识加载相应的可执行程序并进行翻译执行可以包括:arm指令集模拟器根据标识加载相应的可执行程序,对相应的可执行程序中的二进制序列逐条进行翻译成符合arm指令集标准的源代码并执行的处理,从而在讲可执行程序中的二进制序列均翻译完成后,几乎同时完成可执行程序的模拟执行过程。

此外,根据本发明的软件保护方法还可以包括:在模拟器根据标识加载相应的可执行程序的同时,在云锁平台侧申请到至少两个缓冲区,其中一个缓冲区用于存储输入参数,另一个缓冲区用于存储结果数据。

可选地,根据本发明的软件保护方法还可以包括:在接收来自软件的执行请求之后,判断执行请求是否具备对于相应的可执行程序的请求权限;在判断结果为不具备请求权限时,拒绝处理执行请求。

根据本发明的一个优选实施例,锁提供商为软件开发商提供与硬件锁内的授权管理系统匹配的编译器,然后软件开发商抽取所开发的软件中的至少一个代码段;对抽取的至少一个代码段分别进行封装;利用锁提供商提供的上述编译器将封装后的至少一个代码段分别编译成至少一个可执行程序,至少一个可执行程序与软件的至少一个受保护代码段分别对应,其中,可执行程序为二进制可执行程序或者称为二进制序列。上述至少一个可执行程序可以导入到硬件锁内,从而软件开发商通过授权管理系统对硬件锁进行管理。上述至少一个可执行程序也可以不导入硬件锁,而是由软件开发商直接将编译好的上述至少一个可执行程序上传到锁提供商所提供的云锁平台的数据库中,其中云锁平台设置有模拟器,其优选为arm指令集模拟器,其用于模拟硬件锁的容器环境。

根据本发明的一个实施例,根据本发明的软件保护方法可以包括:接收来自软件的执行请求,该执行请求用于请求执行至少一个可执行程序中的相应的可执行程序,并且执行请求中带有执行参数和对应于相应的可执行程序的标识,然后判断执行请求是否具备对于相应的可执行程序的请求权限;在判断结果为不具备请求权限时,拒绝处理执行请求,如果判断结果为具备请求权限时,将执行参数存储在云锁平台的内存中;

模拟器根据标识加载相应的可执行程序,在加载相应的可执行程序的同时,在云锁平台侧申请到至少两个缓冲区,其中可以包括一个缓冲区用于存储输入参数,在加载完成之后,模拟器对加载的可执行程序进行翻译执行,若在翻译执行过程中翻译出需要输入参数的功能函数时,从缓冲区中调取执行参数输入该功能函数来运行功能函数,从而得出结果数据,并将结果数据存储在另一个缓冲区中,优选地,在模拟器为arm指令集模拟器的情况下,arm指令集模拟器可以根据标识加载相应的可执行程序,对相应的可执行程序中的二进制序列逐条进行翻译成符合arm指令集标准的源代码并执行的处理;

向软件返回结果数据。

根据本发明的另一个方面,提供了一种软件保护系统。如图3所示为根据本发明的软件保护系统的框图。在根据本发明的软件保护系统预存有应用于硬件锁的至少一个可执行程序,至少一个可执行程序与软件的至少一个受保护代码段分别对应,根据本发明的系统可以包括:

接口模块,其配置为接收来自软件的执行请求,执行请求用于请求执行至少一个可执行程序中的相应的可执行程序,并且执行请求中带有执行参数和对应相应的可执行程序的标识;

模拟器,其配置为根据标识加载相应的可执行程序并进行翻译执行,在翻译执行过程中在需要输入参数时输入执行参数,从而得出结果数据;

接口模块还配置为向软件返回结果数据。

其中,可执行程序可以为二进制可执行程序。

进一步地,模拟器可以为arm指令集模拟器,arm指令集模拟器可以配置为根据标识加载相应的可执行程序,对相应的可执行程序中的二进制序列逐条进行翻译成符合arm指令集标准的源代码并执行的处理。

可选地,模拟器可以进一步配置为,在根据标识加载相应的可执行程序的同时,在软件保护系统中申请到至少两个缓冲区,其中一个缓冲区用于存储输入参数,另一个缓冲区用于存储结果数据。

优选地,根据本发明的装置还可以包括:判定模块,配置为判断接口模块接收的执行请求是否具备对于相应的可执行程序的请求权限,其中,模拟器配置为在判定模块的判断结果为执行请求不具备请求权限时,拒绝处理执行请求。

根据本发明的软件保护系统优选为在云系统中的云锁系统,由于其存储空间大,因此可以上传多个可执行程序,这些可执行程序可以对应一个软件中的多个需保护的代码段(例如一个软件有多个待保护功能时,其需要保护的关键代码段便为多个),或者多个软件中的多个代码段,每个软件至少具有一个受保护的代码段,而这多个软件可以授权给一个或多个用户。在云锁系统中具有多个可执行程序的情况下,为应对多个用户的执行请求,云锁系统可以具有多个接口模块和多个模拟器模块,在同时收到多个软件所发送的执行请求时,可以多线程处理多个执行请求。可选地,每个模拟器可以根据可执行程序的不同而进行不同的匹配配置,或者在某个可执行程序应用频繁的情况下,为该可执行程序配置多个相应的模拟器。从而满足用户的需求。

根据本发明的一个实施例,提供了一种云锁系统和应用软件的系统,如图4所示,示出了软件开发者、应用软件和云锁平台三端。这三端的交互过程描述如下:

1.软件开发者在锁提供商提供的云锁平台(如锁提供商的官网注册页面)进行信息注册;

2.开发者使用账号登录云锁平台,上传应用于硬件锁的可执行程序到云锁平台上,云锁平台将其存储在数据库内,上传的可执行程序对应于软件的受保护功能模块;

2.1开发者还可以在云锁平台上管理自己的软件,为不同的软件设置不同的授权方式;

例如,开发者a有一套计算器软件calculator,假设该软件有2个功能模块:加法和减法;

此时,开发者a在平台上添加授权,假设编号为1001:限制为只能使用加法,可以执行代码code1(加法功能代码);

开发者a在平台上添加授权,假设编号为1002:限制为只能使用减法,可以执行代码code2(减法功能代码);

2.2开发者还可以在云锁平台上管理自己的软件用户(增删改查等等诸如此类),为不同的软件用户配置不同的授权方式;

例如,开发者a在平台上为自己的软件用户sam添加一个账号:sam@163.com,并配置好账号信息(密码,个人身份信息等等);

然后,开发者a在平台上为sam的账号配置授权,如上所述,选择编号为1001的授权分配给sam的账户;

如此,sam使用账号登录软件时,则只能使用授权1001规定的内容;

--如何管理软件用户以及如何为用户配置授权不在专利范围内,以上只是列举例子帮助理解整个流程;

3.如此,开发者a在云锁平台上便方便的管理了自己的软件用户的软件授权;

4.软件用户sam拿到开发者a打包的软件后,运行软件,输入账号登录软件后(开发者提供的账号或者sam自己通过开发者提供的注册网址自行注册)即可使用软件相应的功能:

4.1用户输入账号登录,软件通过账号从云锁平台接入服务(具体的是授权接入服务)上查询授权内容,云锁平台返回该账号的授权内容为:只能使用加法;此时,软件仅显示加法功能;

4.2用户输入两个数字,执行加法功能,软件将两个数字、可执行程序的标识(唯一标识)、账号信息(通过token/session进行表示)提交到云锁平台的接入服务(具体的是代码执行接入服务),请求执行结果;

4.3代码执行接入服务收到请求,根据账号信息在云端数据库查询到该账号的授权关联的锁内代码是a开发者上传的code1,代码执行接入服务将两个数字和code1提交到后端代码执行服务;

4.4后端代码执行服务收到请求,通过arm指令集模拟器执行收到的代码code1及其两个参数,执行后原路返回结果;

4.5软件收到结果将其显示在界面上或继续后续的运行。

根据本发明的技术方案,现有技术中应用于硬件锁的可执行程序无需改动即可上传到云端的云锁平台使用,可使用云锁平台代替硬件锁来管理软件授权,从而节约对硬件锁的管理成本和时间。

本发明实施例实现应用于硬件锁的可执行程序能在云端执行的方法为在云端提供模拟器,例如arm模拟器,通过对上述可执行程序的翻译执行过程来模拟可执行程序的执行过程,达到与硬件锁同样的执行效果。这里的arm模拟器可以是标准的arm模拟器,或者是由硬件锁提供商定制的arm模拟器。如此,同一份可执行程序既可以在硬件锁内执行,也可以在云锁平台执行,做到了编译一次可执行程序,便可实现在硬件锁内和云锁平台内均可以运行的效果,并且不再受硬件锁的性能及存储空间的限制,只要有网络即可发行软件,不必向软件的最终用户邮寄安全硬件(硬件锁)等。由于不再受限于安全硬件的性能,实际可以移植的代码量大大增加,并且软件关键算法在云端,破解人员更无法接触实施破解,大大提高了软件的安全性。

以上对本发明的部分实施例进行了说明,但本发明不限于以上具体实施例,而是可以在不脱离本发明构思范围的情况下对实施例进行多种修改或变型。

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