Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
CN105468940A - 软件保护方法及装置 - Google Patents
[go: Go Back, main page]

CN105468940A - 软件保护方法及装置 - Google Patents

软件保护方法及装置 Download PDF

Info

Publication number
CN105468940A
CN105468940A CN201510857401.3A CN201510857401A CN105468940A CN 105468940 A CN105468940 A CN 105468940A CN 201510857401 A CN201510857401 A CN 201510857401A CN 105468940 A CN105468940 A CN 105468940A
Authority
CN
China
Prior art keywords
code
protected
application program
encryption
driver
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.)
Granted
Application number
CN201510857401.3A
Other languages
English (en)
Other versions
CN105468940B (zh
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 Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield 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 Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN201510857401.3A priority Critical patent/CN105468940B/zh
Publication of CN105468940A publication Critical patent/CN105468940A/zh
Application granted granted Critical
Publication of CN105468940B publication Critical patent/CN105468940B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

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

Abstract

本发明提供一种软件保护方法及装置,涉及软件保护领域,主要目的在于解决现有技术中通过加密锁对软件进行保护带来的使用不便及保护强度低的缺陷。本发明的方法包括:从待保护应用程序的代码中获取移植码并为移植码加密得到加密移植码;创建与待保护应用程序进行交互的驱动程序,驱动程序用于解密加密移植码并执行移植码;驱动程序接收待保护应用程序发送的执行移植码请求,执行移植码请求中携带加密移植码;驱动程序对加密移植码进行解密,根据解密结果确定是否执行移植码。本发明能够将代码逻辑复杂的代码、以及比加密锁携带的代码量更多的代码作为移植码来对待保护应用程序(软件)进行保护,大大增加了待保护应用程序(软件)的破解难度。

Description

软件保护方法及装置
技术领域
本发明涉及软件保护领域,尤其涉及一种软件保护方法及装置。
背景技术
软件是一系列按照特定顺序组织的计算机数据和指令的集合,为了某种特定的用途而被开发。随着计算机技术的发展,越来越多的软件被开发出来,其中大量的办公软件由于能够帮助人们完成各种复杂的工作,因此具有重要的商业价值。但是,由于多种原因目前软件领域盗版横行,软件开发商的正当利益一直受到侵犯。
为了保护软件开发商的正当利益,现有技术多采用高强度的软件加密方案对软件进行保护,这些软件加密方案一般都使用加密锁。加密锁是一种插在计算机并行口或USB口上的软硬件结合的加密产品,一般都有几十或几百字节的非易失性存储空间可供读写,软件开发商可以通过接口函数和加密锁进行数据交换,即对加密锁进行读写,来检查加密锁是否插在接口上;或者直接使用加密锁附带的工具加密自己的exe文件。这样软件开发商可以在软件中设置多处软件锁,利用加密锁作为钥匙来打开这些锁;如果没插入加密锁或加密锁不对应,软件将不能正常执行。
虽然加密锁能在一定程度上对软件进行保护,但是通过这种方式在使用软件时必须携带加密锁,给用户带来不便并且加密锁也容易丢失。此外,采用硬件加密锁的成本高,加密锁由于存储空间有限导致其实际移植的代码量有限,这在一定程度上降低了加密锁的破解难度。
发明内容
本发明实施例提供一种软件保护方法及装置,用以解决现有技术中通过加密锁对软件进行保护带来的使用不便及保护强度低的缺陷。
依据本发明的第一个方面,本发明实施例提供一种软件保护方法,包括:
从待保护应用程序的代码中获取移植码并为所述移植码加密得到加密移植码;
创建与所述待保护应用程序进行交互的驱动程序,所述驱动程序用于解密所述加密移植码并执行所述移植码;
所述驱动程序接收所述待保护应用程序发送的执行移植码请求,所述执行移植码请求中携带所述加密移植码;
所述驱动程序对所述加密移植码进行解密,根据解密结果确定是否执行所述移植码。
依据本发明的第二个方面,本发明实施例提供一种软件保护装置,包括:
获取单元,用于从待保护应用程序的代码中获取移植码并为所述移植码加密得到加密移植码;
创建单元,用于创建与所述待保护应用程序进行交互的驱动程序,所述驱动程序用于解密所述加密移植码并执行所述移植码;
接收单元,用于使所述驱动程序接收所述待保护应用程序发送的执行移植码请求,所述执行移植码请求中携带所述加密移植码;
解密单元,用于使所述驱动程序对所述加密移植码进行解密,根据解密结果确定是否执行所述移植码。
本发明实施例提供的软件保护方法及装置,能够创建与待保护应用程序进行交互的驱动程序,该驱动程序接收待保护应用程序发送的执行移植码请求后对待保护应用程序中的加密移植码进行解密并执行移植码,由驱动程序根据对加密移植码的解密结果确定是否执行所述移植码,从而不需要通过现有技术中的存储有移植码的加密锁对待保护应用程序(软件)进行保护。同时,由于驱动程序对复杂算法的运行效率远高于加密锁本身的硬件执行效率,并且不受加密锁存储空间的限制,因此本发明能够将代码逻辑复杂的代码、以及比加密锁携带的代码量更多的代码作为移植码来对待保护应用程序(软件)进行保护,大大增加了待保护应用程序(软件)的破解难度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种软件保护方法的流程图;
图2为本发明实施例提供的一种软件保护装置的组成框图;
图3为本发明实施例提供的另一种软件保护装置的组成框图;
图4为本发明实施例提供的另一种软件保护装置的组成框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在现有对软件进行保护的方式中,主要使用加密锁对软件进行保护,加密锁是一种插在计算机并行口或USB口上的软硬件结合的加密产品,一般都有几十或几百字节的非易失性存储空间可供读写,该存储空间中保存有软件中的部分代码,软件开发商可以通过接口函数和加密锁进行数据交换,即对加密锁中的代码进行读写。但是通过这种方式在使用软件时必须携带加密锁,给用户带来不便并且加密锁也容易丢失。此外,采用硬件加密锁的成本高,加密锁由于存储空间有限导致其实际移植的代码量有限,这在一定程度上降低了加密锁的破解难度。
为了解决现有技术中通过加密锁对软件进行保护带来的使用不便及保护强度低的问题,本发明实施例提供一种软件保护方法,如图1所示,该方法包括:
101、从待保护应用程序的代码中获取移植码并为移植码加密得到加密移植码。
在对软件的应用程序进行保护时,为了使软件的应用程序不被未经授权的用户使用,需要从应用程序的代码中移植一部分代码至加密锁中进行保护,只有经过授权(具有加密锁)的用户才可以通过加密锁中的移植码正常使用软件。但是当加密锁丢失后,会导致未授权的其他用户使用被保护的软件。为了克服上述缺陷,本发明实施例需要执行步骤101从待保护应用程序的代码中获取移植码并为移植码加密得到加密移植码。
102、创建与待保护应用程序进行交互的驱动程序,驱动程序用于解密加密移植码并执行移植码。
由于携带有待保护应用程序中部分代码的加密锁成本较高且容易丢失,并且加密锁的存储空间及运行效率有限,实际从待保护应用程序中移植的代码量非常有限,这在一定程度上也降低了代码的破解难度。因此,本发明实施例不使用加密锁,而是需要执行步骤102创建与待保护应用程序进行交互的驱动程序,驱动程序用于解密加密移植码并执行移植码。其中,在所述驱动程序与所述待保护应用程序之间创建有交互接口的程序;所述驱动程序在内核模式也就是系统模式下能够解释加密移植码并执行移植码。由于本发明实施例将待保护应用程序中的部分代码移植到驱动程序中执行,并且目前几乎没有用于破解驱动程序的调试器存在,再加上代码的虚拟机保护(如使用VMProtect对代码进行加壳),使得对移植代码进行分析极为困难。
103、驱动程序接收待保护应用程序发送的执行移植码请求,执行移植码请求中携带加密移植码。
由于本发明实施例在步骤101中已经从待保护应用程序的代码中获取到移植码并为移植码加密得到加密移植码,并且在步骤102中创建了与待保护应用程序进行交互的驱动程序,所述驱动程序用于解密所述加密移植码并执行所述移植码;因此当需要使用待保护应用程序时,需要通过待保护应用程序与驱动程序之间的交互接口向驱动程序发送执行移植码请求,请求驱动程序执行移植码。因此本发明实施例在步骤102之后,需要执行步骤103驱动程序接收待保护应用程序发送的执行移植码请求,执行移植码请求中携带加密移植码。
104、驱动程序对加密移植码进行解密,根据解密结果确定是否执行移植码。
当驱动程序接收到待保护应用程序发送的执行移植码请求之后,驱动程序从执行移植码请求中获取该请求中携带的加密移植码,并对加密移植码进行解密,根据解密结果确定是否执行移植码。若解密结果正确,则由驱动程序执行所述移植码,若解密结果不正确,则无法执行所述移植码从而无法使用所述待保护应用程序。驱动程序在对加密移植码进行解密时,可以根据加密移植码的加密规则对其进行解密,所述加密规则可以由软件开发商提前进行设定并且在创建驱动程序时会在驱动程序中设定该加密规则。
本发明实施例提供的软件保护方法,能够创建与待保护应用程序进行交互的驱动程序,该驱动程序接收待保护应用程序发送的执行移植码请求后对待保护应用程序中的加密移植码进行解密并执行移植码,由驱动程序根据对加密移植码的解密结果确定是否执行所述移植码,从而不需要通过现有技术中的存储有移植码的加密锁对待保护应用程序(软件)进行保护。同时,由于驱动程序对复杂算法的运行效率远高于加密锁本身的硬件执行效率,并且不受加密锁存储空间的限制,因此本发明能够将代码逻辑复杂的代码、以及比加密锁携带的代码量更多的代码作为移植码来对待保护应用程序(软件)进行保护,大大增加了待保护应用程序(软件)的破解难度。
为了更好的对上述图1所示的方法进行理解,本发明实施例将针对图1中的各步骤进行详细说明。
由于现有技术中为了对软件的应用程序进行保护,会将待保护应用程序中的部分代码移植到加密锁中,被授权使用软件的用户会通过加密锁正常使用软件。但是由于加密锁的存储空间有限和对复杂算法的运行效率较低,因此加密锁中移植代码的代码逻辑大多数都相对比较简单并且加密锁中实际移植的代码量相对较小,这在一定程度上降低了代码的破解难度。为了克服上述缺陷,本发明实施例不再使用加密锁的方式来保护应用程序中的移植码,而是通过创建与待保护应用程序进行交互的驱动程序,由在驱动程序中执行所述移植码。由于驱动程序不受存储空间的限制并且驱动程序对复杂算法的运行效率较高,因此本发明实施例可以从待保护应用程序中获取代码逻辑复杂的移植码并且可以获取代码量较大的移植码。本发明实施例在实际从待保护应用程序的代码中获取移植码时,可以采用分点式的获取方式从待保护应用程序的代码中获取移植码,也就是在待保护应用程序的代码中的不同位置获取多个移植码。本发明实施例通过分点式获取移植码不仅能够获取代码量较大的移植码,而且还可以获取到待保护应用程序源代码中不同位置的不同代码逻辑的代码,通过提高移植码的代码量以及移植码的复杂程度,从而提高了移植码的破解难度。
由于现有技术只是将从待保护应用程序的代码中获取的移植码存储在加密锁中,并未对移植码进行加密处理,因此当加密锁丢失后,任何获取到加密锁的用户都可以正常使用待保护应用程序。因此,本发明实施例在从待保护应用程序的代码中获取到移植码之后,还需要对移植码进行加密。由于本发明实施例提供了一种采用分点式获取移植码的方式,为了使获取的移植码不会出现错乱,因此本发明实施例可以将通过分点式获取的不同代码逻辑的移植码构建成代码块,通过代码块可以区分不同代码逻辑的移植码,从而避免不同代码逻辑的移植码出现错乱。当将移植码构建成代码块后,需要对代码块进行加密得到加密移植码。在对代码块进行加密时,本发明实施例提供了一种可选的实施方式,可以对所述代码块进行非对称加密得到加密移植码。在使用非对称加密方法对代码块进行加密时,需要使用两个密钥:公开密钥和私有密钥。公开密钥与私有密钥是一对,如果使用公开密钥对代码块进行加密,那么只有对应的私有密钥才能解密;如果使用私有密钥对代码块进行加密,那么只有对应的公开密钥才能解密。例如,本发明实施例可以通过一对密钥中的公开密钥对代码块进行加密得到加密移植码,而在创建驱动程序时,可以在驱动程序中设定所述加密规则,因此当外界需要执行待保护应用程序时,可以向驱动程序发送携带有加密移植码的执行移植码请求,驱动程序在接收到所述执行移植码请求后,需要根据设定的加密规则使用私有密钥对加密移植码进行解密。由于待保护应用程序与驱动程序之间具有交互接口,因此如果驱动程序需要回复加密信息给待保护应用程序,那么需要驱动程序使用待保护应用程序设定的一对密钥中的公开密钥对回复信息进行加密,由待保护应用程序使用私有密钥对回复的加密信息进行解密。上述通过非对称加密方式对代码块进行加密的方式只是一种可选的实施方式,当然还可以使用其他加密方式,例如使用对称加密方式对代码块进行加密,也就是使用同一个密钥对代码块进行加密和解密。采用对称加密方式虽然能够达到较快的加密和解密速度,但是由于加密和解密的过程采用同一个密钥,当任何一方的密钥泄露后就无法保证加密信息的安全性,因此采用对称加密方式虽然也能起到加密代码块的目的,但是其加密安全性不如对对称加密方式。由于本发明实施例不使用加密锁保存加密移植码,因此当通过上述各个方式将代码块进行加密得到加密移植码后,本发明实施例可以将加密移植码进行本地保存。在实际保存加密移植码的过程中,可以将加密移植码存储在待保护应用程序的目录下,以便在使用待保护应用程序时,能够快速从其目录下获取加密移植码,并将加密移植码携带在执行移植码请求中发送给驱动程序。或者,也可以将加密移植码存储在待保护应用程序所在客户端的其他存储空间内。
为了提高对待保护应用程序的保护程度,除了对移植码进行加密并在驱动程序中实现一套代码解释器使驱动程序能够执行移植码外,本发明实施例还需要在驱动程序中实现一套授权管理逻辑,也就是设置待保护应用程序的使用权限,只有具有使用权限的机器才能够运行所述待保护应用程序。具体的在设置待保护应用程序的使用权限时,本发明实施例可以通过数字签名的方式来实现。其过程包括:将具有使用权限的机器的硬件信息生成机器码,比如将机器的硬盘序列号、主板信息等经过一系列加密、散列形成一串序列号,所述序列号就是能够唯一识别机器的机器码;当获得具有使用权限的机器的机器码后,需要对所述机器码进行哈希运算得到哈希值,哈希值用来表示所述机器码的固定大小的唯一值。在实际对机器码进行哈希运算时可以采用SHA256算法对所述机器码进行哈希运算得到256位的哈希值,当然也可以采用其他哈希算法对机器码进行哈希运算。当得到唯一的哈希值后,本发明实施例还需要通过预设的私钥对所述哈希值进行加密得到所述具有使用权限的机器的硬件信息的数字签名,也就是通过待保护应用程序的私钥对具有使用权限的机器的硬件信息摘要(对硬件信息进行哈希运算得到)进行加密,并将加密的哈希值(数字签名)发送给驱动程序,驱动程序只有用待保护应用程序的公钥才能解密被加密的哈希值(数字签名)。由于本发明实施例中提供了设置待保护应用程序的使用权限这一处理方式,并且在设置待保护应用程序的使用权限时对具有使用权限的机器硬件信息的哈希值进行了数字签名处理,因此本发明实施例中的所述驱动程序在接收所述待保护应用程序发送的执行移植码请求中,所述执行移植码请求中还包括所述具有使用权限的机器硬件信息的哈希值的数字签名。
当通过上述方式对移植码进行加密并且对待保护应用程序设置了使用权限之后,本发明实施例不仅需要由驱动程序根据移植码的加密规则对所述移植码进行解密,而且还需要由驱动程序对机器的授权权限进行验证(也就是对所述数字签名进行验证),判断其是否具有待保护应用程序的使用权限(也就是判断数字签名是否合法)。具体的就是由驱动程序对当前机器的机器码的数字签名进行验证,并根据验证结果确定是否执行所述移植码。例如,在使用待保护应用程序时,待保护应用程序会通过其与驱动程序之间的交互接口向驱动程序发送执行移植码请求,所述执行移植码请求中携带有加密移植码以及具有使用权限的机器硬件信息的哈希值的数字签名。当驱动程序接收到所述执行移植码请求后,可以先通过与进行数字签名处理时使用的私钥相匹配的公钥对所述执行移植码请求中携带的数字签名进行验证,如果验证数字签名合法,则说明机器硬件信息的哈希值的发送方合法,但是由于通过哈希算法得到的机器硬件信息的哈希值不可逆,因此在验证数字签名合法后,本发明实施例还需要使用同样的哈希算法计算当前机器的机器码的哈希值,如果计算的哈希值与之前验证了数字签名的哈希值相同,则可以由驱动程序根据移植码的加密规则对加密移植码进行解密并执行所述移植码,从而能够正常使用待保护应用程序;如果计算的哈希值与之前验证了数字签名的哈希值不相同,则机器不具有待保护应用程序的使用权限,无法正常使用待保护应用程序。
本发明实施例通过设置待保护应用程序的使用权限,对授权机器的硬件信息进行哈希运算并进行数字签名处理,由驱动程序使用软件开发商预设的加密和验证方法对当前机器的机器码的哈希签名进行验证,只有在签名合法的情况下才能由驱动程序使用软件开发商预设的加密方法对加密移植码进行解密并执行所述移植码,从而能够正常使用待保护应用程序。通过加密移植码以及授权签名实现对待保护应用程序的高强度保护。
作为对上述图1所示方法的应用,本发明实施例提供了一种软件保护装置,如图2所示,所述装置包括:获取单元21、创建单元22、接收单元23以及解密单元24,其中,
获取单元21,用于从待保护应用程序的代码中获取移植码并为所述移植码加密得到加密移植码;
创建单元22,用于创建与所述待保护应用程序进行交互的驱动程序,所述驱动程序用于解密所述加密移植码并执行所述移植码;
接收单元23,用于接收所述待保护应用程序发送的执行移植码请求,所述执行移植码请求中携带所述加密移植码;
解密单元24,用于对所述加密移植码进行解密,根据解密结果确定是否执行所述移植码。
进一步的,获取单元21用于从待保护应用程序的代码中分点式获取移植码,所述分点式获取移植码包括在待保护应用程序的代码中的不同位置获取不同代码逻辑的移植码。
进一步的,如图3所示,获取单元21包括:
构建模块211,用于将所述移植码构建成代码块;
加密模块212,用于对所述代码块进行非对称加密得到加密移植码;
保存模块213,用于将所述加密移植码进行本地保存。
进一步的,如图4所示,所述装置还包括:
设置单元25,用于设置待保护应用程序的使用权限。
进一步的,设置单元25包括:
生成模块251,用于将具有使用权限的机器的硬件信息生成机器码;
运算模块252,用于对所述机器码进行哈希运算得到哈希值;
签名模块253,用于通过预设的私钥对所述哈希值进行加密得到所述具有使用权限的机器的硬件信息的数字签名。
进一步的,解密单元24还用于使用与预设的私钥对应的公钥对所述数字签名进行验证,根据验证结果确定是否执行所述移植码。
本发明实施例提供的软件保护装置,能够创建与待保护应用程序进行交互的驱动程序,该驱动程序接收待保护应用程序发送的执行移植码请求后对待保护应用程序中的加密移植码进行解密并执行移植码,由驱动程序根据对加密移植码的解密结果确定是否执行所述移植码,从而不需要通过现有技术中的存储有移植码的加密锁对待保护应用程序(软件)进行保护。同时,由于驱动程序对复杂算法的运行效率远高于加密锁本身的硬件执行效率,并且不受加密锁存储空间的限制,因此本发明能够将代码逻辑复杂的代码、以及比加密锁携带的代码量更多的代码作为移植码来对待保护应用程序(软件)进行保护,大大增加了待保护应用程序(软件)的破解难度。
此外,本发明实施例提供的软件保护装置可以通过设置待保护应用程序的使用权限,对授权机器的硬件信息进行哈希运算并进行数字签名处理,由驱动程序使用软件开发商预设的加密和验证方法对当前机器的机器码的哈希签名进行验证,只有在签名合法的情况下才能由驱动程序使用软件开发商预设的加密方法对加密移植码进行解密并执行所述移植码,从而能够正常使用待保护应用程序。通过加密移植码以及授权签名实现对待保护应用程序的高强度保护。
针对上述软件保护装置需要说明的是,凡是本发明实施例中使用到的各个单元模块的功能都可以通过硬件处理器(hardwareprocessor)来实现。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (12)

1.一种软件保护方法,其特征在于,所述方法包括:
从待保护应用程序的代码中获取移植码并为所述移植码加密得到加密移植码;
创建与所述待保护应用程序进行交互的驱动程序,所述驱动程序用于解密所述加密移植码并执行所述移植码;
所述驱动程序接收所述待保护应用程序发送的执行移植码请求,所述执行移植码请求中携带所述加密移植码;
所述驱动程序对所述加密移植码进行解密,根据解密结果确定是否执行所述移植码。
2.根据权利要求1所述的方法,其特征在于,所述从待保护应用程序的代码中获取移植码包括:
从待保护应用程序的代码中分点式获取移植码,所述分点式获取移植码包括在待保护应用程序的代码中的不同位置获取不同代码逻辑的移植码。
3.根据权利要求1所述的方法,其特征在于,所述为所述移植码加密得到加密移植码包括:
将所述移植码构建成代码块;
对所述代码块进行非对称加密得到加密移植码;
将所述加密移植码进行本地保存。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
设置待保护应用程序的使用权限。
5.根据权利要求4所述的方法,其特征在于,所述设置待保护应用程序的使用权限包括:
将具有使用权限的机器的硬件信息生成机器码;
对所述机器码进行哈希运算得到哈希值;
通过预设的私钥对所述哈希值进行加密得到所述具有使用权限的机器的硬件信息的数字签名;
在所述驱动程序接收所述待保护应用程序发送的执行移植码请求中,所述执行移植码请求还包括:所述数字签名。
6.根据权利要求5所述的方法,其特征在于,所述驱动程序对所述加密移植码进行解密,根据解密结果确定是否执行所述移植码还包括:
所述驱动程序使用与预设的私钥对应的公钥对所述数字签名进行验证,根据验证结果确定是否执行所述移植码。
7.一种软件保护装置,其特征在于,所述装置包括:
获取单元,用于从待保护应用程序的代码中获取移植码并为所述移植码加密得到加密移植码;
创建单元,用于创建与所述待保护应用程序进行交互的驱动程序,所述驱动程序用于解密所述加密移植码并执行所述移植码;
接收单元,用于使所述驱动程序接收所述待保护应用程序发送的执行移植码请求,所述执行移植码请求中携带所述加密移植码;
解密单元,用于使所述驱动程序对所述加密移植码进行解密,根据解密结果确定是否执行所述移植码。
8.根据权利要求7所述的装置,其特征在于,所述获取单元用于从待保护应用程序的代码中分点式获取移植码,所述分点式获取移植码包括在待保护应用程序的代码中的不同位置获取不同代码逻辑的移植码。
9.根据权利要求7所述的装置,其特征在于,所述获取单元包括:
构建模块,用于将所述移植码构建成代码块;
加密模块,用于对所述代码块进行非对称加密得到加密移植码;
保存模块,用于将所述加密移植码进行本地保存。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
设置单元,用于设置待保护应用程序的使用权限。
11.根据权利要求10所述的装置,其特征在于,所述设置单元包括:
生成模块,用于将具有使用权限的机器的硬件信息生成机器码;
运算模块,用于对所述机器码进行哈希运算得到哈希值;
签名模块,用于通过预设的私钥对所述哈希值进行加密得到所述具有使用权限的机器的硬件信息的数字签名。
12.根据权利要求11所述的装置,其特征在于,所述解密单元还用于使用与预设的私钥对应的公钥对所述数字签名进行验证,根据验证结果确定是否执行所述移植码。
CN201510857401.3A 2015-11-30 2015-11-30 软件保护方法及装置 Active CN105468940B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510857401.3A CN105468940B (zh) 2015-11-30 2015-11-30 软件保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510857401.3A CN105468940B (zh) 2015-11-30 2015-11-30 软件保护方法及装置

Publications (2)

Publication Number Publication Date
CN105468940A true CN105468940A (zh) 2016-04-06
CN105468940B CN105468940B (zh) 2019-01-01

Family

ID=55606630

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510857401.3A Active CN105468940B (zh) 2015-11-30 2015-11-30 软件保护方法及装置

Country Status (1)

Country Link
CN (1) CN105468940B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407751A (zh) * 2016-08-31 2017-02-15 北京深思数盾科技股份有限公司 对可执行文件进行保护的方法和装置
CN106789088A (zh) * 2017-02-08 2017-05-31 上海诺行信息技术有限公司 一种软件版本签名机制
CN106951744A (zh) * 2017-03-15 2017-07-14 北京深思数盾科技股份有限公司 可执行程序的保护方法及装置
CN107526947A (zh) * 2017-09-26 2017-12-29 重庆市珞宾信息技术有限公司 一种嵌入式软件激活控制方法
CN107678875A (zh) * 2017-09-29 2018-02-09 北京深思数盾科技股份有限公司 一种故障检测及自动修复方法、装置、终端及存储介质
CN109727134A (zh) * 2018-12-29 2019-05-07 北京奇虎科技有限公司 一种图片的版权交易方法及装置
CN111164593A (zh) * 2019-12-27 2020-05-15 威创集团股份有限公司 一种注册授权方法及系统
CN112651031A (zh) * 2020-12-14 2021-04-13 展讯半导体(成都)有限公司 数字签名方法、数字验签方法、电子设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12273362B2 (en) 2022-06-10 2025-04-08 Bank Of America Corporation Securing data in a metaverse environment using simulated data interactions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1776563A (zh) * 2005-12-19 2006-05-24 清华紫光股份有限公司 一种基于通用串行总线接口的文件夹加密装置
CN101261666A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种通过加密可执行程序文件实现软件版权保护的方法
CN102915411A (zh) * 2011-08-02 2013-02-06 张景彬 嵌入式系统软硬件反复制加密锁
CN103425911A (zh) * 2013-08-07 2013-12-04 北京深思数盾科技有限公司 一种增强软件保护易用性的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1776563A (zh) * 2005-12-19 2006-05-24 清华紫光股份有限公司 一种基于通用串行总线接口的文件夹加密装置
CN101261666A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种通过加密可执行程序文件实现软件版权保护的方法
CN102915411A (zh) * 2011-08-02 2013-02-06 张景彬 嵌入式系统软硬件反复制加密锁
CN103425911A (zh) * 2013-08-07 2013-12-04 北京深思数盾科技有限公司 一种增强软件保护易用性的方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407751A (zh) * 2016-08-31 2017-02-15 北京深思数盾科技股份有限公司 对可执行文件进行保护的方法和装置
CN106407751B (zh) * 2016-08-31 2018-11-27 北京深思数盾科技股份有限公司 对可执行文件进行保护的方法和装置
CN106789088A (zh) * 2017-02-08 2017-05-31 上海诺行信息技术有限公司 一种软件版本签名机制
CN106951744A (zh) * 2017-03-15 2017-07-14 北京深思数盾科技股份有限公司 可执行程序的保护方法及装置
CN106951744B (zh) * 2017-03-15 2019-12-13 北京深思数盾科技股份有限公司 可执行程序的保护方法及装置
CN107526947A (zh) * 2017-09-26 2017-12-29 重庆市珞宾信息技术有限公司 一种嵌入式软件激活控制方法
CN107678875A (zh) * 2017-09-29 2018-02-09 北京深思数盾科技股份有限公司 一种故障检测及自动修复方法、装置、终端及存储介质
CN109727134A (zh) * 2018-12-29 2019-05-07 北京奇虎科技有限公司 一种图片的版权交易方法及装置
CN109727134B (zh) * 2018-12-29 2024-04-05 三六零科技集团有限公司 一种图片的版权交易方法及装置
CN111164593A (zh) * 2019-12-27 2020-05-15 威创集团股份有限公司 一种注册授权方法及系统
CN112651031A (zh) * 2020-12-14 2021-04-13 展讯半导体(成都)有限公司 数字签名方法、数字验签方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN105468940B (zh) 2019-01-01

Similar Documents

Publication Publication Date Title
US9673975B1 (en) Cryptographic key splitting for offline and online data protection
CN102271037B (zh) 基于在线密钥的密钥保护装置
CN105468940B (zh) 软件保护方法及装置
US10020939B2 (en) Device, server and method for providing secret key encryption and restoration
CN107959567B (zh) 数据存储方法、数据获取方法、装置及系统
US9735962B1 (en) Three layer key wrapping for securing encryption keys in a data storage system
US8850206B2 (en) Client-server system with security for untrusted server
US9171145B2 (en) Protecting cryptographic secrets using file system attributes
US20220094519A1 (en) Preserving aggregation using homomorphic encryption and trusted execution environment, secure against malicious aggregator
CN110008745B (zh) 一种加密方法、计算机设备和计算机存储介质
CN101950347B (zh) 一种对数据进行加密的方法和系统
KR20120079639A (ko) 화이트박스 암호 테이블을 이용한 콘텐츠 보호 장치, 콘텐츠 암호화 및 복호화 장치
EP2629223A1 (en) System, devices and methods for collaborative execution of a software application comprising at least one encrypted instruction
CN106571951A (zh) 审计日志获取、生成、验证方法、系统及装置
CN109274644A (zh) 一种数据处理方法、终端和水印服务器
US11496287B2 (en) Privacy preserving fully homomorphic encryption with circuit verification
CN117240625A (zh) 一种涉及防篡改的数据处理方法、装置及电子设备
CN102135944A (zh) 一种在移动通讯设备中安全存储数据的方法
KR102496436B1 (ko) 블록체인 네트워크에서 저장소에 복수의 데이터 조각들을 저장하는 방법 및 저장된 복수의 데이터 조각들을 수신하는 방법
CN104392153A (zh) 一种软件保护方法及系统
CN107483187A (zh) 一种基于可信密码模块的数据保护方法及装置
CN112115491A (zh) 一种对称加密密钥保护方法、装置、设备及存储介质
CN116614219B (zh) 安全数据烧录方法、安全模块、定制装置以及存储介质
CN107070648B (zh) 一种密钥保护方法及pki系统
CN115834214B (zh) 一种网络靶场资源加密方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder