CN106951744B - 可执行程序的保护方法及装置 - Google Patents
可执行程序的保护方法及装置 Download PDFInfo
- Publication number
- CN106951744B CN106951744B CN201710154053.2A CN201710154053A CN106951744B CN 106951744 B CN106951744 B CN 106951744B CN 201710154053 A CN201710154053 A CN 201710154053A CN 106951744 B CN106951744 B CN 106951744B
- Authority
- CN
- China
- Prior art keywords
- grouping
- statement
- module
- executable program
- statements
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 230000002452 interceptive effect Effects 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 82
- 238000003491 array Methods 0.000 claims description 31
- 238000004458 analytical method Methods 0.000 claims description 27
- 238000003860 storage Methods 0.000 claims description 18
- 238000002347 injection Methods 0.000 claims description 9
- 239000007924 injection Substances 0.000 claims description 9
- 239000000284 extract Substances 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 13
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 10
- 238000013519 translation Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000003247 decreasing effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000000243 solution Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种可执行程序的保护方法及装置,涉及数据处理技术领域,解决了现有技术中对可执行程序的保护效果较差,进而导致可执行程序的安全性易受到影响的问题。本发明的主要技术方案为:从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;混淆所述分组语句的分组顺序;根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。本发明主要用于可执行程序的保护。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种可执行程序的保护方法及装置。
背景技术
随着微软可扩展标记语言的网络分布式模块化组件服务平台(Microsoft.NETXML Web Services,简称.NET)的逐步普及,对.NET平台下可执行程序的保护也逐步受到人们的重视。其中,.NET平台为一款微软公司开发的技术平台,旨在实现平台上不同编程语言的可执行程序间数据的通讯和共享。该平台可以面向多种编程语言,例如C++(The C++Programming Language,一种编程语言,简称C++语言)、C#(The C# ProgrammingLanguage,一种编程语言,简称C#语言)或VB(Visual Basic,一种编程语言,简称VB语言)等编程语言。通常情况下,.NET平台可以将上述编程语言转化成微软中间语言(MicrosoftIntermediate Language,简称MSIL),即中间语言(Intermediate Language,MSIL的缩写,简称IL)指令。然而经.NET平台转化成IL指令的可执行程序很容易被反编译软件还原成可执行程序的源代码并破解,例如,通常使用Reflector软件来进行可执行程序的破解。因此,在.NET平台下转换为IL指令的可执行程序都需要进行必要的保护。
目前,在对.NET平台下可执行程序的保护过程中,通常使用两种保护方法:一种方法是基于软件的保护方法,该方法主要是通过保护软件对IL指令的指令顺序进行改变,以达到混淆IL指令的目的,进而实现对可执行程序的保护,其中,所述保护软件可以为.NETReactor、Dotfuscator等;另一种方法是基于硬件的保护方法,该方法主要是挑选IL指令中的部分指令,通过将所述部分IL指令转译成其他编程代码,并将所述转译后的代码移植在预置的保护装置中,以实现对可执行程序的保护。然而,前者基于软件的保护方法是基于纯IL层面上,通过混淆IL指令的顺序以实现保护功能,导致经混淆后IL指令的抗分析性较差,容易被破解软件破解,进而影响转化为IL指令的可执行程序的安全性;后者基于硬件的保护方法中,由于转译后的代码需移植到保护装置中,导致所移植的代码数量易受硬件的空间限制,进而影响转化为IL指令的可执行程序的安全性。因此,现有技术中对转化为IL指令的可执行程序的保护效果较差,进而导致可执行程序的安全性易受到影响。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的可执行程序的保护方法及装置。
为达到上述目的,本发明主要提供如下技术方案:
一方面,本发明提供了一种可执行程序的保护方法,该方法包括:
从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;
混淆所述分组语句的分组顺序;
根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;
通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;
将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。
另一方面,本发明还提供一种可执行程序的保护装置,该装置包括:
分组单元,用于从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;
混淆单元,用于混淆所述分组单元进行过分组操作后的所述分组语句的分组顺序;
操作单元,用于根据特定规则对所述混淆单元混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;
生成单元,用于通过对所述操作单元操作后得到的秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及所述连接语句的代码;
注入单元,用于将所述生成单元生成的包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。
借由上述技术方案,本发明提供的一种可执行程序的保护方法及装置,与现有基于软件的保护方法相比,本发明通过在混淆可执行程序的待保护语句的语句顺序之后,继续对所述可执行程序的待保护语句进行相关的操作:其中,首先通过特定规则,将所述待保护语句进行加密操作并生成与所述混淆后的分组语句对应的秘钥数组,由于所述秘钥数组中记录了对应的所述分组语句的分组顺序,且秘钥数组根据特定规则生成,因此增加了在未知特定规则的前提下对秘钥数组进行分析的难度,进而提高了所述分组语句的抗分析能力;随后通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码,由于所述连接语句的连接逻辑由本地代码的种类决定,通过更换本地代码即可改变当前秘钥数组的连接关系,并且连接语句的生成是通过秘钥数组与本地代码交互运算后动态生成的,因此可以进一步提高所述包含秘钥数组及连接语句的代码的抗分析能力,进而克服了现有技术的保护方法中,仅混淆待保护语句的顺序导致可执行程序的抗分析性较差的问题,进而提高对可执行程序保护效果,进一步提高了安全性。此外,与现有基于硬件的保护方法相比,本发明通过本地代码中的连接语句,连接所述秘钥数组,生成包含所述秘钥数组及所述连接语句的代码,并将将所述代码注入到已提取待保护语句的可执行程序中。由于所述代码仍保存在可执行程序中,无需经过转译编码的过程,避免现有基于硬件保护方法中对待保护语句的转译过程,并且所述代码最后仍注入到可执行程序中,与所述可执行程序存储在一起,无需通过额外硬件空间存储,因此所述代码的数量不受硬件空间限制,可以根据需要进行增减,进而避免了现有技术中因转译后的代码数量受硬件空间限制进而影响可执行程序安全性的问题,进而改善了保护效果,进一步提高了可执行程序的安全性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的一种可执行程序的保护方法流程图;
图2为本发明实施例提供的另一种可执行程序的保护方法流程图;
图3为本发明实施例提供的一种可执行程序的保护装置的组成框图;
图4为本发明实施例提供的另一种可执行程序的保护装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。
本发明实施例提供了一种可执行程序的保护方法,如图1所示,所述方法包括:
101、从可执行程序中提取待保护语句,并对待保护语句进行分组,得到分组语句。
其中,所述的待保护语句可以为所述可执行程序中某一段语句、某几段语句或能够实现某个功能的语句集合。
在计算机领域中,可执行程序由大量的语句构成,不同的语句之间根据不同语言环境形成完整的逻辑及功能。在此,以常见的编程语言C语言为例,选取一个带有测试功能的语句集合,如下所示:
在上述的语句中,不同语句在C语言的语言环境下形成完整的测试功能。因此,在本发明实施例中,所述可执行程序的待保护语句可以是可执行程序的语句集合中某一段语句或某几段语句的集合。但是需要说明的是,待保护语句应为能形成某种功能的语句集合。因为,之所以对某些语句或某段语句进行保护,主要是通过对所述语句进行保护以实现对其对应功能的保护。因此,待保护语句应该是包含某种功能或能实现某种指令的语句集合,否则,单独保护某一段没有功能的语句,或是能实现某功能的语句集合中的某一部分是没有意义的。
需要说明的是,在本实施例中,所述可执行程序中待保护语句的选取根据需要自行选取,且进行分组时的分组数量在此也不做具体的限定,可以根据需要进行选取。
102、混淆分组语句的分组顺序。
在对所述分组语句进行混淆时,可以选择的多种混淆软件或混淆器,在此不做限定,但是混淆软件或混淆器的选择应与所述分组语句的类别相对应。
例如,若所述分组语句类别为VB语言时,则应选择对应VB语言的混淆软件或混淆器;若所述分组语句的类别为C#语言时,则应选择对应C#语言的混淆软件或混淆器。
103、根据特定规则对混淆后的分组语句进行操作,生成与混淆后的分组语句对应的秘钥数组。
其中,所述不同的秘钥数组与不同的混淆后的分组语句一一对应。例如,若所述混淆后的分组语句数量为5组,则在本步骤中在进行操作后生成的秘钥数组也应该是5个,每一个秘钥数组对应每一个分组语句。
在生成秘钥数组的过程中,所述秘钥数组的生成方式可以根据需要进行选取。具体的,首先可以选择一个数字,然后根据特定的方式对所选择的数字进行加密操作,结合分组语句的顺序,生成对应每一个分组语句的数字或数字串,所述的数字或数字串中包含对应的分组语句的顺序。所述数字或字符串即可以为本步骤中的秘钥数组。
当然,所述对数字进行加密操作的方式是根据我们的需要自行设定的,据此可以确保生成的秘钥数组的安全性,在此不做限定。进一步的,所述秘钥数组中可以不仅包含当前对应分组语句的分组顺序,还可以包含其他相关的该分组语句的信息,具体包含的信息则与本步骤所选择的操作方式有关。其中,还可以对所述秘钥数组进行进一步的加密,一般可以选择一个本地加密秘钥作为进一步加密的依据,而这个本地加密秘钥保存在相关技术开发人员的手中,以此可以确保在加密过程中,秘钥数组的安全性。
104、通过对所述秘钥数组和本地代码进行交互运算,生成包含秘钥数组及连接语句的代码。
在本步骤中,所述的本地代码为根据需要自行选取的代码,具体的可以为C语言、C++、C#或VB等编程语言。其中,不同的编程语言的连接语句各不相同。在进行本步骤中的交互运算时,由于选择的本地代码的种类是根据需要自行选取的,因此交互运算后得到的所述连接语句也是不同的,即生成包含所述秘钥数组及连接语句的代码中所述连接语句是动态的,进而以此可以提高所述代码的安全性。需要注意的是,在通过交互运算后生成包含所述秘钥数组与连接语句的代码时,其中,所使用的所述连接语句在进行连接时,需要注意所述本地代码对应编程语言的逻辑规则。
105、将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。
若所述可执行程序的待保护语句为在.NET平台下的语句时,根据所述.NET平台的特点,在本步骤中注入的方式可以通过微软提供的元数据的应用程序编程接口命令(Application Program Interface,应用程序编程接口,简称API)来实现。
具体的,所述注入的方式根据所注入的代码的类别,由不同的函数密令实现。例如:若注入的代码的类别为类时,采用DefineTypeDef函数;若注入的代码的类别为方法时,采用DefineMethod函数。其中,所述的类及所述的方法均为.NET平台下不同代码指令的类别。
借由上述技术方案,本发明实施例提供的一种可执行程序的保护方法,与现有基于软件的保护方法相比,本发明实施例通过在混淆可执行程序的待保护语句的语句顺序之后,继续对所述可执行程序的待保护语句进行相关的操作:其中,首先通过特定规则,将所述待保护语句进行加密操作并生成与所述混淆后的分组语句对应的秘钥数组,由于所述秘钥数组中记录了对应的所述分组语句的分组顺序,且秘钥数组根据特定规则生成,因此增加了在未知特定规则的前提下对秘钥数组进行分析的难度,进而提高了所述分组语句的抗分析能力;随后通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及所述连接语句的代码,由于所述连接语句的连接逻辑由本地代码的种类决定,通过更换本地代码即可改变当前秘钥数组的连接关系,并且连接语句的生成是通过秘钥数组与本地代码交互运算后动态生成的,因此可以进一步提高所述包含秘钥数组及连接语句的代码的抗分析能力,进而克服了现有技术的保护方法中,仅混淆待保护语句的顺序导致可执行程序的抗分析性较差的问题,进而提高对可执行程序保护效果,进一步提高了安全性。此外,与现有基于硬件的保护方法相比,本发明实施例通过本地代码中的连接语句,连接所述秘钥数组,生成包含所述秘钥数组及所述连接语句的代码,并将将所述代码注入到已提取待保护语句的可执行程序中。由于所述代码仍保存在可执行程序中,无需经过转译编码的过程,避免现有基于硬件保护方法中对待保护语句的转译过程,并且所述代码最后仍注入到可执行程序中,与所述可执行程序存储在一起,无需通过额外硬件空间存储,因此所述代码的数量不受硬件空间限制,可以根据需要进行增减,进而避免了现有技术中因转译后的代码数量受硬件空间限制进而影响可执行程序安全性的问题,进而改善了保护效果,进一步提高了可执行程序的安全性。
本发明实施例提供了另一种可执行程序的保护方法,如图2所示,所述方法包括:
201、从可执行程序中提取待保护语句,并对待保护语句进行分组,得到分组语句。
其中,所述可执行程序中待保护语句为所述可执行程序在.NET平台下转化成IL指令集中对应的IL指令。
具体的,在本步骤中,对所述待保护语句进行分组,得到分组语句,包括:根据所述待保护语句对应的IL指令,分析所述IL指令中不同指令对应的不同功能;根据所述不同指令对应的不同功能,将形成完整功能的IL指令分成一组。
在计算机领域中,不同的程序由不同的语句构成,不同功能由不同的程序实现,在这其中,不同的语句均由不同的语言编译而成。以人机交互的角度来说,我们把这些语言分成三类:编程语言、中间语言及机器语言。其中机器语言由01代码构成,计算机可以直接识别。但机器语言的分析性和可读性上较差,普通的技术人员难以掌握并识别这种机器语言。而编程语言是用于编译不同的计算机代码及程序而来,因此其分析性和可读性较好。但不同的编程语言由于其语言环境和逻辑算法的不同,很难实现完美的对接和转换。因此,介于机器语言和编程语言的中间语言,完美的实现了不同编译语言间的对接,并且比起机器语言有相对较好的分析性和可读性。但中间语言的代码往往很容易被反编译软件破解,进而威胁中间语言的代码对应的编程语言程序的安全性,因此通常会对转化为中间语言的代码进行相关的保护以避免反编译和破解。其中,.NET平台通过将不同编程语言的语句转化成MSIL中间语言,即IL指令,来实现不同的编程语言之间数据的通讯和共享的功能。因此,在本发明实施例中,所述可执行程序中待保护语句为所述可执行程序在.NET平台下转化成IL指令集中对应的IL指令。
具体的,本发明实施例以保护安装有微软Windows XP 32位操作系统的系统环境为例,具体来描述一个实现.NET平台下可执行程序的保护的具体过程。
为了方便说明,本实施例选取了一个具体的.NET平台下的可执行程序,具体如下:
根据本步骤中的方法,若所述可执行程序的待保护语句为上述可执行程序的test语句对应的IL指令时,则所述test语句在.NET平台转化的IL指令如下:
根据本步骤所述的方法,分析上述IL指令的不同功能,并根据功能对其进行分组。在本发明实施例,我们可以将上述test语句对应的IL指令分为以下五组:
其中,第一个分组为
第二个分组为
第三个分组为
第四个分组为
第五个分组为
其中,上述的五组分组IL指令中,每一个分组IL指令都具有不同的功能。根据本步骤中的方法,我们还可以将所述分组IL指令进行组合,譬如可以将第一组与第二组合并成一组。但不能将所述分组IL指令再进一步的分组拆分。若再进行拆分,则拆分后的分组IL指令无法实现具体的功能。也就是说,在本发明实施例中,我们可以将多种功能的分组IL指令合并成一组,使该组IL指令具有多个功能,但是不能将仅能实现一个功能的分组IL指令进行进一步的拆分。因此,在本发明实施例中,根据示例中的IL指令对应的test语句中的五种功能,最多可以将上述IL指令分为五组。
202、混淆分组语句的分组顺序。
具体的,在本步骤中,以前述步骤201中所述的分组IL指令为例,可以将所述分组IL指令的分组顺序进行混淆。譬如,可以将所述第一组分组IL指令与所述第三组分组IL指令的顺序进行混淆,或将所述五分组IL指令与所述第二组IL指令的顺序进行混淆。混淆规则可以为随机混淆,也可以选择其他方式,具体的可以根据实际需要进行选取,在此不做限定。
203、根据特定规则对混淆后的分组语句进行操作,生成与混淆后的分组语句对应的秘钥数组。
具体的,本步骤包括:首先,选择一个二进制数字,所述二进制数字用于记录所述混淆后的分组IL指令的分组数量及分组顺序;然后,根据特定规则将所述二进制数字的高位进行清零操作,并将所述混淆后分组IL指令的分组数量记录到所述清零后二进制数字的高位中;之后,根据特定规则将所述二进制数字进行向左移位操作,并将所述混淆后分组IL指令的分组顺序记录到所述向左移位后二进制数字的低位中;之后,将记录所述分组数量及所述分组顺序的二进制数存储至不同的秘钥数组;最后,将所述不同的秘钥数组匹配给对应所述分组顺序的分组IL指令。
例如:以前述步骤201中所述的分组IL指令为例,对于本发明实施例来说,生成秘钥的规则可以为:在将所述分组IL指令的分组顺序随机混淆后,首先选取一个数字q,所述q为一个二进制的32位的随机数。随后对数字q进行加密操作生成对应所述分组IL指令的秘钥数组key。其中,秘钥数组key的高位记录对应分组IL指令的分组数量,低位记录分组IL指令的分组顺序。具体的,以其中第i个key生成的规则为例,如下所示:
key[i]=q-q%blocks.Count+keyId[i]
key[i]=q&0x00FFFFFF
key[i]=q+blocks.cout<<24
204、通过对所述秘钥数组和本地代码进行交互运算,生成包含秘钥数组及连接语句的代码。
具体的,本步骤包括:首先,根据本地代码的种类,编译调用函数,所述调用函数用于根据不同的秘钥数组调用对应的分组IL指令;然后,根据所述秘钥数组对应的分组IL指令的功能,从所述本地代码中调用连接语句;之后,判断所述本地代码的中连接语句的逻辑算法,并分析所述全部秘钥数组对应的分组IL指令整体功能;最后,通过所述调用的连接语句和所述调用函数,结合所述全部秘钥数组对应的分组IL指令的整体功能及所述本地代码的中连接语句的逻辑算法,将所述秘钥数组连接起来,生成包含所述秘钥数组及所述连接语句的代码。
以步骤201-203中所述的示例为例,根据本步骤中具体的实施方法,本步骤的具体实施方式如下所示:
在上述代码中,arg_0d_0的初始值为第一个秘钥数组key的秘钥值,所述本地代码的种类为C#语言,通过对秘钥数组及本地代码的交互运算,动态选取的连接语句为switch语句。具体的连接方式由C#语言中switch的逻辑规则确定,所述逻辑规则在此不做赘述。
其中,根据本步骤中的方法:根据本地代码的种类,编译调用函数,所述调用函数用于根据不同的秘钥数组调用对应的分组IL指令。所述秘钥数组key的调用函数如下所示:
205、将包含秘钥数组及连接语句的代码注入到已提取待保护语句的可执行程序中。
根据本发明实施例中前述步骤201-204所述,根据所述.NET平台的特点,在本步骤中注入的方式可以通过微软提供的元数据的应用程序编程接口命令API来实现。具体注入的方式根据所注入的代码的类别,由不同的函数密令实现。例如:若注入的代码的类别为类时,采用DefineTypeDef函数;若注入的代码的类别为方法时,采用DefineMethod函数。其中,所述的类及所述的方法均为.NET平台下不同代码指令的类别。
例如,对于本发明实施例来说,所述可执行程序中包含Program类。所述Program中包含.ctor、Main和test三个方法。本发明实施例中选取的示例为方法test的相关语句。
根据本步骤的方法,由于所述包含秘钥数组及连接语句的代码最终注入到已提取待保护语句的可执行程序中。因此所述经过了步骤201-204相关操作的待保护语句的代码无需通过额外的硬件空间进行存储,亦无需在额外的模拟器中执行。
借由上述技术方案,本发明实施例提供的另一种可执行程序的保护方法,与现有基于软件的保护方法相比,本发明实施例通过在混淆可执行程序的待保护语句的语句顺序之后,继续对所述可执行程序的待保护语句进行相关的操作:其中,首先通过特定规则,将所述待保护语句进行加密操作并生成与所述混淆后的分组语句对应的秘钥数组,由于所述秘钥数组中记录了对应的所述分组语句的分组顺序,且秘钥数组根据特定规则生成,因此增加了在未知特定规则的前提下对秘钥数组进行分析的难度,进而提高了所述分组语句的抗分析能力;随后通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及所述连接语句的代码,由于所述连接语句的连接逻辑由本地代码的种类决定,通过更换本地代码即可改变当前秘钥数组的连接关系,并且连接语句的生成是通过秘钥数组与本地代码交互运算后动态生成的,因此可以进一步提高所述包含秘钥数组及连接语句的代码的抗分析能力,进而克服了现有技术的保护方法中,仅混淆待保护语句的顺序导致可执行程序的抗分析性较差的问题,进而提高对可执行程序保护效果,进一步提高了安全性。此外,与现有基于硬件的保护方法相比,本发明实施例通过本地代码中的连接语句,连接所述秘钥数组,生成包含所述秘钥数组及所述连接语句的代码,并将将所述代码注入到已提取待保护语句的可执行程序中。由于所述代码仍保存在可执行程序中,无需经过转译编码的过程,避免现有基于硬件保护方法中对待保护语句的转译过程,并且所述代码最后仍注入到可执行程序中,与所述可执行程序存储在一起,无需通过额外硬件空间存储,因此所述代码的数量不受硬件空间限制,可以根据需要进行增减,进而避免了现有技术中因转译后的代码数量受硬件空间限制进而影响可执行程序安全性的问题,进而改善了保护效果,进一步提高了可执行程序的安全性。此外,通过对分组前的IL指令进行分析,并将能够形成完整功能的IL指令分成一组,确保了分组后的分组IL指令都能实现一个完整的功能,避免了后续的调用及连接过程中出现无法实现功能的问题,确保了整个待保护语句功能的完整性。并且,在生成秘钥数组的过程中,通过将随机选取的二进制数高位和低位进行清零和移位操作,并在其高位记录所述分组IL指令的分组数量、在其低位记录分组顺序,并将生成的秘钥数组匹配给对应其分组顺序的分组IL指令。确保了所述秘钥数组的准确性,进而提高了对可执行程序中待保护语句的安全性。同时,通过根据本地代码的种类编译调用函数,确保了在连接过程中对所述秘钥数组调用的准确性,进而确保了可执行程序中待保护语句的功能的完整。
进一步地,本发明实施例提供一种可执行程序的保护装置,如图3所示,所述装置包括:分组单元31、混淆单元32、操作单元33、生成单元34与注入单元35,其中
分组单元31,可以用于从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句。
混淆单元32,可以用于混淆所述分组单元31进行过分组操作后的所述分组语句的分组顺序。
操作单元33,可以用于根据特定规则对所述混淆单元32混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组。
生成单元34,可以用于通过对所述操作单元33操作后得到的秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及所述连接语句的代码。
注入单元35,可以用于将所述生成单元34生成的包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。
需要说明的是,本发明实施例提供的一种可执行程序的保护装置所涉及各功能单元的其他相应描述,可以参考图1所示方法的对应描述,在此不再赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
本发明实施例提供的一种可执行程序的保护装置。所述装置包括:分组单元、混淆单元、操作单元、生成单元与注入单元。与现有基于软件的保护方法相比,本发明实施例通过在混淆可执行程序的待保护语句的语句顺序之后,继续对所述可执行程序的待保护语句进行相关的操作:其中,首先通过特定规则,将所述待保护语句进行加密操作并生成与所述混淆后的分组语句对应的秘钥数组,由于所述秘钥数组中记录了对应的所述分组语句的分组顺序,且秘钥数组根据特定规则生成,因此增加了在未知特定规则的前提下对秘钥数组进行分析的难度,进而提高了所述分组语句的抗分析能力;随后通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码,由于所述连接语句的连接逻辑由本地代码的种类决定,通过更换本地代码即可改变当前秘钥数组的连接关系,并且连接语句的生成是通过秘钥数组与本地代码交互运算后动态生成的,因此可以进一步提高所述包含秘钥数组及连接语句的代码的抗分析能力,进而克服了现有技术的保护方法中,仅混淆待保护语句的顺序导致可执行程序的抗分析性较差的问题,进而提高对可执行程序保护效果,进一步提高了安全性。此外,与现有基于硬件的保护方法相比,本发明实施例通过本地代码中的连接语句,连接所述秘钥数组,生成包含所述秘钥数组及所述连接语句的代码,并将将所述代码注入到已提取待保护语句的可执行程序中。由于所述代码仍保存在可执行程序中,无需经过转译编码的过程,避免现有基于硬件保护方法中对待保护语句的转译过程,并且所述代码最后仍注入到可执行程序中,与所述可执行程序存储在一起,无需通过额外硬件空间存储,因此所述代码的数量不受硬件空间限制,可以根据需要进行增减,进而避免了现有技术中因转译后的代码数量受硬件空间限制进而影响可执行程序安全性的问题,进而改善了保护效果,进一步提高了可执行程序的安全性。
进一步地,本发明实施例提供另一种可执行程序的保护装置,如图4 所示,所述装置包括:分组单元41、混淆单元42、操作单元43、生成单元44与注入单元45,其中
分组单元41,可以用于从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句。
混淆单元42,可以用于混淆所述分组单元41进行过分组操作后的所述分组语句的分组顺序。
操作单元43,可以用于根据特定规则对所述混淆单元42混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组。
生成单元44,可以用于通过对所述操作单元43操作后得到的秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码。
注入单元45,可以用于将所述生成单元44生成的包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。
进一步的,所述分组单元41,包括:第一分析模块4101与分组模块4102。
所述第一分析模块4101,可以用于根据所述待保护语句对应的IL指令,分析所述IL指令中不同指令对应的不同功能。
所述分组模块4102,可以用于根据所述分析模块4101分析出的不同指令对应的不同功能,将形成完整功能的IL指令分成一组。
进一步的,所述操作单元43,包括:选择模块4301、清零模块4302、第一记录模块4303、移位模块4304、第二记录模块4305、存储模块4306及匹配模块4307。
选择模块4301,可以用于选择一个二进制数字,所述二进制数字用于记录所述混淆后的分组IL指令的分组数量及分组顺序。
清零模块4302,可以用于根据特定规则将所述选择模块所选择的二进制数字的高位进行清零操作。
第一记录模块4303,可以用于将所述混淆后分组IL指令的分组数量记录到所述清零模块清零后的二进制数字的高位中。
移位模块4304,可以用于根据特定规则将所述选择模块4301所选择的二进制数字进行向左移位操作。
第二记录模块4305,可以用于将所述混淆后分组IL指令的分组顺序记录到所述移位模块4304进行了向左移位后的二进制数字的低位中。
存储模块4306,可以用于将经由所述第一记录模块4303记录分组数量及经由所述第二记录模块4305记录分组顺序的二进制数存储至不同的秘钥数组。
匹配模块4307,可以用于将所述存储模块4306存储不同的秘钥数组匹配给对应所述分组顺序的分组IL指令。
进一步的,所述生成单元44,包括:编译模块4401、调用模块4402、判断模块4403、第二分析模块4404及连接模块4405。
编译模块4401,可以用于根据本地代码的种类,编译调用函数,所述调用函数用于根据不同的秘钥数组调用对应的分组IL指令。
调用模块4402,可以用于根据所述秘钥数组对应的分组IL指令的功能,从所述本地代码中调用连接语句。
判断模块4403,可以用于判断所述本地代码的中连接语句的逻辑算法。
第二分析模块4404,可以用于分析所述全部秘钥数组对应的分组IL指令整体功能。
连接模块4405,可以用于通过所述调用模块4402调用的连接语句和所述编译模块4401编译的调用函数,结合所述第二分析模块4404分析出的全部秘钥数组对应的分组IL指令的整体功能及所述判断模块4403判断出的本地代码的中连接语句的逻辑算法,将所述秘钥数组连接起来,生成包含所述秘钥数组及所述连接语句的代码。
需要说明的是,本发明实施例提供的另一种可执行程序的保护装置所涉及各功能单元的其他相应描述,可以参考图2所示方法的对应描述,在此不再赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
本发明实施例提供的另一种可执行程序的保护装置。所述装置包括:分组单元、混淆单元、操作单元、生成单元与注入单元。与现有基于软件的保护方法相比,本发明实施例通过在混淆可执行程序的待保护语句的语句顺序之后,继续对所述可执行程序的待保护语句进行相关的操作:其中,首先通过特定规则,将所述待保护语句进行加密操作并生成与所述混淆后的分组语句对应的秘钥数组,由于所述秘钥数组中记录了对应的所述分组语句的分组顺序,且秘钥数组根据特定规则生成,因此增加了在未知特定规则的前提下对秘钥数组进行分析的难度,进而提高了所述分组语句的抗分析能力;随后通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及所述连接语句的代码,由于所述连接语句的连接逻辑由本地代码的种类决定,通过更换本地代码即可改变当前秘钥数组的连接关系,并且连接语句的生成是通过秘钥数组与本地代码交互运算后动态生成的,因此可以进一步提高所述包含秘钥数组及连接语句的代码的抗分析能力,进而克服了现有技术的保护方法中,仅混淆待保护语句的顺序导致可执行程序的抗分析性较差的问题,进而提高对可执行程序保护效果,进一步提高了安全性。此外,与现有基于硬件的保护方法相比,本发明实施例通过本地代码中的连接语句,连接所述秘钥数组,生成包含所述秘钥数组及所述连接语句的代码,并将将所述代码注入到已提取待保护语句的可执行程序中。由于所述代码仍保存在可执行程序中,无需经过转译编码的过程,避免现有基于硬件保护方法中对待保护语句的转译过程,并且所述代码最后仍注入到可执行程序中,与所述可执行程序存储在一起,无需通过额外硬件空间存储,因此所述代码的数量不受硬件空间限制,可以根据需要进行增减,进而避免了现有技术中因转译后的代码数量受硬件空间限制进而影响可执行程序安全性的问题,进而改善了保护效果,进一步提高了可执行程序的安全性。此外,通过对分组前的IL指令进行分析,并把能够形成完整功能的IL指令分成一组,确保了分组后的分组IL指令都能实现一个完整的功能,避免了后续的调用及连接过程中出现无法实现功能的问题,确保了整个待保护语句功能的完整性。并且,通过在生成秘钥数组的过程中,通过将随机选取的二进制数高位和低位进行清零和移位操作,并将其高位记录所述分组IL指令的分组数量、低位记录分组顺序,并将生成的秘钥数组匹配给对应其分组顺序的分组IL指令。确保了所述秘钥数组的准确性,进而提高了对可执行程序中待保护语句的安全性。同时,通过根据本地代码的种类编译调用函数,确保了在连接过程中对所述秘钥数组调用的准确性,进而确保了可执行程序中待保护语句的功能的完整。
所述可执行程序的保护装置包括处理器和存储器,上述分组单元、混淆单元、操作单元、生成单元与注入单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来改善可执行程序的保护效果,提高可执行程序的安全性。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;混淆所述分组语句的分组顺序;根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (4)
1.一种可执行程序的保护方法,其特征在于,包括:
从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句,所述可执行程序中待保护语句为所述可执行程序在.NET平台下转化成IL指令集中对应的IL指令,其中,对所述待保护语句进行分组,得到分组语句包括:根据所述待保护语句对应的IL指令,分析所述IL指令中不同指令对应的不同功能,以及根据所述不同指令对应的不同功能,将形成完整功能的IL指令分成一组;
混淆所述分组语句的分组顺序;
根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;
通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;
将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中;
其中,所述根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组包括:选择一个二进制数字,所述二进制数字用于记录所述混淆后的分组IL指令的分组数量及分组顺序;
根据特定规则将所述二进制数字的高位进行清零操作,并将所述混淆后分组IL指令的分组数量记录到所述清零后二进制数字的高位中;
根据特定规则将所述二进制数字进行向左移位操作,并将所述混淆后分组IL指令的分组顺序记录到所述向左移位后二进制数字的低位中;
将记录所述分组数量及所述分组顺序的二进制数存储至不同的秘钥数组;
将所述不同的秘钥数组匹配给对应所述分组顺序的分组IL指令。
2.根据权利要求1所述的方法,其特征在于,所述通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码,包括:
根据本地代码的种类,编译调用函数,所述调用函数用于根据不同的秘钥数组调用对应的分组IL指令;
根据所述秘钥数组对应的分组IL指令的功能,从所述本地代码中调用连接语句;
判断所述本地代码中的 连接语句的逻辑算法,并分析所述全部秘钥数组对应的分组IL指令整体功能;
通过所述调用的连接语句和所述调用函数,结合所述全部秘钥数组对应的分组IL指令的整体功能及所述本地代码中的 连接语句的逻辑算法,将所述秘钥数组连接起来,生成包含所述秘钥数组及所述连接语句的代码。
3.一种可执行程序的保护装置,其特征在于,包括:
分组单元,用于从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句,所述可执行程序中待保护语句为所述可执行程序在.NET平台下转化成IL指令集中对应的IL指令,所述分组单元包括:第一分析模块,用于根据所述待保护语句对应的IL指令,分析所述IL指令中不同指令对应的不同功能,以及分组模块,用于根据所述分析模块分析出的不同指令对应的不同功能,将形成完整功能的IL指令分成一组;
混淆单元,用于混淆所述分组单元进行过分组操作后的所述分组语句的分组顺序;
操作单元,用于根据特定规则对所述混淆单元混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;
生成单元,用于通过对所述操作单元操作后得到的秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;
注入单元,用于将所述生成单元生成的包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中;
其中,所述操作单元,包括:
选择模块,用于选择一个二进制数字,所述二进制数字用于记录所述混淆后的分组IL指令的分组数量及分组顺序;
清零模块,用于根据特定规则将所述选择模块所选择的二进制数字的高位进行清零操作;
第一记录模块,用于将所述混淆后分组IL指令的分组数量记录到所述清零模块清零后的二进制数字的高位中;
移位模块,用于根据特定规则将所述选择模块所选择的二进制数字进行向左移位操作;
第二记录模块,用于将所述混淆后分组IL指令的分组顺序记录到所述移位模块进行了向左移位后的二进制数字的低位中;
存储模块,用于将经由所述第一记录模块记录分组数量及经由所述第二记录模块记录分组顺序的二进制数存储至不同的秘钥数组;
匹配模块,用于将所述存储模块存储不同的秘钥数组匹配给对应所述分组顺序的分组IL指令。
4.根据权利要求3所述的装置,其特征在于,所述生成单元包括:
编译模块,用于根据本地代码的种类,编译调用函数,所述调用函数用于根据不同的秘钥数组调用对应的分组IL指令;
调用模块,用于根据所述秘钥数组对应的分组IL指令的功能,从所述本地代码中调用连接语句;
判断模块,用于判断所述本地代码中的 连接语句的逻辑算法;
第二分析模块,用于分析所述全部秘钥数组对应的分组IL指令整体功能;
连接模块,用于通过所述调用模块调用的连接语句和所述编译模块编译的调用函数,结合所述第二分析模块分析出的全部秘钥数组对应的分组IL指令的整体功能及所述判断模块判断出的本地代码中的 连接语句的逻辑算法,将所述秘钥数组连接起来,生成包含所述秘钥数组及所述连接语句的代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710154053.2A CN106951744B (zh) | 2017-03-15 | 2017-03-15 | 可执行程序的保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710154053.2A CN106951744B (zh) | 2017-03-15 | 2017-03-15 | 可执行程序的保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106951744A CN106951744A (zh) | 2017-07-14 |
CN106951744B true CN106951744B (zh) | 2019-12-13 |
Family
ID=59472134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710154053.2A Active CN106951744B (zh) | 2017-03-15 | 2017-03-15 | 可执行程序的保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106951744B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678961A (zh) * | 2013-11-07 | 2014-03-26 | 北京深思数盾科技有限公司 | 代码动态生成的方法 |
CN104102860A (zh) * | 2014-08-11 | 2014-10-15 | 北京奇虎科技有限公司 | 安卓平台应用程序的保护方法、运行方法、装置及系统 |
CN104573426A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN104573427A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN104834837A (zh) * | 2015-04-03 | 2015-08-12 | 西北大学 | 一种基于语义的二进制代码反混淆方法 |
EP2937803A1 (en) * | 2014-04-23 | 2015-10-28 | Nxp B.V. | Control flow flattening for code obfuscation where the next block calculation needs run-time information |
CN105354009A (zh) * | 2015-10-14 | 2016-02-24 | 北京深思数盾科技有限公司 | 一种用于固件的保护方法 |
CN105468940A (zh) * | 2015-11-30 | 2016-04-06 | 北京深思数盾科技有限公司 | 软件保护方法及装置 |
CN106227573A (zh) * | 2016-07-11 | 2016-12-14 | 北京信息科技大学 | 基于控制流图的函数调用路径提取方法 |
CN106326694A (zh) * | 2016-08-30 | 2017-01-11 | 北京鼎源科技有限公司 | 一种基于C源代码的混淆的Android应用加固方法 |
-
2017
- 2017-03-15 CN CN201710154053.2A patent/CN106951744B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678961A (zh) * | 2013-11-07 | 2014-03-26 | 北京深思数盾科技有限公司 | 代码动态生成的方法 |
EP2937803A1 (en) * | 2014-04-23 | 2015-10-28 | Nxp B.V. | Control flow flattening for code obfuscation where the next block calculation needs run-time information |
CN104102860A (zh) * | 2014-08-11 | 2014-10-15 | 北京奇虎科技有限公司 | 安卓平台应用程序的保护方法、运行方法、装置及系统 |
CN104573426A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN104573427A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN104834837A (zh) * | 2015-04-03 | 2015-08-12 | 西北大学 | 一种基于语义的二进制代码反混淆方法 |
CN105354009A (zh) * | 2015-10-14 | 2016-02-24 | 北京深思数盾科技有限公司 | 一种用于固件的保护方法 |
CN105468940A (zh) * | 2015-11-30 | 2016-04-06 | 北京深思数盾科技有限公司 | 软件保护方法及装置 |
CN106227573A (zh) * | 2016-07-11 | 2016-12-14 | 北京信息科技大学 | 基于控制流图的函数调用路径提取方法 |
CN106326694A (zh) * | 2016-08-30 | 2017-01-11 | 北京鼎源科技有限公司 | 一种基于C源代码的混淆的Android应用加固方法 |
Non-Patent Citations (1)
Title |
---|
基于控制变换的代码混淆技术研究;王蕊;《中国优秀硕士学位论文全文数据库•信息科技辑》;20140815;参见15-17页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106951744A (zh) | 2017-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106096338B (zh) | 一种具有数据流混淆的虚拟化软件保护方法 | |
CN106599628B (zh) | 一种基于模块钩子的Python字节码文件保护方法 | |
US7254586B2 (en) | Secure and opaque type library providing secure data protection of variables | |
CN104025104B (zh) | 具有密钥驱动的混淆的虚拟机设备和方法 | |
CN103413073B (zh) | 一种保护java可执行程序的方法及设备 | |
Cho et al. | Security assessment of code obfuscation based on dynamic monitoring in android things | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
WO2001079969A2 (en) | Tamper resistant software | |
US9721120B2 (en) | Preventing unauthorized calls to a protected function | |
CN101158911A (zh) | .Net程序保护方法及装置 | |
CN107273723B (zh) | 一种基于so文件加壳的Android平台应用软件保护方法 | |
CN107908392A (zh) | 数据采集工具包定制方法、装置、终端和存储介质 | |
US10331896B2 (en) | Method of protecting secret data when used in a cryptographic algorithm | |
CN107871066B (zh) | 基于安卓系统的代码编译方法及装置 | |
CN107122656A (zh) | 一种通过自调试防止外部调试的方法和装置 | |
CN110597496B (zh) | 应用程序的字节码文件获取方法及装置 | |
CN106951744B (zh) | 可执行程序的保护方法及装置 | |
US8434061B2 (en) | System and method for array obfuscation | |
US11138319B2 (en) | Light-weight context tracking and repair for preventing integrity and confidentiality violations | |
Lee et al. | Classification and analysis of security techniques for the user terminal area in the internet banking service | |
CN104272317A (zh) | 在更安全的执行环境中标识并执行多个指令的子集 | |
CN104615935B (zh) | 一种面向Xen虚拟化平台的隐藏方法 | |
CN113282294A (zh) | 基于安卓平台Java字符串混淆的方法和装置 | |
CN113282892A (zh) | 代码混淆方法、装置、计算机设备和存储介质 | |
KR102039380B1 (ko) | 공유 오브젝트의 코드 보호를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법 |
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 | ||
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 |