一种程序运行方法、程序加壳方法及设备

文档序号:7912 发布日期:2021-09-17 浏览:49次 英文

一种程序运行方法、程序加壳方法及设备

技术领域

本申请涉及计算机领域,特别是涉及一种程序运行方法、程序加壳方法及设备。

背景技术

信息安全在现在的时代越来越重要,在信息安全领域,为用户设置运行程序的权限是非常关键的。传统技术通过系统进行自主访问控制(discretionary access control,DAC)进行权限控制。即预先设置好用户标识与有权限访问和/或没有权限访问的程序的对应关系,根据该对应关系控制程序的运行权限。

但是这种方式用户对一个程序要么就有权限访问,要么就没有权限访问,所以这种方式并不能适用于用户对同一个程序在一些场景下有运行权限,而在另外一些场景下没有运行权限的情况。

发明内容

本申请实施例提供了一种程序运行方法、程序加壳方法及设备,用于实现在不同的场景下对目标程序具有不同的运行权限的目的。

第一方面,本申请实施例提供了一种程序运行方法,所述方法包括如下步骤:第一设备获取用户触发的运行第一程序的请求,根据所述请求获取第一程序和场景信息,所述第一程序包括第一程序头、第一壳程序和目标程序,所述场景信息包括系统信息、时间信息和所述目标程序的版本信息中的一项或多项。目标程序为在一定条件下限制用户使用权限的程序。所述第一设备从所述第一程序头中获取所述第一壳程序的地址,并根据所述第一壳程序的地址运行所述第一壳程序,所述第一壳程序用于确定所述场景信息是否满足预设条件。当所述场景信息满足所述预设条件时,所述第一设备运行所述目标程序。由于第一程序的第一壳程序用于对场景信息是否满足预设条件进行验证,在验证通过之后,才可以执行第一程序,实现为用户在不同的场景下对目标程序具有不同的运行权限的目的。

可选的,为了验证用户的合法性,所述方法还包括:所述第一设备获取用户输入的验证码。相应的,所述第一壳程序用于确定所述场景信息是否满足预设条件,并在所述满足预设条件时运行所述目标程序包括:所述第一壳程序用于向服务器发送所述验证码,并接收所述服务器对所述验证码的验证结果;当所述验证结果为验证通过且所述场景信息满足所述预设条件时运行所述目标程序。当所述验证结果为验证通过,则说明用户为合法用户;如果验证不通过,则说明用户为不合法用户,起到对用户合法性验证的目的。

可选的,所述方法还包括:所述第一设备获取用户标识。所述第一壳程序还用于根据所述用户标识确定所述预设条件。其中,用户标识用于标识用户,不同的用户具有不同的用户标识,也就是说,不同的用户可以具有不同的权限。用户标识例如为用户的名称、账户号等,本申请不作具体限定。

可选的,所述第一设备获取用户触发的运行第一程序的请求,根据所述请求获取第一程序包括:所述第一设备获取用户触发的运行第二程序的请求,根据所述请求获取第二程序和密码,所述第二程序包括第二程序头、第二壳程序和所述第一程序;所述第一设备从所述第二程序头中获取所述第二壳程序的地址,并根据所述第二壳程序的地址运行所述第二壳程序,所述第二壳程序用于对所述密码进行验证,并在验证通过后得到所述第一程序。由于第二程序中的第二壳程序用于对密码进行验证,验证通过之后才可以运行第一程序,所以能够在实现了为用户在不同的场景下对目标程序具有不同的运行权限的目的的同时,实现保证第一程序的安全性的目的。

第二方面,本申请实施例还提供了一种程序加壳方法,所述方法包括:第二设备获取目标程序和第一壳程序,所述第一壳程序用于确定场景信息是否满足预设条件,并在所述满足预设条件时运行所述目标程序,所述场景信息包括系统信息、时间信息和所述目标程序的版本信息中的一项或多项;所述第二设备根据所述目标程序和所述第一壳程序生成第一程序,所述第一程序包括第一程序头、所述第一壳程序和所述目标程序,所述第一程序头中包括所述第一壳程序的地址;所述第二设备向第一设备发送所述第一程序。生成第一程序的过程就是将第一壳程序加壳在目标程序上的过程,在加壳之后,运行第一程序需要首先根据第一程序头中第一壳程序的地址运行第一壳程序,当第一壳程序运行结束之后,才可以根据运行结果确定是否运行目标程序。如果第一壳程序的运行结果是场景信息预设条件,才可以继续运行目标程序,如果第一壳程序的运行结果是场景信息不满足预设条件,那么就不运行目标程序了,以此起到为目标程序设置权限的目的。由于场景信息是可变的,所以能够提供用户在不同的场景下对目标程序具有不同的权限的目的。

可选的,所述第一壳程序还用于根据所述用户标识确定所述预设条件。其中,用户标识用于标识用户,不同的用户具有不同的用户标识,也就是说,不同的用户可以具有不同的权限。用户标识例如为用户的名称、账户号等,本申请不作具体限定。

可选的,所述第二设备向第一设备发送所述第一程序包括:所述第二设备获取第二壳程序,所述第二壳程序用于对密码进行验证,并在验证通过时运行所述第一程序;所述第二设备根据所述第二壳程序和所述第一程序生成第二程序,所述第二程序包括第二程序头、第二壳程序和所述第一程序,所述第二程序头包括所述第二壳程序的地址;所述第二设备向所述第一设备发送所述第二程序。由于生成第二程序的过程就是将第二壳程序加壳在第一程序上的过程。在执行第二程序时,就需要先根据第二壳程序的地址执行第二壳程序,当第二壳程序对密码验证通过,才能执行第一程序;如果第二壳程序对密码验证不通过,那么就无法执行第一程序。通过这种方式起到保证第一程序的安全性,尽量避免第一程序被篡改的目的。

第三方面,本申请实施例还提供了一种第一设备,所述第一设备包括:处理器和存储器,所述存储器用于存储计算机程序或指令,所述处理器用于调用存储器中存储的计算机程序或指令,使得所述第一设备执行上述第一方面的程序运行方法。

第四方面,本申请实施例还提供了一种第二设备,所述第二设备包括:处理器和存储器,所述存储器用于存储计算机程序或指令,所述处理器用于调用存储器中存储的计算机程序或指令,使得所述第二设备执行上述第二方面的程序加壳方法。

第五方面,本申请实施例还提供了一种程序运行系统,该系统包括第三方面的第一设备和第四方面的第二设备。

第六方面,本申请实施例还提供了一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面的程序运行方法或第二方面的程序加壳方法。

附图说明

图1为本申请实施例提供的系统100的结构框图;

图2为本申请实施例提供的程序运行方法的流程示意图;

图3为本申请实施例提供的程序运行方法的另外一个流程图;

图4为本申请实施例提供的第一设备400的结构框图;

图5为本申请实施例提供的第二设备500的结构框图。

具体实施方式

本申请实施例提供了一种程序运行方法、程序加壳方法及装置,用于实现用户在不同的场景下对同一个程序有不同的运行权限的目的。

为方便理解,首先对本申请实施例的应用场景进行介绍。

参见图1,该图为本申请实施例提供的系统100的结构框图。

在图1中,系统100包括设备101、设备102和服务器103。其中,设备101与设备102连接,服务器103与设备102连接。

其中,设备101和设备102可以例如为终端设备、接入设备、转发设备、服务器等,本申请不做具体限定。

终端设备又称之为用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)、终端等,是一种向用户提供语音和/或数据连通性的设备,或,设置于该设备内的芯片,例如,具有无线连接功允许的手持式设备、车载设备等。目前,一些终端设备的举例为:手机(mobile phone)、平板电脑、笔记本电脑、台式电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtualreality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrialcontrol)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remotemedical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。

接入设备例如可以是网关等。

转发设备例如可以是路由器、交换机等。

参见图2,该图为本申请实施例提供的程序运行方法的流程示意图。

在图2中,本申请实施例提供的程序运行方法包括如下步骤:

S101:第二设备获取目标程序和第一壳程序。

在本申请实施例中,第二设备可以例如为图1所示实施例中的设备101。

在本申请实施例中,目标程序为在一定条件下限制用户使用权限的程序。第一壳程序用于确定场景信息是否满足预设条件,并在满足预设条件时运行目标程序。

在本申请实施例中,场景信息用于判断用户是否有权限触发运行目标程序。场景信息包括系统信息、时间信息和目标程序的版本信息等中的一项或多项。系统信息可以是第一设备运行的系统的相关信息,例如系统版本号、CPU负载率、内存占用率等。第一设备例如为图1所示实施例中的设备102。时间信息例如为用户触发运行第一程序的请求的时间,或者下文中第一设备向服务器发送场景信息的时间等。目标程序的版本信息例如包括版本号、开发者信息等。

在本申请实施例中,如果场景信息满足预设条件,那么说明用户有权限触发运行目标程序;如果场景信息不满足预设条件,那么说明用户没有权限触发运行目标程序。

例如,场景信息包括CPU负载率,如果当CPU负载率小于或等于阈值(比如80%),那么在这种场景下可以允许用户触发运行目标程序;反之,如果CPU负载率大于阈值,那么在这种场景下不允许用户触发运行目标程序。

再例如,场景信息包括用户触发运行第一程序的请求的时间,那么当用户在预设时间段(例如9:00am-6:00pm)内触发该请求可以有权限运行目标程序,而在其他时间段触发则没有权限运行。

