CN116451185A - 一种应用程序的保护方法及装置 - Google Patents

一种应用程序的保护方法及装置 Download PDF

Info

Publication number
CN116451185A
CN116451185A CN202310245186.6A CN202310245186A CN116451185A CN 116451185 A CN116451185 A CN 116451185A CN 202310245186 A CN202310245186 A CN 202310245186A CN 116451185 A CN116451185 A CN 116451185A
Authority
CN
China
Prior art keywords
application program
hardware
file
value
terminal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310245186.6A
Other languages
English (en)
Inventor
薛兆井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Armyfly Technology Co Ltd
Original Assignee
Beijing Armyfly Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Armyfly Technology Co Ltd filed Critical Beijing Armyfly Technology Co Ltd
Priority to CN202310245186.6A priority Critical patent/CN116451185A/zh
Publication of CN116451185A publication Critical patent/CN116451185A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例公开了一种应用程序的保护方法及装置,该方法可以包括如下步骤:获取本地的硬件信息;根据所述硬件信息加密生成特定硬件标记信息,将所述硬件标记信息发送至工作终端;以使所述工作终端根据其自身生成的私钥和所述硬件标记信息得到授权文件;获取所述工作终端发送的所述授权文件,当应用程序启动时,通过所述授权文件进行校验操作,若校验成功,则继续执行应用程序的启动步骤。通过绑定硬件信息的方式来保护应用程序的加密保护性,提高应用程序的加密安全性,提高了应用程序的应用范围,降低了软件厂家的损失。

Description

