CN115310057A - 防反编译的加密、解密方法、装置、设备和存储介质 - Google Patents
防反编译的加密、解密方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN115310057A CN115310057A CN202210827744.5A CN202210827744A CN115310057A CN 115310057 A CN115310057 A CN 115310057A CN 202210827744 A CN202210827744 A CN 202210827744A CN 115310057 A CN115310057 A CN 115310057A
- Authority
- CN
- China
- Prior art keywords
- decryption
- information
- target
- code
- code file
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 95
- 230000002093 peripheral effect Effects 0.000 claims abstract description 97
- 238000013475 authorization Methods 0.000 claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 14
- 238000012795 verification Methods 0.000 claims description 10
- 230000002265 prevention Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供一种防反编译的加密、解密方法、装置、设备和存储介质。该加密方法包括:利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;根据私钥对应的公钥以及目标信息得到解密辅助信息;目标信息包括:用户授权码和解密外设的时钟信息中的至少一项根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。上述方案中加密后的目标代码文件不容易被反编译,并且由于没有改动代码的处理逻辑,解密后不影响执行效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种防反编译的加密、解密方法、装置、设备和存储介质。
背景技术
根据Java虚拟机规范,由Java语言编译生成的Class文件,其采用一种类似C语言结构体的伪结构进行存储,所以非常容易通过逆向工程进行反编译。
现有技术中普遍采用代码混淆方式来防止Class文件被反编译。由于对代码的执行逻辑进行了等效的改动,会影响代码在运行时的执行效率,而且还可能造成程序逻辑错误,增加排查问题的难度。
发明内容
本发明实施例提供一种防反编译的加密、解密方法、装置、设备和存储介质,以解决防止Class文件被反编译时导致的影响代码的执行效率的技术问题。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种防反编译的加密方法,包括:
利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
根据所述私钥对应的公钥,以及目标信息得到解密辅助信息;所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。
可选地,解密辅助信息包括:代码块的拆分信息和存储位置信息,所述根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中,包括:
根据所述代码块的拆分信息,按照预设规则将解密程序的代码拆分成多个代码块;
根据所述存储位置信息,按照目标顺序将所述代码块分散存储至所述解密外设中;所述目标顺序为除所述多个代码块在所述解密程序中的原顺序之外的顺序。
可选地,所述解密辅助信息为字节码;所述字节码中的存储位置信息包括以下至少一项:起始代码块的起始位置、结束代码块的起始位置和各个代码块的起始位置。
可选地,利用获取到的私钥对目标代码文件进行加密之前,还包括:
根据所述目标代码文件的标识信息,确定所述目标代码文件是否需要加密;
若所述目标代码文件需要加密,则执行利用获取到的私钥对目标代码文件进行加密的步骤。
可选地,所述目标代码文件的标识信息包括魔法数;或,
所述目标代码文件的标识信息包括魔法数以及以下至少一项:版本号、文件包名、类名、描述符;
所述魔法数用于指示所述目标代码文件的类型。
可选地,所述利用获取到的私钥对目标代码文件进行加密之后,还包括:
将加密标识写入加密后的目标代码文件中的预设位置。
可选地,所述方法还包括:
获取用户设备信息和用户身份识别信息,用户设备信息包括以下至少一项:CPU信息、操作系统信息、网卡信息;
根据所述用户设备信息和用户身份识别信息,利用目标加密算法获取所述私钥和所述私钥对应的私钥;
将公钥拆分为第一部分和第二部分;
将所述第一部分作为授权证书,并将所述第二部分分散存储至解密外设中。
可选地,根据所述私钥对应的公钥以及目标信息得到解密辅助信息,包括:
根据所述授权证书以及目标信息得到解密辅助信息。
可选地,将随机生成的字符串作为所述用户授权码。
第二方面,本发明实施例提供了一种防反编译的解密方法,包括:
获取采用私钥加密后得到的目标代码文件以及解密辅助信息;所述解密辅助信息为根据所述私钥对应的公钥以及目标信息得到的,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序;
利用所述解密程序和公钥对加密后的目标代码文件进行解密。
可选地,所述解密辅助信息包括:代码块的拆分信息和存储位置信息,根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序,包括:
根据所述存储位置信息,按照目标顺序获取分散存储在所述解密外设中的多个代码块;所述目标顺序为除所述多个代码块在所述解密程序中的原顺序之外的顺序;
根据所述代码块的拆分信息以及所述多个代码块,按照预设规则还原得到所述解密程序。
可选地,所述方法还包括:
获取用户授权码和授权证书;所述授权证书为所述公钥的第一部分;
所述解密辅助信息为根据所述授权证书以及目标信息得到的;
所述公钥的第二部分分散存储在解密外设中,利用所述解密程序和公钥对加密后的目标代码文件进行解密,包括:
获取所述解密外设中分散存储的公钥的第二部分;
利用所述解密程序、所述授权证书和所述公钥的第二部分对加密后的目标代码文件进行解密。
可选地,所述获取解密外设中存储的解密辅助信息之前,还包括:
接收用户输入的验证码;所述验证码为所述解密外设基于解密外设的标识码以及时间戳生成的;
响应于所述用户输入,触发执行获取解密外设中存储的解密辅助信息的步骤。
可选地,所述解密辅助信息为字节码;所述字节码中的存储位置信息包括以下至少一项:起始代码块的起始位置、结束代码块的起始位置和各个代码块的起始位置。
第三方面,本发明实施例提供了一种防反编译的加密装置,包括:
加密模块,用于利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
处理模块,用于根据所述私钥对应的公钥,以及目标信息得到解密辅助信息;所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
所述处理模块,还用于根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。
第四方面,本发明实施例提供了一种防反编译的解密装置,包括:
获取模块,用于获取采用私钥加密后得到的目标代码文件以及解密辅助信息;所述解密辅助信息为根据所述私钥对应的公钥以及目标信息得到的,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
处理模块,用于根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序;
解密模块,用于利用所述解密程序和公钥对加密后的目标代码文件进行解密。
第五方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述防反编译的加密方法的步骤或实现如第二方面所述防反编译的解密方法的步骤。
第六方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述防反编译的加密方法的步骤或实现如第二方面所述防反编译的解密方法的步骤。
第七方面,本发明实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面所述防反编译的加密方法的步骤或实现如第二方面所述防反编译的解密方法的步骤。
本发明实施例提供的防反编译的加密、解密方法、装置、设备和存储介质,通过对目标代码文件进行加密,并基于解密辅助信息将解密程序的代码分散存储至解密外设中,解密程序用于对加密后的目标代码文件进行解密,目标代码文件和解密程序不容易被反编译,而且解密辅助信息为根据公钥以及目标信息中包括的用户授权码和解密外设的时钟信息中的至少一项得到的,安全性较高,并且由于没有改动代码的处理逻辑,解密后不影响执行效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的防反编译的加密方法的流程示意图之一;
图2是本发明实施例提供的防反编译的加密方法的实施框架图;
图3是本发明实施例提供的防反编译的解密方法的流程示意图之二;
图4是本发明实施例提供的防反编译的解密方法的实施框架图;
图5是本发明提供的防反编译的加密装置的结构示意图;
图6是本发明提供的防反编译的解密装置的结构示意图;
图7是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中的方法,应用于目标代码文件的防反编译场景中,例如Java代码文件。
本发明实施例中为了防止反编译,采用对代码文件进行加密,并将解密程序分散存储的方案,目标代码文件和解密程序不容易被反编译,并且由于没有改动代码的处理逻辑,解密后不影响执行效率。
下面结合图1-图4以具体的实施例对本发明实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是本发明实施例提供的防反编译的加密方法的流程示意图之一。如图1所示,本实施例提供的方法,包括:
步骤101、利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
具体的,可以预先生成私钥和私钥对应的公钥,可以是基于解密方的用户身份识别信息以及用户设备信息得到的,可选地,可以是基于解密方的用户身份识别信息以及用户设备信息利用加密算法得到的。用户身份识别信息可以唯一标识该揭密方。
利用获取到的私钥对目标代码文件进行加密,加密算法可以是预设算法,例如RSA256、RSA512、RSA1024等。例如,利用获取到的私钥对目标代码文件进行加密可以包括:采用私钥以及版本号、文件包名、类名、描述符中的至少一项对目标代码文件进行加密,例如在加密后的目标代码文件加入版本号、文件包名、类名、描述符等中至少一项的加密信息,提高安全性。
私钥可以是加密方确定的,并通知给解密方的用户。
步骤102、根据私钥对应的公钥以及目标信息得到解密辅助信息;目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
具体的,用户授权码可以是加密方获取的,并通知给解密方。可选地,可以将随机生成的字符串作为用户授权码,例如利用生成随机字符串算法生成的字符串作为用户授权码。
每一个解密外设都有内置的时钟信息,例如时钟信息包括起始时间、计时间隔和间隔步长等。比如起始时间是1999-09-09 12:12:12,计时间隔可以通过时间的刷新频率表示,间隔步长表示时间的刷新步长,例如刷新一次增加一秒。不同的解密外设的起始时间、计时间隔和间隔步长可以不同,每个解密外设就又多了个唯一且看起来动态的变量。
公钥可以是加密方确定的,与步骤101中私钥组成一个密钥对,例如基于解密方的用户信息以及用户设备信息得到的,可选地,可以是利用RSA算法得到的。
根据公钥,以及目标信息包括的用户授权码和解密外设的时钟信息中的至少一项得到解密辅助信息,解密辅助信息可以作为分散存储以及还原解密程序的输入参数,提高了防反编译的安全性。
步骤103、根据解密辅助信息,将解密程序的代码分散存储至解密外设中;解密程序用于对加密后的目标代码文件进行解密。
具体的,可以将解密程序的代码进行打散,例如分块并分散存储至解密外设中,分块以及分散存储的具体方式可以预先设置,例如预先设置:打散的代码块的数目、代码块的大小、代码块的切分位置、分散存储的位置、分散存储的顺序等。将解密程序的代码分散存储,使得解密程序不容易反编译,从而提高安全性。
例如,解密程序的入口是在整个程序的低地址。那么打散之后可能就变成相对中间的地址,隐藏程序的起始地址,这样不容易被反编译。
本实施例的方法,通过对目标代码文件进行加密,并将解密程序的代码基于解密辅助信息分散存储至解密外设中,解密程序用于对加密后的目标代码文件进行解密,目标代码文件和解密程序不容易被反编译,而且解密辅助信息为根据公钥以及目标信息包括的用户授权码和解密外设的时钟信息中的至少一项得到的,安全性较高,并且由于没有改动代码的处理逻辑,解密后不影响执行效率。
在一实施例中,解密辅助信息包括:代码块的拆分信息和存储位置信息,步骤103可以通过如下方式实现:
根据代码块的拆分信息,按照预设规则将解密程序的代码拆分成多个代码块;
根据存储位置信息,按照目标顺序将代码块分散存储至解密外设中;目标顺序为除多个代码块在解密程序中的原顺序之外的顺序。
具体的,例如可以将利用预设规则和目标顺序将解密程序分散存储的处理过程生成一个处理程序,将解密辅助信息作为该处理程序的输入参数,触发该处理程序将解密程序的代码拆分成多个代码块,并按照目标顺序将代码块分散存储至解密外设中。该处理程序可以确定解密程序的代码如何进行分块、分块的数量、大小等等,例如可以基于代码块的拆分信息确定,另外还可以基于存储位置信息给打散后的代码块分配不同的存储位置等。
其中,目标顺序为将原顺序打乱之后的顺序,即不按照多个代码块在解密程序中的原顺序,而是随机分散存储至解密外设中,减小反编译的概率。
解密时,可以基于存储位置信息以及目标顺序获取到分散存储的多个代码块,进而基于拆分信息以及多个代码块还原得到解密程序。
可选地,解密辅助信息为基于所述公钥以及目标信息得到的字节码;字节码包括代码块的拆分信息和存储位置信息,所述存储位置信息包括以下至少一项:起始代码块的起始位置、结束代码块的起始位置和各个代码块的起始位置。
例如将颁发给用户的授权码和颁发给用户的授权证书的内容,转换成字节码。以字节码的部分内容为解密程序拆分的依据,即代码块的拆分信息,例如代码块的数量、大小等。以其他内容作为存储位置信息,例如解密程序拆分后的每块内容存储的起始位置,或起始代码块的起始位置,或,结束代码块的起始位置。
在一实施例中,如图2所示,步骤101之前还包括:
根据目标代码文件的标识信息,确定目标代码文件是否需要加密;
若目标代码文件需要加密,则执行利用预先获取到的私钥对目标代码文件进行加密的步骤。
可选地,目标代码文件的标识信息包括魔法数;或,
所述目标代码文件的标识信息包括魔法数以及以下至少一项:版本号、文件包名、类名、描述符。
具体的,根据目标代码文件的标识信息可以确定类型,某些类型的代码文件可能不需要加密,某些类型的代码文件需要加密,例如class文件包含Java程序的重要内容,为了防止反编译,则需要加密。例如class文件中的魔法数为0xCAFEBABE,识别目标代码文件是否以0xCAFEBABE开头,若是,则说明是class文件。
可选地,加密方法的过程可以通过Maven插件方式实现。Maven的插件方式非常方便集成到Java项目当中,兼容性较好。
可选地,利用预先获取到的私钥对目标代码文件进行加密之后,还包括:
将加密标识写入加密后的目标代码文件中的预设位置。
具体的,将加密标识(声明该文件被特定加密的信息)写入加密后的文件的特定的预设位置。
例如,用户在该预设位置识别到加密标识,则说明该目标代码文件为加密过的,需要解密后使用。例如,不同加密用户可以在不同的位置加入加密标识,例如在预设位置1加入加密标识,表示加密用户1进行的加密,加密采用的公钥和私钥分别为公钥1和私钥1,加密算法为算法1;在预设位置2加入加密标识,表示加密用户2进行的加密,加密采用的公钥和私钥分别为公钥2和私钥2,加密算法为算法2。
上述实施方式中,通过在预设位置加入加密标识,可以使得解密方较为方便地识别出是经过加密的文件,防止产生误判。
可选地,获取用户设备信息和用户身份识别信息,用户设备信息包括以下至少一项:CPU信息、操作系统信息、网卡信息;
根据用户设备信息和用户身份识别信息,利用目标加密算法获取私钥和所述私钥对应的公钥;
将公钥拆分为第一部分和第二部分;
将第一部分作为授权证书,并将第二部分分散存储至解密外设中。
具体的,根据用户设备信息和用户身份识别信息,获取公钥和私钥,例如根据解密方的用户设备信息和用户身份识别信息,利用加密算法(例如RSA)。
例如,可以利用信息采集程序采集揭密方的用户设备的CPU序列号、型号、操作系统信息或网卡信息等。
用户身份识别信息可以是唯一标识该解密方的用户身份识别码,例如使用用户的姓名、部门、联系方式等生成。
为了提高安全性,可以将公钥拆分为第一部分和第二部分,第一部分作为授权证书发送解密方的用户设备,例如,在揭密方第一次使用解密外设时导入该授权证书进行验证,第二部分分散存储至解密外设中,即把公钥的第二部分拆分成信息块,大小可以相同或不同,按照一定的排列方式分散存储至解密外设中,可以减小反编译的概率。
可选地,解密辅助信息可以根据公钥的第一部分,以及目标信息得到。
上述实施方式中,将公钥拆分为第一部分和第二部分,可以减少发给解密方的公钥的内容,减小安全风险,第二部分分散存储至解密外设,安全性较高。
图3是本发明实施例提供的防反编译的解密方法的流程示意图之一。如图3所示,本实施例提供的方法,包括:
步骤201、获取采用私钥加密后得到的目标代码文件以及解密辅助信息;解密辅助信息为根据私钥对应的的公钥以及目标信息得到的,目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
步骤202、根据解密辅助信息,对解密外设中分散存储的解密程序的代码进行还原处理,得到解密程序;
步骤203、利用解密程序和公钥对加密后的目标代码文件进行解密。
具体的,还原处理和解密过程可以是加密过程和分散存储的逆过程。
如图4所示,解密方法可以通过解密识别程序实现,该解密识别程序可以识别出加密的目标代码文件,并获取到解密程序,调用解密程序进行解密,可选地,还可以将解密后的目标代码文件载入内存以供运行。
解密识别程序例如使用JVMTI(JVM Tool Interface)实现。在JVM代理(agent)载入目标代码文件时,加入相应的拦截函数。对目标代码文件进行识别。如发现被加密文件则将文件字节流内容交给解密程序处理。解密程序处理完毕后将解密后的字节流返回给拦截函数。拦截函数将解密后的字节内容载入内存。
可选地,解密辅助信息可以存储在解密外设中,在使用后重新生成不同的信息存入解密外设中的预设位置,以供下次使用,每次使用完进行更新,可以提高安全性。
可选地,解密识别程序可以为dll或so文件形式。
可选地,所述获取采用私钥加密后得到的目标代码文件以及解密辅助信息之前,还包括:
接收用户输入的验证码;所述验证码为所述解密外设基于解密外设的标识码以及时间戳生成的;
响应于所述用户输入,触发执行获取解密外设中存储的解密辅助信息的步骤。
具体地,解密外设具有唯一的标识码,用于标识该解密外设。根据唯一的标识码和解密外设的当前时间信息可以生成随机的一次性验证码,作为步骤201的触发条件,减小反编译的概率。
可选地,解密辅助信息包括:代码块的拆分信息和存储位置信息,所述根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序,包括:
根据所述存储位置信息,按照目标顺序获取分散存储在所述解密外设中的多个代码块;所述目标顺序为除所述多个代码块在所述解密程序中的原顺序之外的顺序;
根据代码块的拆分信息以及多个代码块,按照预设规则还原得到所述解密程序。
其中,此处的预设规则可以是加密端对代码块进行拆分采用的预设规则的逆过程。
可选地,所述解密辅助信息为字节码;所述字节码中的存储位置信息包括以下至少一项:起始代码块的起始位置、结束代码块的起始位置和各个代码块的起始位置。
可选地,所述方法还包括:
获取用户授权码和授权证书;所述授权证书为所述公钥的第一部分;根据所述授权证书以及目标信息得到解密辅助信息。
所述公钥的第二部分分散存储在解密外设中,利用所述解密程序和公钥对加密后的目标代码文件进行解密,包括:
获取所述解密外设中分散存储的公钥的第二部分;
利用所述解密程序、所述授权证书和所述公钥的第二部分对加密后的目标代码文件进行解密。
可选地,将随机生成的字符串作为所述用户授权码。
其中,公钥的第二部分可以基于加密方分散存储的方式还原出来。
本实施例的方法,其具体实现过程与技术效果与加密方法实施例中类似,具体可以参见加密方法实施例中的详细介绍,此处不再赘述。
下面对本发明提供的防反编译的加密、解密装置进行描述,下文描述的防反编译的加密、解密装置与上文描述的防反编译的加密、解密方法可相互对应参照。
图5是本发明提供的防反编译的加密装置的结构示意图。本实施例提供的防反编译的加密装置,包括:
加密模块210,用于利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
处理模块220,用于根据所述私钥对应的公钥,以及目标信息得到解密辅助信息;所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
所述处理模块220,还用于利用所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。
可选地,解密辅助信息包括:代码块的拆分信息和存储位置信息,所述处理模块220,具体用于:
根据所述代码块的拆分信息,按照预设规则将解密程序的代码拆分成多个代码块;
根据所述存储位置信息,按照目标顺序将所述代码块分散存储至所述解密外设中;所述目标顺序为除所述多个代码块在所述解密程序中的原顺序之外的顺序。
可选地,所述解密辅助信息为字节码;所述字节码中的存储位置信息包括以下至少一项:起始代码块的起始位置、结束代码块的起始位置和各个代码块的起始位置。
可选地,所述处理模块220,还用于:
根据所述目标代码文件的标识信息,确定所述目标代码文件是否需要加密;
若所述目标代码文件需要加密,则执行利用获取到的私钥对目标代码文件进行加密的步骤。
可选地,所述目标代码文件的标识信息包括魔法数;或,
所述目标代码文件的标识信息包括魔法数以及以下至少一项:版本号、文件包名、类名、描述符;
所述魔法数用于指示所述目标代码文件的类型。
可选地,所述处理模块220,还用于:
将加密标识写入加密后的目标代码文件中的预设位置。
可选地,所述处理模块220,还用于:
获取用户设备信息和用户身份识别信息,用户设备信息包括以下至少一项:CPU信息、操作系统信息、网卡信息;
根据所述用户设备信息和用户身份识别信息,利用目标加密算法获取所述私钥和所述私钥对应的公钥;
将公钥拆分为第一部分和第二部分;
将所述第一部分作为授权证书,并将所述第二部分分散存储至解密外设中。
可选地,所述处理模块220,具体用于:
根据所述授权证书,以及目标信息得到解密辅助信息。
可选地,将随机生成的字符串作为所述用户授权码。
本实施例的装置,可以用于执行前述加密方法实施例中任一实施例的方法,其具体实现过程与技术效果与加密方法实施例中类似,具体可以参见方法实施例中的详细介绍,此处不再赘述。
图6是本发明提供的防反编译的解密装置的结构示意图。本实施例提供的防反编译的解密装置,包括:
获取模块310,用于获取采用私钥加密后得到的目标代码文件以及解密辅助信息;所述解密辅助信息为根据所述私钥对应的公钥以及目标信息得到的,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
处理模块320,用于根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序;
解密模块330,用于利用所述解密程序和公钥对加密后的目标代码文件进行解密。
可选地,解密辅助信息包括:代码块的拆分信息和存储位置信息,所述处理模块320,具体用于:
根据所述存储位置信息,按照目标顺序获取分散存储在所述解密外设中的多个代码块;所述目标顺序为除所述多个代码块在所述解密程序中的原顺序之外的顺序;
根据所述代码块的拆分信息以及所述多个代码块,按照预设规则还原得到所述解密程序。
可选地,所述获取模块310,还用于:
获取用户授权码和授权证书;所述授权证书为所述公钥的第一部分;
所述解密辅助信息为根据所述授权证书以及目标信息得到的;
所述公钥的第二部分分散存储在解密外设中,解密模块330,具体用于:
获取所述解密外设中分散存储的公钥的第二部分;
利用所述解密程序、所述授权证书和所述公钥的第二部分对加密后的目标代码文件进行解密。
可选地,所述获取解密外设中存储的解密辅助信息之前,所述获取模块310,还用于:接收用户输入的验证码;所述验证码为所述解密外设基于解密外设的标识码以及时间戳生成的;
响应于所述用户输入,触发执行获取解密外设中存储的解密辅助信息的步骤。
可选地,所述解密辅助信息为字节码;所述字节码中的存储位置信息包括以下至少一项:起始代码块的起始位置、结束代码块的起始位置和各个代码块的起始位置。
本实施例的装置,可以用于执行前述解密方法实施例中任一实施例的方法,其具体实现过程与技术效果与解密方法实施例中类似,具体可以参见方法实施例中的详细介绍,此处不再赘述。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行防反编译的加密、解密方法,该加密方法包括:
利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
根据所述私钥对应的公钥以及目标信息得到解密辅助信息;所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。
或,
该解密方法包括:
获取采用私钥加密后得到的目标代码文件以及解密辅助信息;所述解密辅助信息为根据所述私钥对应的公钥以及目标信息得到的,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序;
利用所述解密程序和公钥对加密后的目标代码文件进行解密。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的防反编译的加密、解密方法,该加密方法包括:
利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
根据所述私钥对应的公钥以及目标信息得到解密辅助信息,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。
或,
该解密方法包括:
获取采用私钥加密后得到的目标代码文件以及解密辅助信息;所述解密辅助信息为根据所述私钥对应的公钥以及目标信息得到的,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序;
利用所述解密程序和公钥对加密后的目标代码文件进行解密。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的防反编译的加密、解密方法,该加密方法包括:
利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
根据所述私钥对应的公钥以及目标信息得到解密辅助信息;所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。
或,
该解密方法包括:
获取采用私钥加密后得到的目标代码文件以及解密辅助信息;所述解密辅助信息为根据所述私钥对应的公钥以及目标信息得到的,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序;
利用所述解密程序和公钥对加密后的目标代码文件进行解密。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (18)
1.一种防反编译的加密方法,其特征在于,包括:
利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
根据所述私钥对应的公钥以及目标信息得到解密辅助信息;所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。
2.根据权利要求1所述的方法,其特征在于,所述解密辅助信息包括:代码块的拆分信息和存储位置信息,根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中,包括:
根据所述代码块的拆分信息,按照预设规则将解密程序的代码拆分成多个代码块;
根据所述存储位置信息,按照目标顺序将所述代码块分散存储至所述解密外设中;所述目标顺序为除所述多个代码块在所述解密程序中的原顺序之外的顺序。
3.根据权利要求2所述的方法,其特征在于,所述解密辅助信息为字节码;所述字节码中的存储位置信息包括以下至少一项:起始代码块的起始位置、结束代码块的起始位置和各个代码块的起始位置。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述利用获取到的私钥对目标代码文件进行加密之前,还包括:
根据所述目标代码文件的标识信息,确定所述目标代码文件是否需要加密;
若所述目标代码文件需要加密,则执行利用获取到的私钥对目标代码文件进行加密的步骤。
5.根据权利要求4所述的方法,其特征在于,
所述目标代码文件的标识信息包括魔法数;或,
所述目标代码文件的标识信息包括魔法数以及以下至少一项:版本号、文件包名、类名、描述符;
所述魔法数用于指示所述目标代码文件的类型。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述利用获取到的私钥对目标代码文件进行加密之后,还包括:
将加密标识写入加密后的目标代码文件中的预设位置。
7.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
获取用户设备信息和用户身份识别信息,用户设备信息包括以下至少一项:CPU信息、操作系统信息、网卡信息;
根据所述用户设备信息和用户身份识别信息,利用目标加密算法获取所述私钥和所述私钥对应的公钥;
将公钥拆分为第一部分和第二部分;
将所述第一部分作为授权证书,并将所述第二部分分散存储至解密外设中。
8.根据权利要求7所述的方法,其特征在于,根据所述私钥对应的公钥以及目标信息得到解密辅助信息,包括:
根据所述授权证书以及目标信息得到解密辅助信息。
9.一种防反编译的解密方法,其特征在于,包括:
获取采用私钥加密后得到的目标代码文件以及解密辅助信息;所述解密辅助信息为根据所述私钥对应的公钥以及目标信息得到的,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序;
利用所述解密程序和公钥对加密后的目标代码文件进行解密。
10.根据权利要求9所述的方法,其特征在于,所述解密辅助信息包括:代码块的拆分信息和存储位置信息,根据所述解密辅助信息,对所述解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序,包括:
根据所述存储位置信息,按照目标顺序获取分散存储在所述解密外设中的多个代码块;所述目标顺序为除所述多个代码块在所述解密程序中的原顺序之外的顺序;
根据所述代码块的拆分信息以及所述多个代码块,按照预设规则还原得到所述解密程序。
11.根据权利要求9或10所述的方法,其特征在于,所述方法还包括:
获取用户授权码和授权证书;所述授权证书为所述公钥的第一部分;
所述解密辅助信息为根据所述授权证书以及目标信息得到的;
所述公钥的第二部分分散存储在解密外设中,利用所述解密程序和公钥对加密后的目标代码文件进行解密,包括:
获取所述解密外设中分散存储的公钥的第二部分;
利用所述解密程序、所述授权证书和所述公钥的第二部分对加密后的目标代码文件进行解密。
12.根据权利要求9或10所述的方法,其特征在于,所述获取采用私钥加密后得到的目标代码文件以及解密辅助信息之前,还包括:
接收用户输入的验证码;所述验证码为所述解密外设基于解密外设的标识码以及时间戳生成的;
响应于所述用户输入,触发执行获取解密外设中存储的解密辅助信息的步骤。
13.根据权利要求9或10所述的方法,其特征在于,所述解密辅助信息为字节码;所述字节码中的存储位置信息包括以下至少一项:起始代码块的起始位置、结束代码块的起始位置和各个代码块的起始位置。
14.一种防反编译的加密装置,其特征在于,包括:
加密模块,用于利用获取到的私钥对目标代码文件进行加密,得到加密后的目标代码文件;
处理模块,用于根据所述私钥对应的公钥,以及目标信息得到解密辅助信息;所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
所述处理模块,还用于根据所述解密辅助信息,将解密程序的代码分散存储至解密外设中;所述解密程序用于对所述加密后的目标代码文件进行解密。
15.一种防反编译的解密装置,其特征在于,包括:
获取模块,用于获取采用私钥加密后得到的目标代码文件以及解密辅助信息;所述解密辅助信息为根据所述私钥对应的公钥以及目标信息得到的,所述目标信息包括:用户授权码和解密外设的时钟信息中的至少一项;
处理模块,用于根据所述解密辅助信息,对解密外设中分散存储的解密程序的代码进行还原处理,得到所述解密程序;
解密模块,用于利用所述解密程序和公钥对加密后的目标代码文件进行解密。
16.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8中任一项所述防反编译的加密方法,或如权利要求9至13中任一项所述防反编译的解密方法。
17.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至8中任一项所述防反编译的加密方法或如权利要求9至13中任一项所述防反编译的解密方法。
18.一种计算机程序产品,其上存储有可执行指令,其特征在于,该指令被处理器执行时使处理器实现如权利要求1至8中任一项所述防反编译的加密方法或如权利要求9至13中中任一项所述防反编译的解密方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210827744.5A CN115310057A (zh) | 2022-07-13 | 2022-07-13 | 防反编译的加密、解密方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210827744.5A CN115310057A (zh) | 2022-07-13 | 2022-07-13 | 防反编译的加密、解密方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115310057A true CN115310057A (zh) | 2022-11-08 |
Family
ID=83855989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210827744.5A Pending CN115310057A (zh) | 2022-07-13 | 2022-07-13 | 防反编译的加密、解密方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115310057A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115880789A (zh) * | 2023-02-08 | 2023-03-31 | 中昊芯英(杭州)科技有限公司 | 基于加密的人脸识别方法、相关装置和存储介质 |
-
2022
- 2022-07-13 CN CN202210827744.5A patent/CN115310057A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115880789A (zh) * | 2023-02-08 | 2023-03-31 | 中昊芯英(杭州)科技有限公司 | 基于加密的人脸识别方法、相关装置和存储介质 |
CN115880789B (zh) * | 2023-02-08 | 2023-06-30 | 中昊芯英(杭州)科技有限公司 | 基于加密的人脸识别方法、相关装置和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107977553B (zh) | 移动应用程序的安全加固的方法及装置 | |
CN108664773B (zh) | Java源代码的保护方法及装置 | |
US20180012040A1 (en) | Decentralized Token Table Generation | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
JP2016540282A (ja) | 動的ライブラリを保護する方法及び装置 | |
CN111385084A (zh) | 数字资产的密钥管理方法、装置及计算机可读存储介质 | |
CN102890758A (zh) | 一种保护可执行文件的方法及系统 | |
CN112269970A (zh) | 一种脚本加密方法、装置、服务器及存储介质 | |
CN104298932A (zh) | 一种so文件的调用方法及装置 | |
CN108062461A (zh) | 一种软件授权方法、装置及系统 | |
CN110175475B (zh) | 一种智能卡数据处理方法、装置及计算机可读存储介质 | |
CN109145533B (zh) | 一种使用随机密码保护代码的方法及装置 | |
CN112035860A (zh) | 文件加密方法、终端、装置、设备及介质 | |
CN114915504B (zh) | 安全芯片初始认证方法及系统 | |
JP6796861B2 (ja) | アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステム | |
CN115310057A (zh) | 防反编译的加密、解密方法、装置、设备和存储介质 | |
JP2007515723A (ja) | アクティブなエンティティを使用するソフトウェア実行保護 | |
CN111783153A (zh) | 信息处理的方法及装置、电子设备及存储介质 | |
CN109784072B (zh) | 一种安全文件管理方法和系统 | |
CN111475844A (zh) | 一种数据共享方法、装置、设备及计算机可读存储介质 | |
CN110020533B (zh) | 一种vr资源的安全保护方法及终端 | |
CN106845169B (zh) | 一种Jar包加固方法及系统 | |
CN114238870A (zh) | 一种网络请求处理方法、装置、设备及存储介质 | |
EP2998895B1 (en) | Technique for enabling nominal flow of an executable file |
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 |