再例如,场景信息包括目标程序的版本号,如果目标程序的版本号为预设版本,那么用户有权限运行该目标程序,如果版本号不为该预设版本,则没有权限运行该目标程序。

可选的,第一壳程序还用于根据用户标识(User Identifier,UID)确定预设条件,其中,用户标识用于标识用户,不同的用户具有不同的用户标识,也就是说,不同的用户可以具有不同的权限。用户标识例如为用户的名称、账户号等,本申请不作具体限定。

例如,当场景信息为用户触发运行第一程序的请求的时间,该第一程序包括目标程序S。用户A对应的预设时间段为9:00am-6:00pm,用户B对应的预设时间段为8:00pm-8:00am。也就是说,在9:00am-6:00pm这个时间段内允许用户A触发运行目标程序S,在8:00pm-8:00am这个时间段允许用户B触发运行目标程序S。

S102:第二设备根据目标程序和第一壳程序生成第一程序。

第一程序包括第一程序头、第一壳程序和目标程序,第一程序头中包括第一壳程序的地址。在本申请实施例中,生成第一程序的过程就是将第一壳程序加壳在目标程序上的过程,在加壳之后,运行第一程序需要首先根据第一程序头中第一壳程序的地址运行第一壳程序,当第一壳程序运行结束之后,才可以根据运行结果确定是否运行目标程序。如果第一壳程序的运行结果是场景信息预设条件,才可以继续运行目标程序,如果第一壳程序的运行结果是场景信息不满足预设条件,那么就不运行目标程序了,以此起到为目标程序设置权限的目的。由于场景信息是可变的,所以能够提供用户在不同的场景下对目标程序具有不同的权限的目的。

S103:第二设备向第一设备发送第一程序。

S104:第一设备获取用户触发的运行第一程序的请求,根据请求获取第一程序和场景信息。

S105:第一设备从第一程序的第一程序头中获取第一壳程序的地址,并根据第一壳程序的地址运行第一壳程序。

根据上文描述,第一壳程序用于确定场景信息是否满足预设条件,运行第一壳程序即执行判断场景信息是否满足预设条件的步骤。可选的,第一壳程序还可以用于根据用户标识确定预设条件。所以相应的,第一设备还可以根据上述用户触发的运行第一程序的请求获取用户标识,在运行第一壳程序时执行根据用户标识确定预设条件的步骤。

S106:当场景信息满足预设条件时,第一设备运行目标程序。

可选的,为了验证用户的合法性,在本申请实施例中,第一壳程序还用于向服务器(例如图1所示的服务器103)发送验证码,并接收服务器对验证码的验证结果,当验证结果为验证通过且场景信息满足预设条件时运行目标程序。所以相应的,第一设备还需要获取用户输入的验证码。在实际应用中,用户可以有多种途径获知验证码,例如服务器预先将验证码通过邮件、短信、社交软件等方式发送给用户的终端设备。验证码可以是随时间动态变化的,在一段时间内有效,超过该段时间则服务器验证无效。在本申请实施例中,如果验证码验证通过,则说明用户为合法用户;如果验证不通过,则说明用户为不合法用户。可选的,第一壳程序的执行流程可以是:先获取验证码的验证结果,如果验证结果为通过,再判断场景信息是否满足预设条件。

本申请实施例通过对目标程序进行加壳,得到第一程序,第一程序的第一壳程序用于对场景信息是否满足预设条件进行验证,在验证通过之后,才可以执行第一程序,实现为用户在不同的场景下对目标程序具有不同的运行权限的目的。

参见图3,该图为本申请实施例提供的程序运行方法的另外一个流程图。

在图3中,本申请实施例提供的程序运行方法包括如下步骤:

S201:第二设备获取目标程序和第二壳程序。

在本申请实施例中,第二设备可以例如为图1所示实施例中的设备101。

在本申请实施例中,第二壳程序用于对密码进行验证,并在验证通过时运行第一程序。第一程序的相关介绍请参见上文,此处不再赘述。

在本申请实施例中。第二壳程序是一个解密算法,该解密算法可以是非对称加密算法,例如RSA(Rivest–Shamir–Adleman)、椭圆曲线密码(Elliptic Curve Cryptography,ECC)等,也可以是对称加密算法。

如果是非对称加密算法,那么第二设备可以用公钥对第一程序进行加密,第二壳程序用于根据私钥对加密的第一程序进行解密,得到该第一程序。

S202:第二设备根据第二壳程序和第一程序生成第二程序。

在本申请实施例中,第二程序包括第二程序头、第二壳程序和第一程序,第二程序头包括第二壳程序的地址。

在本申请实施例中,生成第二程序的过程就是将第二壳程序加壳在第一程序上的过程。在执行第二程序时,就需要先根据第二壳程序的地址执行第二壳程序,当第二壳程序对密码验证通过,才能执行第一程序;如果第二壳程序对密码验证不通过,那么就无法执行第一程序。通过这种方式起到保证第一程序的安全性,尽量避免第一程序被篡改的目的。

S203:第二设备向第一设备发送第二程序。

在本申请实施例中,第一设备例如为图1所示实施例中的设备102。

S204:第一设备获取用户触发的运行第二程序的请求,根据请求获取第二程序和密码。

在本申请实施例中,密码可以是用户输入的,也可以是预先保存的。

S205:第一设备从第二程序头中获取第二壳程序的地址,并根据第二壳程序的地址运行第二壳程序。

如前文所提,运行第二壳程序的过程就是对密码进行验证的过程,在验证通过后第一设备才可以继续运行第一程序。

S206:当第二壳程序对密码的验证结果为通过,第一设备从第一壳程序的第一程序头中获取第一壳程序的地址,并根据第一壳程序的地址运行第一壳程序,第一壳程序用于确定场景信息是否满足预设条件。

S207:当场景信息满足预设条件时,第一设备运行目标程序。

在本申请实施例中,S206和S207的内容与上文中S105和S106的内容相同,所以请参见上文,此处不再赘述。

本申请实施例对第一程序进行加壳,得到第二程序,该第二程序中的第二壳程序用于对密码进行验证,验证通过之后才可以运行第一程序,可见在实现了为用户在不同的场景下对目标程序具有不同的运行权限的目的的同时,实现保证第一程序的安全性的目的。

此外,参见图4,本申请实施例还提供了一种第一设备400,所述第一设备400包括:存储器401、处理器402和通信接口403。其中,

存储器401、处理器402和通信接口403通过总线404相互连接;总线404可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

在具体实施例中,处理器401用于获取用户触发的运行第一程序的请求,根据所述请求获取第一程序和场景信息,所述第一程序包括第一程序头、第一壳程序和目标程序,所述场景信息包括系统信息、时间信息和所述目标程序的版本信息中的一项或多项;从所述第一程序头中获取所述第一壳程序的地址,并根据所述第一壳程序的地址运行所述第一壳程序,所述第一壳程序用于确定所述场景信息是否满足预设条件;当所述场景信息满足所述预设条件时,所述第一设备运行所述目标程序。该处理器401的详细处理过程请参考上述图2所示实施例中S104-S106或图3所示实施例中S204-S207的详细描述,这里不再赘述。

通信接口403用于接收来自第一程序。具体的过程请参考上述图2或图3所示实施例的详细描述,这里不再赘述。

此外,参见图5,本申请实施例还提供了一种第二设备500,所述第二设备500包括:存储器501、处理器502和通信接口503。其中,

存储器501、处理器502和通信接口503通过总线504相互连接;总线504可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

在具体实施例中,处理器501用于获取用户触发的运行第一程序的请求,根据所述请求获取第一程序和场景信息,所述第一程序包括第一程序头、第一壳程序和目标程序,所述场景信息包括系统信息、时间信息和所述目标程序的版本信息中的一项或多项;从所述第一程序头中获取所述第一壳程序的地址,并根据所述第一壳程序的地址运行所述第一壳程序,所述第一壳程序用于确定所述场景信息是否满足预设条件;当所述场景信息满足所述预设条件时,所述第一设备运行所述目标程序。该处理器501的详细处理过程请参考上述图2所示实施例中S101-S103或图3所示实施例中S201-S203的详细描述,这里不再赘述。

通信接口503用于发送第一程序。具体的过程请参考上述图2或图3所示实施例的详细描述,这里不再赘述。

上述存储器401和存储器501可以是随机存取存储器(random-access memory,RAM)、闪存(flash)、只读存储器(read only memory,ROM)、可擦写可编程只读存储器(erasable programmable read only memory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read only memory,EEPROM)、寄存器(register)、硬盘、移动硬盘、CD-ROM或者本领域技术人员知晓的任何其他形式的存储介质。

上述处理器402和处理器502例如可以是中央处理器(central processing unit,CPU)、通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。

上述通信接口403和通信接口503例如可以是接口卡等,可以为以太(ethernet)接口或异步传输模式(asynchronous transfer mode,ATM)接口。

本申请实施例还提供了一种程序运行系统,该系统包括图4所示实施例中的第一设备400和图5所示实施例中的第二设备500。

本申请实施例还提供了一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行上述第一设备400执行的程序运行方法或第二设备500执行的程序加壳方法。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本申请中“至少一项(个)”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。本申请中认为“A和/或B”包含单独A,单独B,和A+B。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑模块划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要获取其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各模块单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件模块单元的形式实现。

所述集成的单元如果以软件模块单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:验证驻留在远程计算设备上的软件

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类