一种应用程序的保护方法及装置
技术领域
本申请涉及计算机软件技术领域,尤其涉及一种应用程序的保护方法及装置、嵌入式设备、计算机可读存储介质。
背景技术
在很多场合,软件版本保护是很有必要的,现在出现了越来越多的软件硬件分开生产的合作情形,硬件厂家为了适应市场需求,需要不断的改变硬件方案,而软件则是需要适应不同的硬件,软件按照硬件数量收费,即每出一台硬件,软件就单独收费一次。
所以软件厂家对自己的软件进行版本保护也是很有必要的,否则硬件厂家直接拿flash拷贝就可以得到相同的程序,造成软件厂家较大的损失。
发明内容
本申请实施例提供一种应用程序的保护方法及装置、嵌入式设备、计算机可读存储介质,能够通过绑定硬件信息的方式来保护应用程序的加密保护性。
第一方面,本申请实施例提供了一种应用程序的保护方法,应用于目标终端,所述目标终端与工作终端连接,方法包括如下步骤:
获取本地的硬件信息;
根据所述硬件信息加密生成特定硬件标记信息,将所述硬件标记信息发送至工作终端;以使所述工作终端根据其自身生成的私钥和所述硬件标记信息得到授权文件;
获取所述工作终端发送的所述授权文件,当应用程序启动时,通过所述授权文件进行校验操作,若校验成功,则继续执行应用程序的启动步骤。
实施本申请实施例,通过绑定硬件信息的方式来保护应用程序的加密保护性,提高应用程序的加密安全性,提高了应用程序的应用范围,降低了软件厂家的损失。
在一种可能的实现方式中,所述方法包括:所述硬件信息包括CPU序列号、CPU描述字符串、MAC地址;所述根据所述硬件信息加密生成特定的硬件标记信息,包括:
将所述CPU序列号、CPU描述字符串、MAC地址转化为特定格式字符串;
将所述特定格式字符串进行算法加密操作,得到特定的硬件标记信息。
在一种可能的实现方式中,所述方法还包括:
根据授权动态库文件进行防篡改操作;其中,所述授权动态库文件为所述工作终端根据公钥、解密函数及校验函数生成的文件,所述公钥由所述工作终端生成。
在一种可能的实现方式中,所述根据授权动态库文件进行防篡改操作,包括:
获取所述工作终端发送的授权动态库文件,所述授权动态库文件为所述工作终端根据公钥、解密函数及校验函数生成,所述公钥由所述工作终端生成;
获取所述工作终端发送的第一应用程序和加密结果文件,并提取所述第一应用程序中的第一md5值和所述加密结果文件中通过授权动态库文件中的公钥解密后的第二md5值,其中,所述第一应用程序为所述工作终端将所述授权动态库文件的第一md5值写入所述应用程序的头文件的程序,所述加密结果文件为所述工作终端将所述应用程序的第二md5值通过私钥进行加密得到的文件;
在应用程序启动时,所述目标终端针对所述授权动态库文件和所述应用程序分别进行md5值计算操作,得到第三md5值和第四md5值;
将所述第三md5值与所述第一md5值进行比较,判断授权动态库文件是否被篡改;
将所述第二md5值与所述第四md5值进行比较,判断应用程序是否被篡改。
实施本申请实施例,增加了授权动态库文件及应用程序的防篡改机制,避免篡改程序跳过篡改授权校验,增加了应用程序的防篡改性能。
第二方面,本申请实施例提供了一种应用程序的保护方法,应用于工作终端,所述工作终端与目标终端连接,方法包括如下步骤:
生成私钥;
获取所述目标终端发送的硬件标记信息,所述硬件标记信息为所述目标终端对其本地的硬件信息进行加密生成的特定的硬件标记信息;
根据所述私钥和所述硬件标记信息得到授权文件,并将所述授权文件发送至所述目标终端,以使所述目标终端再应用程序启动时校验所述授权文件,并在校验成功时继续执行所述应用程序启动的步骤。
实施本申请实施例,通过绑定硬件信息的方式来保护应用程序的加密保护性,提高应用程序的加密安全性,提高了应用程序的应用范围,降低了软件厂家的损失。
在一种可能的实现方式中,所述根据所述私钥和所述硬件标记信息得到授权文件,包括:
针对硬件标记信息进行反向算法解析操作,得到硬件信息;
通过私钥将所述硬件信息进行加密,得到授权文件。
在一种可能的实现方式中,所述方法还包括:
生成公钥,将所述公钥、解密函数及校验函数生成所述授权动态库文件,并将所述授权动态库文件发送至所述目标终端;
计算授权动态库文件的的第一md5值,并将所述第一md5值写入应用程序的头文件,得到第一应用程序;
计算每个所述应用程序的第二md5值,针对每个应用程序的第二md5值通过私钥进行加密,得到加密结果文件;
将所述第一应用程序和所述加密结果文件发送给所述目标终端,以使所述目标终端在应用程序启动时基于所述第一应程序中的第一md5值和针对所述授权动态库文件计算出的第三md5值确定所述授权动态库文件是否被篡改,以及基于所述加密结果文件中通过授权动态库文件中的公钥解密后的第二md5值和针对所述应用程序计算出的第四md5值确定所述用程序是否被篡改。
实施本申请实施例,增加了授权动态库文件及应用程序的防篡改机制,避免篡改程序跳过篡改授权校验,增加了应用程序的防篡改性能。
第三方面,本申请实施例提供了一种应用程序的保护装置,该应用程序的保护装置包括用于执行上述第一方面的方法的单元。具体地,该应用程序的保护装置包括:
硬件信息获取模块,用于获取本地的硬件信息;
硬件标记信息生成模块,用于根据所述硬件信息加密生成特定硬件标记信息,将所述硬件标记信息发送至工作终端;以使所述工作终端根据其自身生成的私钥和所述硬件标记信息得到授权文件;
校验模块,用于获取所述工作终端发送的所述授权文件,当应用程序启动时,通过所述授权文件进行校验操作,若校验成功,则继续执行应用程序的启动步骤。
第四方面,本申请实施例提供了一种应用程序的保护装置,该应用程序的保护装置包括用于执行上述第一方面的方法的单元。具体地,该应用程序的保护装置包括:
私钥生成模块,用于生成私钥;
硬件标记信息获取模块,用于获取所述目标终端发送的硬件标记信息,所述硬件标记信息为所述目标终端对其本地的硬件信息进行加密生成的特定的硬件标记信息;
授权文件获取模块,用于根据所述私钥和所述硬件标记信息得到授权文件,并将所述授权文件发送至所述目标终端,以使所述目标终端再应用程序启动时校验所述授权文件,并在校验成功时继续执行所述应用程序启动的步骤。
第五方面,本申请实施例提供了一种嵌入式设备,包括工作终端或目标终端,工作终端或目标终端包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储支持嵌入式设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的一种应用场景的示意图;
图2是本申请实施例提供的一种应用程序的保护方法实施例的步骤流程图;
图3是本申请实施例提供的一种算法加密操作步骤的流程图;
图4是本申请实施例提供的一种授权文件获取步骤的流程图;
图5是本申请实施例提供的一种防篡改步骤的流程图;
图6是本申请实施例提供的一种应用程序的保护装置实施例的结构框图;
图7是本申请实施例提供的一种应用程序的保护装置实施例的结构框图;
图8是本申请实施例提供的一种嵌入式设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区分不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一些列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。需要说明的是,本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方法不应被解释为比其他实施例或设计方案更优地或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。在本申请实施例中,“A和/或B”表示A和B,A或B两个含义。“A,和/或B,和/或C”表示A、B、C中的任一个,或者,表示A、B、C中的任两个,或者,表示A和B和C。
为了便于更好的理解本申请,下面介绍本申请所描述的方法的硬件应用场景:
参见图1,本申请实施例提供的一种应用场景的示意图。如图1所示,上述的应用场景的终端可以包括目标终端、工作终端,目标终端与工作终端可以通过网络连接,具体地,两者可以通过有线或无线的方式连接,例如,通过线缆或无线网络的方式连接,本申请实施例对此不作过多的限制,其中,目标终端可以为嵌入式设备,而工作终端可以为嵌入式设备或其他种类的计算机设备。
需要说明的是,该目标终端即为客户终端,运行目标软件的终端,目标软件一般在目标终端进行校验,而工作终端为加密及传输目标软件至目标终端的终端。
参照图2,示出了本申请实施例的一种应用程序的保护方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,所述工作终端生成私钥;
本申请实施例中,工作终端首先可以生成私钥及公钥,在一种具体实现中,可以通过openssl开源工具,生成公钥和私钥;在一种具体示例中,该私钥为:openssl genrsa-outprv.key 4096;其中,genras表示生成的是私钥;-out表示输出的私钥文件名是prv.key;4096表示秘钥长度是4096比特;
而公钥为:openssl rsa-in prv.key-RSAPublicKey_out-out pub2.key;其中,rsa表示RSA秘钥管理;-in表示输入私钥的文件是prv.key;-out表示提取的公钥文件名为pub2.key;RSAPublicKey_out表示后面的-out后面跟着文件名是输出的公钥文件名。
步骤102,所述目标终端获取本地的硬件信息;
另一方面,该目标终端可以获取到本地的硬件信息,具体而言,该硬件信息可以包括目标终端的硬件相关的参数,如CPU、内存、主板、硬盘、扩展卡及网卡的相关硬件参数,本申请实施例对硬件的种类不作过多的限制。
步骤103,所述目标终端根据所述硬件信息加密生成特定硬件标记信息,将所述硬件标记信息发送至工作终端;
进一步应用到本申请实施例中,该目标终端根据所述硬件信息加密生成特定硬件标记信息,然后将所述硬件标记信息发送至工作终端。
在一种具体的申请实施例中,参照图3,示出了本申请实施例的一种算法加密操作步骤的流程图,所述硬件信息可以包括CPU序列号、CPU描述字符串、MAC地址;所述目标终端根据所述硬件信息加密生成特定硬件标记信息,包括以下子步骤:
子步骤11,所述目标终端将所述CPU序列号、CPU描述字符串、MAC地址转化为特定格式字符串;
子步骤12,所述目标终端将所述特定格式字符串进行算法加密操作,得到特定硬件标记信息。
目标终端可以将常规的硬件信息,如CPU序列号、CPU描述字符串、MAC地址转化为预设的特定格式字符串,然后针对该特定格式字符串进行混淆等加密操作,得到特定硬件标记信息,并将该特定硬件标记信息发送至工作终端。
在一种具体示例中,该CPU序列号为/proc/cpuinfo中存在的CPU序列号,CPU描述字符串为/proc/cpuinfo中存在的CPU描述字符串,MAC地址为MAC网卡地址,如从/sys/class/net/ethx/address获取的网卡地址。
进一步地,目标终端读取上述三个硬件信息,转化为如下的特定格式字符串:
cpu:xxxxxxxxx;
cpu-des:xxxxxxxxx;
eth1:xx:xx:xx:xx:xx:xx;
eth2:xx:xx:xx:xx:xx:xx;
再通过screw算法加密混淆上述的字符串,得到特定硬件标记信息,即xxxxx.hwmark文件,将该xxxxx.hwmark文件发送至工作终端,将明文信息转化为密文信息,隐密性高,保密性好,提高信息的安全性。
步骤104,所述工作终端根据特定硬件标记信息及所述私钥得到授权文件,将所述授权文件发送至目标终端;
在实际应用中,工作终端接收到xxxxx.hwmark文件后,可以将该xxxxx.hwmark文件进行反向解析,得到目标终端的硬件信息,通过私钥将硬件信息进行加密,得到授权文件,将授权文件及对应的应用程序发送至目标终端。
在一种具体的申请实施例中,参照图4,示出了本申请实施例的一种授权文件获取步骤的流程图,所述工作终端根据特定硬件标记信息及所述私钥得到授权文件,包括以下子步骤:
子步骤21,所述工作终端针对特定硬件标记信息进行反向算法解析操作,得到硬件信息;
本申请实施例中,工作终端首先读取该xxxxx.hwmark文件,通过反向screw算法进行反向算法解析操作,得到硬件信息。
子步骤22,所述工作终端通过私钥将所述硬件信息进行加密,得到授权文件。
进一步地,工作终端打开私钥prv.key,读取rsa私钥和rsa长度,通过私钥将硬件信息字符串加密并生成xxxxx.license文件,即授权文件。
在一种实施例中,所述方法还包括:所述工作终端将公钥、解密函数及校验函数生成授权动态库文件,同样将所述授权动态库文件发送至所述目标终端,该授权动态库文件主要作用是解密加密结果文件,因为此前加密结果文件通过私钥进行了加密,因此需要通过目标终端的公钥进行解密操作,私钥及公钥两者属于非对称加密算法。
其中,授权动态库文件中的公钥和解密函数用于目标终端使用解密解密结果文件得到第二md5值,授权动态库文件中的校验函数用于目标终端使用提取第一应用程序中的第一md5值。
步骤105,当应用程序启动时,所述目标终端通过所述授权文件进行校验操作,若校验成功,则继续执行应用程序的启动步骤。
本申请的具体应用中,目标终端得到授权文件、应用程序后,在第一次启动应用程序时,通过所述授权文件进行校验操作,若校验成功,则继续执行应用程序的启动步骤;具体而言,目标终端可以通过加密结果文件中的公钥解密授权文件中的硬件信息,得到硬件信息后,目标终端将该解密后的硬件信息与本地的硬件信息进行对比,若两者一致,则认为校验成功,则继续执行应用程序的启动步骤。
本申请实施例中,提出了一种适用于嵌入式设备的应用程序加密保护方案,通过绑定硬件信息的方式来保护应用程序的加密保护性,提高应用程序的加密安全性,提高了应用程序的应用范围,降低了软件厂家的损失。
在一种优选的申请实施例中,该方法还包括:根据授权动态库文件进行防篡改操作;参照图5,示出了本申请实施例的一种防篡改步骤的流程图,包括:
步骤201,在应用程序编译时,所述工作终端计算授权动态库文件的md5值,得到第一md5值,并将所述第一md5值写入应用程序的头文件,将所述应用程序发送至目标终端;
在应用程序的编译阶段,工作终端对授权动态库文件进行取md5值,得到第一md5值,将该第一md5值写入应用程序的头文件中,编译应用程序都需要进行同样的操作,应用程序可以被发送于目标终端。
步骤202,所述工作终端计算应用程序的md5值,得到第二md5值;
步骤203,所述工作终端针对每个应用程序的第二md5值通过私钥进行加密,得到加密结果文件,将所述加密结果文件与应用程序发送至目标终端;
具体而言,该工作终端可以计算应用程序的md5值,得到第二md5值,然后针对每个应用程序的第二md5值通过私钥进行加密,得到加密结果文件。
步骤204,在应用程序启动时,所述目标终端针对所述授权动态库文件进行md5值计算操作,得到第三md5值;
另一方面,在目标终端控制应用程序启动时,进行第一md5值及第二md5值的校验,具体地,目标终端首先对从工作终端获取到的授权动态库文件进行md5值计算操作,得到第三md5值。
步骤205,所述目标终端计算应用程序的md5值,得到第四md5值;
进一步地,目标终端可以计算从工作终端获取到的应用程序的md5值,得到第四md5值。
步骤206,所述目标终端将所述第三md5值与第一md5值进行比较,判断授权动态库文件是否被篡改;
针对第一md5值及第三md5值进行比对,即将目标终端本地的授权动态库文件的md5值与应用程序的头文件中的md5值进行比对,判断两者是否一致,若一致,则授权动态库文件未被篡改,若不一致,则授权动态库文件被篡改,可以发出被篡改提醒信息至用户。
步骤207,所述目标终端将所述加密结果文件通过授权动态库文件中的公钥进行解密,得到第二md5值,第二md5值与第四md5值进行比较,判断应用程序是否被篡改。
在该过程中,首先通过第三md5值与第一md5值进行比较,确定授权动态库文件是否被篡改,若其被篡改,则说明其中的公钥、解密函数及校验函数可能会篡改,则不再使用其公钥对加密结果文件进行解密得到第二md5值,在授权动态库文件未被修改的前提下才使用其公钥对加密结果文件进行解密得到第二md5值,进而对第二md5值和第四md5值,确定应用程序是否被篡改,采用双重加解密的方式,充分确保应用程序在启动前不会被篡改,实现软件版本的保护目的。
此外,加密结果文件中包含一种或多种应用程序的md5值,将其解密与目标终端获取到的应用程序的md5值进行比对,判断应用程序是否被篡改,若两者一致,则该应用程序未被篡改,若两者不一致,则该应用程序被篡改,可以发出被篡改提醒信息至用户;在加密结果文件包括多种应用程序的md5值时,目标终端可以计算出当前应用程序的md5值,将该当前应用程序的md5值能与加密结果文件的多种应用程序的md5值中的一个匹配成功,则说明目标终端的应用程序未被篡改,即此时只有其中一个应用程序的md5值与当前应用程序的md5值匹配,说明应用程序未被篡改。
本申请实施例中,增加了授权动态库文件及应用程序的防篡改机制,避免篡改程序跳过篡改授权校验,增加了应用程序的防篡改性能。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图6,示出了本申请实施例的一种应用程序的保护装置实施例的结构框图,应用于目标终端,所述目标终端与工作终端连接,具体可以包括如下模块:
硬件信息获取模块301,用于获取本地的硬件信息;
硬件标记信息生成模块302,用于根据所述硬件信息加密生成特定硬件标记信息,将所述硬件标记信息发送至工作终端;以使所述工作终端根据其自身生成的私钥和所述硬件标记信息得到授权文件;
校验模块303,用于获取所述工作终端发送的所述授权文件,当应用程序启动时,通过所述授权文件进行校验操作,若校验成功,则继续执行应用程序的启动步骤。
优选地,所述硬件信息包括CPU序列号、CPU描述字符串、MAC地址;所述硬件标记信息生成模块包括:
转化子模块,用于将所述CPU序列号、CPU描述字符串、MAC地址转化为特定格式字符串;
加密操作子模块,用于将所述特定格式字符串进行算法加密操作,得到特定的硬件标记信息。
优选地,所述装置还包括:
防篡改操作模块,用于根据授权动态库文件进行防篡改操作;其中,所述授权文件为所述工作终端对所述硬件标记信息进行反向算法解析操作后得到的硬件信息通过所述私钥加密后得到的文件。
优选地,所述防篡改操作模块包括:
授权动态库文件获取子模块,用于获取所述工作终端发送的授权动态库文件,所述授权动态库文件为所述工作终端根据公钥、解密函数及校验函数生成,所述公钥由所述工作终端生成;
加密结果文件获取子模块,用于获取所述工作终端发送的第一应用程序和加密结果文件,并提取所述第一应用程序中的第一md5值和所述加密结果文件中的第二md5值,其中,所述第一应用程序为所述工作终端将所述授权动态库文件的第一md5值写入所述应用程序的头文件的程序,所述加密结果文件为所述工作终端将所述应用程序的第二md5值进行加密得到的文件;
md5值获取子模块,用于在应用程序启动时,所述目标终端针对所述授权动态库文件和所述应用程序分别进行md5值计算操作,得到第三md5值和第四md5值;
第一比较子模块,用于将所述第三md5值与所述第一md5值进行比较,判断授权动态库文件是否被篡改;
第二比较子模块,用于将所述第二md5值与所述第四md5值进行比较,判断应用程序是否被篡改。
参照图7,示出了本申请实施例的一种应用程序的保护装置实施例的结构框图,应用于工作终端,所述工作终端与目标终端连接,具体可以包括如下模块:
私钥生成模块401,用于生成私钥;
硬件标记信息获取模块402,用于获取所述目标终端发送的硬件标记信息,所述硬件标记信息为所述目标终端对其本地的硬件信息进行加密生成的特定的硬件标记信息;
授权文件获取模块403,用于根据所述私钥和所述硬件标记信息得到授权文件,并将所述授权文件发送至所述目标终端,以使所述目标终端再应用程序启动时校验所述授权文件,并在校验成功时继续执行所述应用程序启动的步骤。
优选地,所述授权文件获取模块包括:
反向解析子模块,用于针对硬件标记信息进行反向算法解析操作,得到硬件信息;
加密子模块,用于通过私钥将所述硬件信息进行加密,得到授权文件。
优选地,所述装置还包括:
授权动态库文件生成模块,用于生成公钥,将所述公钥、解密函数及校验函数生成所述授权动态库文件,并将所述授权动态库文件发送至所述目标终端;
第一md5值计算模块,用于计算授权动态库文件的的第一md5值,并将所述第一md5值写入应用程序的头文件,得到第一应用程序;
第二md5值计算模块,用于计算每个所述应用程序的第二md5值,针对每个应用程序的第二md5值通过私钥进行加密,得到加密结果文件;
加密结果文件发送模块,用于将所述第一应用程序和所述加密结果文件发送给所述目标终端,以使所述目标终端在应用程序启动时基于所述第一应程序中的第一md5值和针对所述授权动态库文件计算出的第三md5值确定所述授权动态库文件是否被篡改,以及基于所述加密结果文件中的第二md5值和针对所述应用程序计算出的第四md5值确定所述用程序是否被篡改。
上述应用程序的保护装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于嵌入式设备中的处理器中,也可以以软件形式存储于嵌入式设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
上述提供的应用程序的保护装置可用于执行上述任意实施例提供的应用程序的保护方法,具备相应的功能和有益效果。
基于与上述方法相同的发明构思,本申请实施例提供了一种嵌入式设备,所述嵌入式设备,其内部结构图可以如图8所示。该嵌入式设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该嵌入式设备的处理器用于提供计算和控制能力。该嵌入式设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该嵌入式设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用程序的保护方法。该嵌入式设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该嵌入式设备的输入装置可以是显示屏上覆盖的触摸层,也可以是嵌入式设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的嵌入式设备的限定,具体的嵌入式设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本申请实施例还提供了一种计算机可读存储介质,其中,该计算机可读存储介质用于存储计算机程序,该计算机程序使得控制装置执行如上述方法实施例中记载的任何一种应用程序的保护方法的部分或者全部步骤。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使电子设备执行如上述方法实施例中记载的任何一种应用程序的保护方法的部分或者全部步骤。
可以理解,本领域普通技术人员可以意识到,结合本申请各个实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域技术人员能够领会,结合本申请各个实施例中公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者嵌入式设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (11)

