CN102132289A - 用于代码迷惑的方法及设备 - Google Patents
用于代码迷惑的方法及设备 Download PDFInfo
- Publication number
- CN102132289A CN102132289A CN200980132311.0A CN200980132311A CN102132289A CN 102132289 A CN102132289 A CN 102132289A CN 200980132311 A CN200980132311 A CN 200980132311A CN 102132289 A CN102132289 A CN 102132289A
- Authority
- CN
- China
- Prior art keywords
- fundamental block
- instruction
- function
- computer code
- code
- 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
Links
- 238000000034 method Methods 0.000 title claims description 19
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 208000027534 Emotional disease Diseases 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008485 antagonism Effects 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000000969 carrier Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008569 process Effects 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
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)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
通过利用具有至少一个参数的函数调用来替换(410)第一基本块(360;370)中的跳转指令,来迷惑包括以多个基本块(310-370)组织的计算机代码指令的编译的计算机代码(300),其中,该函数调用在执行时依赖于该参数来确定要执行的下一函数的地址;向编译的计算机代码(300)***(440)向参数分配值的指令,所述值使得由该函数调用所确定的地址与被替换的跳转指令的地址对应。优选地使用来自控制流程图(CFG)的信息,将分配函数***至与第一基本块(360;370)不同的第二基本块(320-350)中的计算机代码中。在不能够从迷惑的代码中生成CFG的同时,这可以确保在没有来自CFG的信息的情况下不能对迷惑后的代码进行反汇编。还提供了一种用于代码迷惑的设备。
Description
技术领域
本发明总地涉及软件,并且具体地涉及迷惑的(obfuscated)软件。
背景技术
本部分旨在向读者介绍可能与在下文描述和/或请求保护的本发明的各个方面有关的技术的各个方面。相信该讨论有助于向读者提供背景信息以促进对本发明各个方面的更好的理解。相应地,应当理解的是要鉴于以上来阅读这些说明,而不是将其承认为现有技术。
在“Obfuscation of Executable Code to Improve Resistance to StaticDisassembly”中,第10届ACM Conference of Computer and CommunicationsSecurity(CCS),第290-299页,2003年10月,Linn与Debray建议使用两个主要技术来扰乱(confuse)反汇编器。第一个技术是***在正常运行时间执行期间不可抵达的地方***的垃圾代码字节。第二种技术使用分支函数(branch function)以更改规则的例程调用。稍微简化一些,分支函数依赖函数的值(诸如关于调用指令的位置的散列(hash)值)来确定目标。在运行时间处,可容易地从堆栈顶部确定该位置。另外,分支函数也通过偏移量更改返回地址,这使得利用垃圾代码来填充介入空间(intervene space)成为可能。
在“Proceedings of the 13th USENIX Security Symposium”(2004年8月9日-13日,美国加利福尼亚州圣地亚哥)中,Kruegel等人提出了一种解决方案以克服Linn与Debray提出的迷惑方案。作者观察到Linn与Debray的分支函数本质上是一种例程,其地址在作为输入参数而在堆栈顶部传递的调用指令之后。于是,分支函数不依赖于动态输入,由于其输出依赖于单一输入参数并且在二进制初始化的数据段中呈现一些静态查找表格,因此可以模拟分支函数。从而可计算偏移量,这使得反汇编器能够跳过垃圾代码并从下一有效指令继续。
本领域技术人员将认识到,需要一种可对抗Kruegel等人提供的反汇编技术的迷惑方法。
在US 2006/0253687中,Jakubowski与Jacob提出了一种代码迷惑方法,除了别的以外,其中使用分支函数以决定跳转到什么指令。与Linn与Debray的差别是,Jakubowski与Jacob的方法使用了采取动态输入的函数,这使得即便静态地对代码进行反汇编不是不可能的,但也是非常困难的。
C.Collberg等人在“Dynamic Path-Based Software Watermarking”的第4部分(ACM Sigplan Notices,ACM Association for Computing Machinery,美国,纽约州,纽约市,XP009084970)中提出了一种类似的解决方案。他们的解决方案采用了嵌套分支函数,其中由于“最内部的”函数使用返回地址的散列法以生成新的返回地址,所以该“最内部的”函数是动态的。
作为现有技术,US 2008/0148061提出了另一类似解决方案,其中,通过调用访问数据表格的入口的完整性函数(integrity function)代替了跳转,并且对入口的值进行散列以确定返回地址。
本发明提供对于Linn与Debray的方法的改进,该改进同时作为其它现有技术方法的替代物。如果可以使用多个方法(有利地,对其进行组合),则代码迷惑变得更加有效,本领域技术人员将认识到存在对这样一种可替换解决方案的需要。
发明内容
在第一方面,本发明针对一种用于迷惑编译的计算机代码的方法,所述编译的计算机代码包括以多个基本块组织的计算机代码指令。利用具有至少一个参数的函数调用来替换第一基本块中的跳转指令,其中该函数调用在执行时依赖于该参数确定要执行的下一函数的地址。向编译的计算机代码***向参数分配值的指令,所述参数的值使得由函数调用所确定的地址与被替换的跳转指令的目的地地址对应。将该分配指令***至与第一基本块不同的并意图在第一基本块之前执行的第二基本块中的计算机代码中。
在第一优选实施例中,跳转函数为无条件跳转函数。
在第二优选实施例中,在之前的包括有条件跳转指令的第三基本块与第一基本块之间的执行路径中选择第二基本块。使用用于编译的计算机代码的控制流程图中的信息来选择第二基本块是有利的。
在第二方面中,本发明针对用于迷惑编译的计算机代码的设备,所述编译的计算机代码包括以多个基本块组织的计算机代码指令。该设备包括:替换单元,适配为以具有至少一个参数的函数调用来替换在第一基本块中的跳转指令,其中该执行的函数调用依赖于该参数来确定要执行的下一函数的地址;***单元,适配为向编译的计算机代码中***向该参数分配值的指令,该值使得由该函数调用所确定的地址与被替换的跳转指令的目的地地址对应;以及发现单元,适配为发现该***单元向其中***分配指令的、与第一基本块不同的并且意图在第一基本块之前执行的第二基本块。
在第一优选实施例中,该替换单元被适配为替换无条件的跳转函数。
在第二优选实施例中,该发现单元被适配为发现之前的包括有条件跳转指令的第三基本块与第一基本块之间的执行路径中的第二基本块。该发现单元适配为使用用于编译的计算机代码的控制流程图中的信息来发现第二基本块是有利的。
在第三优选实施例中,在至少一个处理器中实施该替换单元、***单元、以及发现单元。
附图说明
现在将通过非限制性示例的方式,参照附图来描述本发明的优选特征,其中,
图1图示了现有技术的编译软件的处理;
图2图示了根据现有技术的迷惑后的代码;
图3图示了根据本发明优选实施例的迷惑后的代码;
图4图示了根据本发明优选实施例的代码迷惑的方法;以及
图5图示了根据本发明优选实施例的用于代码迷惑的设备。
在附图中,所表示的块仅仅是功能性的实体,其不一定与物理上单独的实体对应。这些功能性的实体可实施为硬件、软件、或软件与硬件的组合;再者,可在一个或多个集成电路中实施它们。
具体实施方式
图1图示了现有技术编译软件的处理。该例程的一些基本知识将有助于对下文描述的理解。编译经由大量中间步骤将源代码110翻译成机器代码150,在此期间生成了语法树120,控制流程图130以及汇编代码140。
本发明主要构思在于,使用比Linn与Debray所使用的那些更加安全的分支函数调用。如已经讨论的,可以相当容易地模拟他们的分支函数。尽管Jakubowski与Jacob通过使分支函数动态化而使得分支函数安全,但仍然可以计算出分支函数。本解决方案以不同的方式使得分支函数安全,如下文将要详细描述的。
为了易于认识到本发明的解决方案,首先在图2中图示现有技术迷惑方案。遵循控制流程图,程序代码200被划分为大量基本块210-270。基本块可以被认为是一组要被顺序执行的指令;同样地,其利用至另一基本块的跳转函数而结束。例如,基本块210包括三条指令:I1,I2,以及有条件跳转“Ifcond jump”。执行全部三条指令,并且依赖于该有条件跳转,然后以在基本块220中的指令I4或在基本块250中的指令I17而继续该执行。存在通过所图示的代码部分的三种可能的执行路径(该数字指代基本块):
-A:210-220-240-260
-B:210-220-230-260
-C:210-250-270。
基本块260与270的每一个包括跳转函数(Jump@1与Jump@2),以及部分代码指令:i25与i28(由小写字母i:s指示)。尽管可以使用一个或多个完整的指令(entire instruction)(除了部分代码指令之外或者替代部分代码指令),但有利地是使用部分指令,这是因为该部分指令将反汇编器欺骗为将至少部分之后“真正的”指令曲解为函数参数。可根据Linn与Debray的解决方案(即,依赖于堆栈上的地址)或Jakubowski与Jacob的解决方案(即,在其值在运行时间确定并且难以进行逆向工程的复杂的函数)中的任一个来实施这两个跳转函数。
图3图示根据本发明优选实施例的迷惑方案。除了将要在下文中描述的一些更改之外,程序代码300与图2中的程序代码200相同。仍然存在七个基本块310-370,并且基本块310与320分别与基本块210与220相同。
然而,在基本块360与370中,已经利用对以参数a作为输入的函数进行调用来取代图2的跳转函数-Jump@1与Jump@2。在正确的参数的情况下,该函数调用确定在程序流程中要执行的下一个指令的地址;换言之,在正确的参数值的情况下,该函数调用如同所替换的跳转函数那样工作,但是在不正确的参数值的情况下,则不能。优选地,在这一点获得正确的参数值。
本发明突出之处在于使用控制流程图以使得参数a的计算安全。这是通过在与包括函数调用的基本块不同的基本块中***向参数a分配某个值的指令来完成的。
例如,执行路径A’(310-320-340-360)在基本块340中向参数a分配值(a=y),基本块340与包括函数调用的基本块360不同。
类似地,执行路径B’(310-320-330-360)在基本块330(也与基本块360不同)中分配参数值(a=y),而执行路径C’(310-350-370)在与具有函数调用的基本块370不同的基本块350中分配参数值(a=z)。本领域技术人员将注意到,对于位于基本块360中的跳转的执行路径(A’与B’),参数值是相同的(a=y)。这是优选的,但是所述值也可能是不同的。本领域技术人员将认识到,可能已经在对于两个执行路径是公共的但是与执行路径C’不同的基本块320中为这两个执行路径分配了参数值。
本领域技术人员将认识到对于分配参数值以及对于函数调用可能有大量的变型。首先,可能具有多个不同的函数调用,其中每一个具有不同的参数。其次,也可以在对于不止一个执行路径公共的基本块中分配参数值;例如,执行路径A’与B’可在公共基本块320(其不是执行路径C’的一部分)中分配参数值。第三,在函数调用之前,可以不止一次地向参数分配值;例如,第一次分配可将第一个值给予参数,而第二次分配可修改该值,例如通过向其增加一。第四,分配可依赖于多个因素,并可包括诸如散列函数之类的函数。
本领域技术人员还将意识到在没有访问控制流程图的情况下,很难对作为结果的机器代码进行逆向工程,这是因为很难发现在哪里分配参数。应该注意的是,通常不向控制流程图提供包括机器代码的二进制数。同时,也将要认识到难以从机器代码中生成控制流程图,这是因为,由于不在静态代码中出现,而是在执行期间计算出跳转的地址,所以难以获得跳转的地址。
图4图示了根据本发明优选实施例的代码迷惑的方法。在步骤410中以在基本块X(例如,图3中基本块360)中的函数调用来替换跳转。在步骤420中,使用控制流程图(CFG)从块X开始回溯(backtrack)以发现至少部分通向该块的可能的执行路径。如上文描述的,在图3中存在两条从基本块310通向基本块360的执行路径:执行路径A’(310-320-340-360)以及执行路径B’(310-320-330-360)。
在步骤430中,在至少一条(可能为多条或全部)已发现的执行路径中选择基本块Y。基本块Y优选地对于该执行路径是唯一的,但也可能基本块Y由多条执行路径共享。在执行路径中存在多个用于基本块Y的候选项的情况下,优选地使用远离基本块X的一个。继续该示例,用于两个执行路径的基本块Y的候选项为:A’:310-320-340和B’:310-320-330。如果期望基本块Y对于执行路径是唯一的,则这仅给A’留下基本块340而给B’留下基本块330。然而,如已经提及的,可能在对两个执行路径公共的例如基本块320中分配参数,并且也可能在基本块330与340中的任一个或这两者中修改或改变参数值。
在步骤440中,在基本块Y中***参数分配。继续该示例,在两个执行路径A’和B’中分配参数,基本块340中“a=y”,以及基本块330中“a=y”。
图5图示了根据本发明优选实施例用于代码迷惑的设备。设备500包括:至少一个处理器(在此,“处理器”)510;存储器空间520;至少一个用于与其它设备通信的通信单元(I/O)530;以及用于用户交互的用户接口(UI)540。优选地在处理器510中实施,设备500包括:用于以函数调用替换跳转的单元550(大致与步骤410对应);用于发现执行路径的单元560(大致与步骤420对应);用于发现候选基本块的单元570(大致与步骤430对应);以及用于***参数分配的单元(大致与步骤440对应)。
设备500优选地还包括(未示出):用于取得源代码并且生成语法树120、CFG 130、汇编代码140以及机器代码150的单元。
图5还图示了用于存储使用根据本发明优选实施例的方法而迷惑的编译的计算机代码的计算机程序载体590,例如CD-ROM或用于存储计算机代码的任何其它合适的载体。
由此将认识到本发明使得对抗至少静态的反汇编的代码迷惑成为可能。
可以独立地或在任何适当组合中提供本描述中以及(在适当的情况下的)权利要求以及附图中公开的每个特征。被描述为在硬件中实施的特征也可在软件中实施,反之亦然。在可应用的情况下,可以将连接实施为无线连接或有线连接,不一定为直接或专用的连接。
出现在权利要求中的参考标号仅仅是说明性的并且应该对权利要求的范围没有限制影响。
Claims (9)
1.一种用于迷惑编译的计算机代码(300)的方法,所述编译的计算机代码(300)包括以多个基本块(310-370)组织的计算机代码指令,该方法包括如下步骤:
-以具有至少一个参数的函数调用来替换(410)第一基本块(360;370)中的跳转指令,其中所述函数调用在执行时依赖于所述参数来确定要执行的下一函数的地址;
-向所述编译的计算机代码(300)***(440)向所述参数分配值的指令,所述值使得由所述函数调用确定的地址与被替换的跳转指令的目的地地址对应;
其特征在于,将分配指令***至与所述第一基本块(360;370)不同的并意图要在第一基本块之前执行的第二基本块(320-350)中的计算机代码。
2.如权利要求1所述的方法,其中所述跳转函数为无条件跳转函数。
3.如权利要求1所述的方法,进一步包括如下步骤:在之前的包括有条件跳转指令的第三基本块(310-340)与所述第一基本块(360;370)之间的执行路径中选择(430)第二基本块(320-350)。
4.如权利要求3所述的方法,其中,使用用于编译的计算机代码的控制流程图中的信息来选择第二基本块(320-350)。
5.一种用于迷惑编译的计算机代码(300)的设备(500),所述编译的计算机代码(300)包括以多个基本块(310-370)组织的计算机代码指令,该设备(500)包括:
-替换单元(550),适配为以具有至少一个参数的函数调用来替换第一基本块(360;370)中的跳转指令,其中所述函数调用在执行时依赖于所述参数来确定要执行的下一函数的地址;
-***单元(580),适配为向所述编译的计算机代码(300)***向该参数分配值的指令,所述值使得由所述函数调用确定的地址与被替换的跳转指令的目的地地址对应;
所述设备特征在于,其进一步包括:发现单元(570),适配为发现该***单元(580)向其中***分配指令的、与第一基本块(360;370)不同的并且意图要在第一基本块之前执行的第二基本块(320-350)。
6.如权利要求5所述的设备,其中所述替换单元(550)适配为替换无条件跳转函数。
7.如权利要求5所述的设备,其中所述发现单元(570)适配为在之前的包括有条件跳转指令的第三基本块(310-340)与所述第一基本块(360;370)之间的执行路径中发现第二基本块(320-350)。
8.如权利要求7所述的设备,其中所述发现单元(570)适配为使用用于编译的计算机代码的控制流程图中的信息来发现第二基本块(320-350)
9.如权利要求5所述的设备,其中,在至少一个处理器(510)中实施所述替换单元(550),所述***单元(580),以及所述发现单元(570)。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP08305495 | 2008-08-21 | ||
EP08305495.7 | 2008-08-21 | ||
EP08305736A EP2159732A1 (en) | 2008-08-21 | 2008-10-27 | Method and device for code obfuscation |
EP08305736.4 | 2008-10-27 | ||
PCT/EP2009/060596 WO2010020603A1 (en) | 2008-08-21 | 2009-08-17 | Method and device for code obfuscation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102132289A true CN102132289A (zh) | 2011-07-20 |
CN102132289B CN102132289B (zh) | 2014-06-18 |
Family
ID=40636885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980132311.0A Expired - Fee Related CN102132289B (zh) | 2008-08-21 | 2009-08-17 | 用于代码迷惑的方法及设备 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8762966B2 (zh) |
EP (2) | EP2159732A1 (zh) |
JP (1) | JP5421370B2 (zh) |
CN (1) | CN102132289B (zh) |
AT (1) | ATE550729T1 (zh) |
BR (1) | BRPI0916457A2 (zh) |
WO (1) | WO2010020603A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117621A (zh) * | 2014-04-23 | 2015-12-02 | 恩智浦有限公司 | 代码混淆的控制流平展化 |
CN106650340A (zh) * | 2016-11-16 | 2017-05-10 | 中国人民解放军国防科学技术大学 | 一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法 |
CN109032572A (zh) * | 2017-06-08 | 2018-12-18 | 阿里巴巴集团控股有限公司 | 一种基于字节码的java程序方法内联的方法 |
CN110147238A (zh) * | 2019-05-29 | 2019-08-20 | 中国人民解放军战略支援部队信息工程大学 | 一种程序编译方法、装置及*** |
CN110378083A (zh) * | 2019-06-12 | 2019-10-25 | 北京奇艺世纪科技有限公司 | 一种布尔值的混淆方法和装置及计算机可读存储介质 |
CN111339503A (zh) * | 2020-02-25 | 2020-06-26 | Oppo广东移动通信有限公司 | 控制流混淆方法及相关产品 |
CN112905242A (zh) * | 2021-03-23 | 2021-06-04 | 浙江大华技术股份有限公司 | 分支路径跳转方法、装置、存储介质及电子装置 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0907413D0 (en) | 2009-04-29 | 2009-06-10 | Equateq Ltd | Novel methods |
EP2290547B1 (en) * | 2009-08-26 | 2012-12-19 | Nxp B.V. | Method of obfuscating a code |
US8751823B2 (en) | 2011-08-01 | 2014-06-10 | Apple Inc. | System and method for branch function based obfuscation |
US20120264705A1 (en) * | 2012-01-26 | 2012-10-18 | Dignity Sciences Limited | Antimicrobial compositions comprising 15-hetre and methods of use thereof |
US8756435B2 (en) | 2012-03-02 | 2014-06-17 | Apple Inc. | Obfuscation of control flow of software |
US9471776B2 (en) * | 2012-03-30 | 2016-10-18 | Irdeto B.V. | Secured execution of a web application |
US9116712B2 (en) * | 2013-02-28 | 2015-08-25 | Microsoft Technology Licensing, Llc | Compile based obfuscation |
EP3012764A1 (en) * | 2014-10-24 | 2016-04-27 | Thomson Licensing | Control flow graph flattening device and method |
EP3057021A1 (en) * | 2015-02-16 | 2016-08-17 | Thomson Licensing | Control flow graph flattening device and method obfuscating branches via interprocedural data |
US10068070B2 (en) * | 2015-05-05 | 2018-09-04 | Nxp B.V. | White-box elliptic curve point multiplication |
US20160328539A1 (en) * | 2015-05-05 | 2016-11-10 | Nxp B.V. | Obscuring Software Code With Split Variables |
CN105630491A (zh) * | 2015-12-18 | 2016-06-01 | Tcl集团股份有限公司 | 程序的功能变更方法及装置 |
CN108334756B (zh) * | 2017-01-20 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | 一种对递归下降式分析器反编译的干扰方法及装置 |
CN108446535B (zh) * | 2018-02-12 | 2021-11-12 | 北京梆梆安全科技有限公司 | 基于代码执行顺序的源代码加固方法及装置 |
CN111428209B (zh) * | 2019-01-10 | 2023-09-19 | 腾讯科技(深圳)有限公司 | 一种应用程序的混淆方法、装置及存储介质 |
CN110457046B (zh) * | 2019-08-22 | 2023-05-12 | 广州小鹏汽车科技有限公司 | 混合指令集程序的反汇编方法、装置、存储介质及终端 |
CN111475168B (zh) * | 2020-04-14 | 2023-05-05 | 中国人民解放军战略支援部队信息工程大学 | 一种代码编译方法及装置 |
CN111638884B (zh) * | 2020-05-19 | 2021-07-23 | 贝壳找房(北京)科技有限公司 | 一种插件化工程编译的方法、***、装置和存储介质 |
CN113254068B (zh) * | 2021-07-14 | 2021-10-22 | 苏州浪潮智能科技有限公司 | 一种控制流平坦化自动检测方法、装置 |
CN114357389B (zh) * | 2021-12-31 | 2024-04-16 | 北京大学 | 一种基于llvm的指令加花混淆方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4234825B2 (ja) * | 1998-10-02 | 2009-03-04 | 株式会社ハイパーテック | 情報処理装置 |
JP2003337629A (ja) * | 2002-05-18 | 2003-11-28 | Mitsuko Miyaji | プログラム難読化方法及び装置 |
CN1230744C (zh) | 2002-08-16 | 2005-12-07 | 华为技术有限公司 | 一种嵌入式***软件补丁的实现和控制方法 |
US7584364B2 (en) | 2005-05-09 | 2009-09-01 | Microsoft Corporation | Overlapped code obfuscation |
JP2007304726A (ja) * | 2006-05-09 | 2007-11-22 | Fuji Xerox Co Ltd | プログラム難読化装置、難読化方法及び難読化プログラム |
US20080148061A1 (en) * | 2006-12-19 | 2008-06-19 | Hongxia Jin | Method for effective tamper resistance |
-
2008
- 2008-10-27 EP EP08305736A patent/EP2159732A1/en not_active Withdrawn
-
2009
- 2009-08-17 WO PCT/EP2009/060596 patent/WO2010020603A1/en active Application Filing
- 2009-08-17 BR BRPI0916457A patent/BRPI0916457A2/pt not_active IP Right Cessation
- 2009-08-17 AT AT09807930T patent/ATE550729T1/de active
- 2009-08-17 JP JP2011523406A patent/JP5421370B2/ja not_active Expired - Fee Related
- 2009-08-17 US US12/737,730 patent/US8762966B2/en not_active Expired - Fee Related
- 2009-08-17 CN CN200980132311.0A patent/CN102132289B/zh not_active Expired - Fee Related
- 2009-08-17 EP EP09807930A patent/EP2332090B1/en not_active Not-in-force
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117621A (zh) * | 2014-04-23 | 2015-12-02 | 恩智浦有限公司 | 代码混淆的控制流平展化 |
US10599820B2 (en) | 2014-04-23 | 2020-03-24 | Nxp B.V. | Control flow flattening for code obfuscation where the next block calculation needs run-time information |
CN106650340A (zh) * | 2016-11-16 | 2017-05-10 | 中国人民解放军国防科学技术大学 | 一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法 |
CN106650340B (zh) * | 2016-11-16 | 2019-12-06 | 中国人民解放军国防科学技术大学 | 一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法 |
CN109032572A (zh) * | 2017-06-08 | 2018-12-18 | 阿里巴巴集团控股有限公司 | 一种基于字节码的java程序方法内联的方法 |
CN110147238A (zh) * | 2019-05-29 | 2019-08-20 | 中国人民解放军战略支援部队信息工程大学 | 一种程序编译方法、装置及*** |
CN110147238B (zh) * | 2019-05-29 | 2022-11-11 | 中国人民解放军战略支援部队信息工程大学 | 一种程序编译方法、装置及*** |
CN110378083A (zh) * | 2019-06-12 | 2019-10-25 | 北京奇艺世纪科技有限公司 | 一种布尔值的混淆方法和装置及计算机可读存储介质 |
CN110378083B (zh) * | 2019-06-12 | 2021-03-12 | 北京奇艺世纪科技有限公司 | 一种布尔值的混淆方法和装置及计算机可读存储介质 |
CN111339503A (zh) * | 2020-02-25 | 2020-06-26 | Oppo广东移动通信有限公司 | 控制流混淆方法及相关产品 |
CN112905242A (zh) * | 2021-03-23 | 2021-06-04 | 浙江大华技术股份有限公司 | 分支路径跳转方法、装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
JP5421370B2 (ja) | 2014-02-19 |
US8762966B2 (en) | 2014-06-24 |
CN102132289B (zh) | 2014-06-18 |
EP2159732A1 (en) | 2010-03-03 |
EP2332090A1 (en) | 2011-06-15 |
BRPI0916457A2 (pt) | 2016-02-16 |
US20110138351A1 (en) | 2011-06-09 |
JP2012512443A (ja) | 2012-05-31 |
WO2010020603A1 (en) | 2010-02-25 |
ATE550729T1 (de) | 2012-04-15 |
EP2332090B1 (en) | 2012-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102132289B (zh) | 用于代码迷惑的方法及设备 | |
CN111008201B (zh) | 并行修改和读取状态树的方法和装置 | |
CN107092518A (zh) | 一种保护拟态防御***软件层安全的编译方法 | |
CN108121565B (zh) | 生成指令集编码的方法、装置和*** | |
CN111563237B (zh) | 一种智能合约安全增强方法 | |
CN105468965A (zh) | 一种动态堆栈内存管理方法 | |
CN104462990A (zh) | 字符串加解密方法和装置 | |
CN112839036B (zh) | 基于拟态防御理论的软件运行环境生成方法及*** | |
CN111596920B (zh) | 文件编译方法、装置、编译设备及存储介质 | |
CN111831316A (zh) | 一种软件开发包更新方法及装置 | |
CN112114933A (zh) | 应用程序保护方法、电子设备和存储介质 | |
CN107632832A (zh) | 一种面向dalvik字节码控制流混淆方法 | |
CN108932407B (zh) | 一种程序安全保护方法及装置 | |
CN111324591B (zh) | 区块链分叉的检测方法及相关装置 | |
CN105224305B (zh) | 函数调用路径编解码方法、装置及*** | |
CN103677746B (zh) | 指令重组方法及装置 | |
CN113127005B (zh) | 一种可执行文件生成的方法、装置以及计算机存储介质 | |
CN110515652B (zh) | 代码摘要的生成方法、装置和存储介质 | |
CN114637988A (zh) | 一种面向二进制的函数级软件随机化方法 | |
EP2913774A1 (en) | Run-time continuous address space layout randomization of flattened control flow graph | |
CN113050948A (zh) | 动态库优化方法、装置、设备及存储介质 | |
CN105242978A (zh) | 多线程条件下cpu高速缓存行失效的处理方法及装置 | |
CN108573142B (zh) | 一种实现hook的方法及装置 | |
CN105607912B (zh) | 一种Java对象分配优化方法、装置及设备 | |
CN112541188B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140618 Termination date: 20190817 |
|
CF01 | Termination of patent right due to non-payment of annual fee |