1.一种应用程序的保护方法,其特征在于,应用于目标终端,所述目标终端与工作终端连接,所述方法包括:
获取本地的硬件信息;
根据所述硬件信息加密生成特定硬件标记信息,将所述硬件标记信息发送至工作终端;以使所述工作终端根据其自身生成的私钥和所述硬件标记信息得到授权文件;
获取所述工作终端发送的所述授权文件,当应用程序启动时,通过所述授权文件进行校验操作,若校验成功,则继续执行应用程序的启动步骤。
2.如权利要求1所述的方法,其特征在于,所述硬件信息包括CPU序列号、CPU描述字符串、MAC地址;所述根据所述硬件信息加密生成特定的硬件标记信息,包括:
将所述CPU序列号、CPU描述字符串、MAC地址转化为特定格式字符串;
将所述特定格式字符串进行算法加密操作,得到特定的硬件标记信息。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据授权动态库文件进行防篡改操作;其中,所述授权动态库文件为所述工作终端根据公钥、解密函数及校验函数生成的文件,所述公钥由所述工作终端生成。
4.如权利要求1所述的方法,其特征在于,所述根据授权动态库文件进行防篡改操作,包括:
获取所述工作终端发送的授权动态库文件;
获取所述工作终端发送的第一应用程序和加密结果文件,并提取所述第一应用程序中的第一md5值和所述加密结果文件中通过授权动态库文件中的公钥解密后的第二md5值,其中,所述第一应用程序为所述工作终端将所述授权动态库文件的第一md5值写入所述应用程序的头文件的程序,所述加密结果文件为所述工作终端将所述应用程序的第二md5值通过私钥进行加密得到的文件;
在应用程序启动时,所述目标终端针对所述授权动态库文件和所述应用程序分别进行md5值计算操作,得到第三md5值和第四md5值;
将所述第三md5值与所述第一md5值进行比较,判断授权动态库文件是否被篡改;
将所述第二md5值与所述第四md5值进行比较,判断应用程序是否被篡改。
5.一种应用程序的保护方法,其特征在于,应用于工作终端,所述工作终端与目标终端连接,所述方法包括:
生成私钥;
获取所述目标终端发送的硬件标记信息,所述硬件标记信息为所述目标终端对其本地的硬件信息进行加密生成的特定的硬件标记信息;
根据所述私钥和所述硬件标记信息得到授权文件,并将所述授权文件发送至所述目标终端,以使所述目标终端再应用程序启动时校验所述授权文件,并在校验成功时继续执行所述应用程序启动的步骤。
6.如权利要求5所述的方法,其特征在于,所述根据所述私钥和所述硬件标记信息得到授权文件,包括:
针对硬件标记信息进行反向算法解析操作,得到硬件信息;
通过私钥将所述硬件信息进行加密,得到授权文件。
7.如权利要求5所述的方法,其特征在于,所述方法还包括:
生成公钥,将所述公钥、解密函数及校验函数生成所述授权动态库文件,并将所述授权动态库文件发送至所述目标终端;
计算授权动态库文件的的第一md5值,并将所述第一md5值写入应用程序的头文件,得到第一应用程序;
计算每个所述应用程序的第二md5值,针对每个应用程序的第二md5值通过私钥进行加密,得到加密结果文件;
将所述第一应用程序和所述加密结果文件发送给所述目标终端,以使所述目标终端在应用程序启动时基于所述第一应程序中的第一md5值和针对所述授权动态库文件计算出的第三md5值确定所述授权动态库文件是否被篡改,
以及基于所述加密结果文件中通过授权动态库文件中的公钥解密后的第二md5值和针对所述应用程序计算出的第四md5值确定所述用程序是否被篡改。
8.一种应用程序的保护装置,其特征在于,应用于目标终端,所述目标终端与工作终端连接,所述装置包括:
硬件信息获取模块,用于获取本地的硬件信息;
硬件标记信息生成模块,用于根据所述硬件信息加密生成特定硬件标记信息,将所述硬件标记信息发送至工作终端;以使所述工作终端根据其自身生成的私钥和所述硬件标记信息得到授权文件;
校验模块,用于获取所述工作终端发送的所述授权文件,当应用程序启动时,通过所述授权文件进行校验操作,若校验成功,则继续执行应用程序的启动步骤。
9.一种应用程序的保护装置,其特征在于,应用于工作终端,所述工作终端与目标终端连接,所述装置包括:
私钥生成模块,用于生成私钥;
硬件标记信息获取模块,用于获取所述目标终端发送的硬件标记信息,所述硬件标记信息为所述目标终端对其本地的硬件信息进行加密生成的特定的硬件标记信息;
授权文件获取模块,用于根据所述私钥和所述硬件标记信息得到授权文件,并将所述授权文件发送至所述目标终端,以使所述目标终端再应用程序启动时校验所述授权文件,并在校验成功时继续执行所述应用程序启动的步骤。
10.一种嵌入式设备,其特征在于,包括工作终端或目标终端,所述工作终端或目标终端包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-4或5-7任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-4或5-7任一项所述的方法。
CN202310245186.6A 2023-03-09 2023-03-09 一种应用程序的保护方法及装置 Pending CN116451185A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310245186.6A CN116451185A (zh) 2023-03-09 2023-03-09 一种应用程序的保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310245186.6A CN116451185A (zh) 2023-03-09 2023-03-09 一种应用程序的保护方法及装置

Publications (1)

Publication Number Publication Date
CN116451185A true CN116451185A (zh) 2023-07-18

Family

ID=87119219

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310245186.6A Pending CN116451185A (zh) 2023-03-09 2023-03-09 一种应用程序的保护方法及装置

Country Status (1)

Country Link
CN (1) CN116451185A (zh)

Similar Documents

Publication Publication Date Title
JP4253543B2 (ja) ハードウェアプロテクトキー及びその再発行方法
CN100487715C (zh) 一种数据安全存储系统和装置及方法
CN101291224B (zh) 在通信系统中处理数据的方法和系统
JPH09270785A (ja) 情報処理装置
CN109768862B (zh) 一种密钥管理方法、密钥调用方法及密码机
US10565381B2 (en) Method and apparatus for performing firmware programming on microcontroller chip, and associated microcontroller chip
USRE47324E1 (en) Data encryption systems and methods
CN112469036B (zh) 一种消息加解密方法、装置、移动终端和存储介质
JP2010517448A (ja) セキュアファイル暗号化
JP2005050160A (ja) ハードウェアプロテクトキー及び情報処理システム
US20050175182A1 (en) Encryption key device, encryption device and decryption device
US8392723B2 (en) Information processing apparatus and computer readable medium for preventing unauthorized operation of a program
CN110245466B (zh) 软件完整性保护和验证方法、系统、设备及存储介质
CN111783078A (zh) Android平台安全芯片控制系统
CN114785503B (zh) 密码卡及其根密钥保护方法、计算机可读存储介质
CN113722741A (zh) 数据加密方法及装置、数据解密方法及装置
CN110932853B (zh) 一种基于可信模块的密钥管理装置和密钥管理方法
CN110008724B (zh) 固态硬盘控制器安全加载方法、装置及存储介质
CN110674525A (zh) 一种电子设备及其文件处理方法
WO2006046484A1 (ja) 認証方法
US7464406B2 (en) System and method for user determination of secure software
CN113158203B (zh) 一种soc芯片、电路和soc芯片的外部数据读写方法
CN116451185A (zh) 一种应用程序的保护方法及装置
CN113343215A (zh) 嵌入式软件的授权和认证方法及电子设备
CN108921550B (zh) 数字货币钱包的管理方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination