CN105005718A - 一种利用马尔可夫链实现代码混淆的方法 - Google Patents
一种利用马尔可夫链实现代码混淆的方法 Download PDFInfo
- Publication number
- CN105005718A CN105005718A CN201510347412.7A CN201510347412A CN105005718A CN 105005718 A CN105005718 A CN 105005718A CN 201510347412 A CN201510347412 A CN 201510347412A CN 105005718 A CN105005718 A CN 105005718A
- Authority
- CN
- China
- Prior art keywords
- character string
- markov chain
- code
- function
- program
- 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 abstract description 48
- 230000006870 function Effects 0.000 claims abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 26
- 238000005336 cracking Methods 0.000 claims description 7
- 230000007704 transition Effects 0.000 claims description 6
- 230000000694 effects Effects 0.000 claims description 3
- 238000011946 reduction process Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 abstract description 2
- 238000012546 transfer Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 101000911390 Homo sapiens Coagulation factor VIII Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 102000057593 human F8 Human genes 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 229940047431 recombinate Drugs 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000005309 stochastic process Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
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
技术领域
本发明属于计算机安全领域,具体涉及一种利用马尔可夫链实现代码混淆的方法。
背景技术
近年来,随着信息技术的进步,市面上产生了大量优秀的软件、APP,它们提供了许许多多方便的功能。但由于平台和语言的特性,这些软件可以很容易的被逆向工程破解,获取具有很强可读性的源代码(尤其是安卓平台和JAVA语言)。一旦被破解,不仅会直接被侵犯作者的知识产权,也会有被破解后加入恶意代码的风险,使一般用户的安全隐私受到威胁。这是一个非常严重的安全问题。
一般而言,利用逆向工程恢复二进制文件的高层次语义包括两个步骤:其一,得到反汇编文件,其二,利用反编译器得到相应的高级语言表达形式。为了降低被逆向工程破解的风险,代码混淆作为一种重要、较为有效的手段,应受到足够的重视和研究。代码混淆技术是一种软件保护技术。混淆是指对已发布软件的二进制代码进行分析和重新组织,使得处理后的代码在逻辑功能上和处理前的代码相同,但是在表现形式上会产生很大的变化,这种变化使得软件的代码即使被逆向分析人员反编译,也将难以阅读,从而有效地保护了软件在短时间内被破解,降低了软件被盗版和篡改的可能性。
目前代码混淆技术主要有两种类型,一种是源代码混淆,一种是二进制代码混淆。其中,源代码混淆有如下几种:直接源代码混淆,预处理混淆,抽象语法树,字节码混淆(JAVA)。
其中,源代码混淆是直接将源代码文本进行混淆,将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途;重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归,精简中间变量;打乱代码的格式。比如删除空格,将多行代码挤到一行中,或者将一行代码断成多行等等。这样的混淆方式难于理解,调试也变得非常困难。
二进制代码混淆技术通过对程序的代码进行重组和变形等手段对程序的二进制代码进行保护,防止软件的破解和篡改。常见的技术有代码乱序,代码替换,函数映射,插入不透明谓词和平展控制流等。
专利申请“一种基于代码变形的二进制代码混淆方法”(申请号:CN201410018508)提供一种二进制代码混淆方法,该方法对关键代码段进行反汇编得到汇编指令序列,并识别该段代码中的循环结构,计算关键代码段中各条指令的权重,然后对汇编指令序列中所有汇编指令的变形,对汇编指令序列切片和乱序,然后将生成的新的汇编指令序列进行汇编,转换成二进制代码,最后将PE文件重构。该方法利用计算机系统,对windows系统下的可执行二进制代码文件进行混淆。
专利申请“通过汇编实现代码混淆的编译方法和系统”(申请号:CN201310258325)提供一种代码混淆的编译方法和系统,解决了安卓ARM平台下无法隐藏系统调用,通过反汇编核心技术容易被竞争队首破解的问题,从而增加软件被破解的难度。其技术方案为:方法包括:编写核心函数;反汇编核心函数;创建可执行内存映射区;往内存映射区复制核心函数的汇编代码;执行内存映射区的汇编代码,生成混淆后的核心函数
发明内容
本发明涉及的相关术语解释如下:
马尔可夫链:马尔可夫链又称离散时间马尔可夫链,为状态空间中经过从一个状态到另一个状态的转换的随机过程,对于马尔可夫链的每一个状态,根据状态跳转的概率分布,系统从一个状态变到另一个状态,也可以保持当前状态;
伪随机数生成算法:真正的随机数在某过程中是按分布概率随机产生的,其结果是不可预测的,而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,可以认为这个可预见的结果其出现的概率是100%,所以用随机数生成算法所产生的“随机数”并不随机,是伪随机数;
对称加密:加密算法使用的加密和解密密钥是相同的。
本发明具体采用如下技术方案:
一种利用马尔可夫链实现代码混淆的方法,其流程如图1所示,具体包括以下步骤:
步骤1.混淆常量字符串,其流程如图2所示;对于程序源代码中欲进行混淆操作的常量字符串A,进行如下步骤的操作:
步骤1-1:从预设的多种加密方式中随机选取一种作为对常量字符串A的加密方式;其中,预设的加密方式需满足对称加密;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
步骤1-2:使用基于时间的伪随机数算法生成随机数K,数值K作为在步骤1-1中选取的加密方式中使用的密钥,参与对常量字符串A的加密;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
步骤1-3:创建字符串缓冲区Buffer,将常量字符串A存放到缓冲区Buffer中;
步骤1-4:根据步骤1-1选取的加密方式和步骤1-2生成的随机密钥K,对步骤1-3中创建的字符串缓冲区Buffer中的常量字符串A进行加密,并将加密后的结果存放到缓冲区Buffer中;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
完成上述步骤后,对常量字符串A的混淆操作结束;当遭遇逆向破解时,内存中将不会显示出原本应为明文的常量字符串A,而是加密后的乱码,保护了原始信息;
步骤1-5:当在程序运行时,需要将混淆后的字符串还原为原始字符串,即将字符串缓冲区Buffer中加密后的内容还原为原始字符串,还原过程中采用与步骤1-1所述加密方式对应的解密方式,并使用步骤2中的密钥K进行还原;此步骤应发生在程序运行过程中。
步骤2.利用马尔可夫链进行调用混淆,其流程如图3所示;对于程序源代码中欲进行混淆操作的函数F,进行如下步骤的操作:
步骤2-1:若函数F的参数中包含了常量字符串,则对所述常量字符串按步骤1所述方法进行混淆;
步骤2-2:预先设定多个马尔可夫链,每个马尔可夫链包含多个不同的状态,每个状态指向不同的执行指令,单个马尔可夫链的多个状态之间的转移概率已预先设定,需要说明的是,预设的马尔可夫链均已实例化,即将抽象的马尔可夫链的状态转移以程序代码的形式实现为程序代码段之间的跳转;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
步骤2-3:随机选取一个预设的马尔可夫链代码,当程序源代码中的函数F被调用时,在函数F之前插入所选取的实例化的马尔可夫链的代码;此步骤应发生在程序编译过程中;
完成上述步骤后,即完成对函数F的混淆操作;在实际调用函数F时,在运行内存中会在执行函数F之前先运行一段由所选择的马尔可夫链代码指定的执行指令;由于马尔可夫链的每一次运行,其状态路径生成的执行指令均不相同,故,若遭遇逆向破解,则马尔可夫链生成的置于函数F之前的一段无关代码可起到混淆函数F的作用。
本发明的有益效果是:
本发明在程序源代码的编译阶段,对代码中的常量字符串进行加密,使之在反汇编中不可识别,有效减缓逆向工程的速度;同时,本发明利用马尔可夫链算法,在函数调用过程中通过前插马尔可夫链代码生成无关执行指令,即通过若干状态转以后再调用被保护的函数,实现在运行内存中的函数混淆,从而实现对软件或特殊代码片段的保护。
附图说明
图1是本发明实现代码混淆的总体流程图;
图2是本发明混淆常量字符串的工作流程图;
图3是本发明混淆函数调用的工作流程图;
图4是具体实施方式混淆函数调用时构建的一个马尔可夫链实例示意图。
具体实施方式
本具体实施方式提供一种利用马尔可夫链实现代码混淆的方法,具体包括以下步骤:
步骤1.混淆常量字符串;对于程序源代码中欲进行混淆操作的常量字符串A,进行如下步骤的操作:
步骤1-1:从预设的多种加密方式中随机选取一种作为对常量字符串A的加密方式;其中,预设的加密方式需满足对称加密,即在程序运行时,可将混淆后的字符串还原为原始字符串,如异或加密方式;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
步骤1-2:使用基于时间的伪随机数算法生成随机数K,数值K作为在步骤1-1中选取的加密方式中使用的密钥,参与对常量字符串A的加密;所述伪随机数生成算法应满足足够的精度,即保证在指定的较短时间段内获取两次数值不同的随机数;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
步骤1-3:创建字符串缓冲区Buffer,将常量字符串A存放到缓冲区Buffer中;进一步的,所述缓冲区Buffer可以根据常量字符串A的长度动态地创建,以节省程序占用空间;此步骤应发生在程序编译过程中,即不影响程序的运行效率。
步骤1-4:根据步骤1-1选取的加密方式和步骤1-2生成的随机密钥K,对步骤1-3中创建的字符串缓冲区Buffer中的常量字符串A进行加密,并将加密后的结果存放到缓冲区Buffer中;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
完成上述步骤后,对常量字符串A的混淆操作结束;当遭遇逆向破解时,内存中将不会显示出原本应为明文的常量字符串A,而是加密后的乱码,保护了原始信息;
步骤1-5:当在程序运行时,需要将混淆后的字符串还原为原始字符串,即将字符串缓冲区Buffer中加密后的内容还原为原始字符串,还原过程中采用与步骤1-1所述加密方式对应的解密方式,并使用步骤2中的密钥K进行还原;此步骤应发生在程序运行过程中;
步骤2.利用马尔可夫链进行调用混淆;对于程序源代码中欲进行混淆操作的函数F,进行如下步骤的操作:
步骤2-1:若函数F的参数中包含了常量字符串,则对所述常量字符串按步骤1所述方法进行混淆;
步骤2-2:预先设定多个马尔可夫链,每个马尔可夫链包含多个不同的状态,每个状态指向不同的执行指令,单个马尔可夫链的多个状态之间的转移概率已预先设定,以图4的马尔可夫链结构示意图为例,该马尔可夫链包括5个状态State1、State2、State3、State4、State5,每个状态指向不同的执行指令,状态之间的转移路径的转移概率均已预设,该马尔可夫链由状态State1开始至状态State5结束,在每一次执行过程中,由于转移概率的存在使得中间的转移路径产生多种可能,即该马尔可夫链的每一次运行,其状态路径生成的执行指令集合有多种可能;
需要说明的是,预设的马尔可夫链均已实例化,即将抽象的马尔可夫链的状态转移以程序代码的形式实现为程序代码段之间的跳转;进一步的,所述马尔可夫链代码在运行过程中,其状态之间的实际转移概率可利用伪随机数生成算法产生;
此步骤应发生在程序编译过程中,即不影响程序的运行效率。
步骤2-3:随机选取一个预设的马尔可夫链代码,当程序源代码中的函数F被调用时,在函数F之前插入所选取的实例化的马尔可夫链的代码;此步骤应发生在程序编译过程中;
完成上述步骤后,即完成对函数F的混淆操作;在实际调用函数F时,在运行内存中会在执行函数F之前先运行一段由所选择的马尔可夫链代码指定的执行指令;由于马尔可夫链的每一次运行,其状态路径生成的执行指令均不相同,故,若遭遇逆向破解,则马尔可夫链生成的置于函数F之前的一段无关代码可起到混淆函数F的作用。
Claims (3)
1.一种利用马尔可夫链实现代码混淆的方法,具体包括以下步骤:
步骤1.混淆常量字符串;对于程序源代码中欲进行混淆操作的常量字符串A,进行如下步骤的操作:
步骤1-1:从预设的多种加密方式中随机选取一种作为对常量字符串A的加密方式;其中,预设的加密方式需满足对称加密;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
步骤1-2:使用基于时间的伪随机数算法生成随机数K,数值K作为在步骤1-1中选取的加密方式中使用的密钥,参与对常量字符串A的加密;此步骤应发生在程序编译过程中,即不影响程序的运行效率;
步骤1-3:创建字符串缓冲区Buffer,将常量字符串A存放到缓冲区Buffer中;
步骤1-4:根据步骤1-1选取的加密方式和步骤1-2生成的随机密钥K,对步骤1-3中创建的字符串缓冲区Buffer中的常量字符串A进行加密,并将加密后的结果存放到缓冲区Buffer中;此步骤应发生在程序编译过程中;
完成上述步骤后,对常量字符串A的混淆操作结束;当遭遇逆向破解时,内存中将不会显示出原本应为明文的常量字符串A,而是加密后的乱码,保护了原始信息;
步骤1-5:当在程序运行时,需要将混淆后的字符串还原为原始字符串,即将字符串缓冲区Buffer中加密后的内容还原为原始字符串,还原过程中采用与步骤1-1所述加密方式对应的解密方式,并使用步骤2中的密钥K进行还原;此步骤应发生在程序运行过程中。
步骤2.利用马尔可夫链进行调用混淆;对于程序源代码中欲进行混淆操作的函数F,进行如下步骤的操作:
步骤2-1:若函数F的参数中包含了常量字符串,则对所述常量字符串按步骤1所述方法进行混淆;
步骤2-2:预先设定多个马尔可夫链,每个马尔可夫链包含多个不同的状态,每个状态指向不同的执行指令,单个马尔可夫链的多个状态之间的转移概率已预先设定;此步骤应发生在程序编译过程中;
步骤2-3:随机选取一个预设的马尔可夫链代码,当程序源代码中的函数F被调用时,在函数F之前插入所选取的实例化的马尔可夫链的代码;此步骤应发生在程序编译过程中;
完成上述步骤后,即完成对函数F的混淆操作;在实际调用函数F时,在运行内存中会在执行函数F之前先运行一段由所选择的马尔可夫链代码指定的执行指令;由于马尔可夫链的每一次运行,其状态路径生成的执行指令均不相同,故,若遭遇逆向破解,则马尔可夫链生成的置于函数F之前的一段无关代码可起到混淆函数F的作用。
2.根据权利要求1所述的利用马尔可夫链实现代码混淆的方法,其特征在于,步骤1-1所选取的加密方式为异或加密方式。
3.根据权利要求1所述的利用马尔可夫链实现代码混淆的方法,其特征在于,所述缓冲区Buffer可以根据常量字符串A的长度动态地创建,以节省程序占用空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510347412.7A CN105005718B (zh) | 2015-06-23 | 2015-06-23 | 一种利用马尔可夫链实现代码混淆的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510347412.7A CN105005718B (zh) | 2015-06-23 | 2015-06-23 | 一种利用马尔可夫链实现代码混淆的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105005718A true CN105005718A (zh) | 2015-10-28 |
CN105005718B CN105005718B (zh) | 2018-02-13 |
Family
ID=54378388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510347412.7A Expired - Fee Related CN105005718B (zh) | 2015-06-23 | 2015-06-23 | 一种利用马尔可夫链实现代码混淆的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105005718B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681039A (zh) * | 2016-04-15 | 2016-06-15 | 上海上讯信息技术股份有限公司 | 用于生成密钥及对应解密的方法和设备 |
CN105718765A (zh) * | 2016-01-26 | 2016-06-29 | 国家信息技术安全研究中心 | 一种利用有限自动机实现代码混淆的方法 |
CN106778101A (zh) * | 2016-12-08 | 2017-05-31 | 合肥康捷信息科技有限公司 | 一种基于控制流和外形混淆的Python代码混淆方法 |
CN106960156A (zh) * | 2016-01-08 | 2017-07-18 | 广州市动景计算机科技有限公司 | 基于应用程序的数据加密及访问方法、装置 |
CN107908933A (zh) * | 2017-11-08 | 2018-04-13 | 北京顶象技术有限公司 | 一种基于中间语言的字符串加密方法 |
CN108197440A (zh) * | 2017-11-28 | 2018-06-22 | 五八有限公司 | 一种代码混淆方法、设备及计算机可读存储介质 |
CN108334756A (zh) * | 2017-01-20 | 2018-07-27 | 武汉斗鱼网络科技有限公司 | 一种对递归下降式分析器反编译的干扰方法及装置 |
CN108415709A (zh) * | 2018-02-12 | 2018-08-17 | 北京梆梆安全科技有限公司 | 一种基于有限状态机加固源代码的方法及装置 |
CN108416191A (zh) * | 2018-02-12 | 2018-08-17 | 北京梆梆安全科技有限公司 | 基于不透明谓词和有限状态机加固源代码的方法及装置 |
CN108470083A (zh) * | 2018-02-02 | 2018-08-31 | 宁波大学 | 一种基于Kruskal算法的混淆有限状态机构建方法 |
CN108733990A (zh) * | 2018-05-22 | 2018-11-02 | 深圳壹账通智能科技有限公司 | 一种基于区块链的文件保护方法及终端设备 |
CN109409033A (zh) * | 2018-09-11 | 2019-03-01 | 平安科技(深圳)有限公司 | 代码加密方法、装置、计算机装置及存储介质 |
CN109739582A (zh) * | 2018-12-12 | 2019-05-10 | 北京字节跳动网络技术有限公司 | 函数调用方法、装置、电子设备和计算机可读存储介质 |
CN110058861A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 源码处理方法及装置、存储介质、电子设备 |
CN110196718A (zh) * | 2018-05-10 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 脚本混淆方法 |
CN110348228A (zh) * | 2019-05-22 | 2019-10-18 | 嘉兴天盾安全技术服务有限公司 | 一种保密数据储存方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159629A1 (en) * | 2010-12-16 | 2012-06-21 | National Taiwan University Of Science And Technology | Method and system for detecting malicious script |
CN103902858A (zh) * | 2013-12-25 | 2014-07-02 | 武汉安天信息技术有限责任公司 | 一种apk应用加固的方法及系统 |
CN104091100A (zh) * | 2014-07-15 | 2014-10-08 | 电子科技大学 | 一种基于编译中间结果的软件保护方法 |
-
2015
- 2015-06-23 CN CN201510347412.7A patent/CN105005718B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159629A1 (en) * | 2010-12-16 | 2012-06-21 | National Taiwan University Of Science And Technology | Method and system for detecting malicious script |
CN103902858A (zh) * | 2013-12-25 | 2014-07-02 | 武汉安天信息技术有限责任公司 | 一种apk应用加固的方法及系统 |
CN104091100A (zh) * | 2014-07-15 | 2014-10-08 | 电子科技大学 | 一种基于编译中间结果的软件保护方法 |
Non-Patent Citations (1)
Title |
---|
邵孟良等: "一种多态内联代码混淆算法", 《计算机应用研究》 * |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106960156A (zh) * | 2016-01-08 | 2017-07-18 | 广州市动景计算机科技有限公司 | 基于应用程序的数据加密及访问方法、装置 |
CN105718765A (zh) * | 2016-01-26 | 2016-06-29 | 国家信息技术安全研究中心 | 一种利用有限自动机实现代码混淆的方法 |
CN105681039A (zh) * | 2016-04-15 | 2016-06-15 | 上海上讯信息技术股份有限公司 | 用于生成密钥及对应解密的方法和设备 |
CN106778101B (zh) * | 2016-12-08 | 2019-05-14 | 合肥康捷信息科技有限公司 | 一种基于控制流和外形混淆的Python代码混淆方法 |
CN106778101A (zh) * | 2016-12-08 | 2017-05-31 | 合肥康捷信息科技有限公司 | 一种基于控制流和外形混淆的Python代码混淆方法 |
CN108334756B (zh) * | 2017-01-20 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | 一种对递归下降式分析器反编译的干扰方法及装置 |
CN108334756A (zh) * | 2017-01-20 | 2018-07-27 | 武汉斗鱼网络科技有限公司 | 一种对递归下降式分析器反编译的干扰方法及装置 |
CN107908933B (zh) * | 2017-11-08 | 2020-08-28 | 北京顶象技术有限公司 | 一种基于中间语言的字符串加密方法 |
CN107908933A (zh) * | 2017-11-08 | 2018-04-13 | 北京顶象技术有限公司 | 一种基于中间语言的字符串加密方法 |
CN108197440A (zh) * | 2017-11-28 | 2018-06-22 | 五八有限公司 | 一种代码混淆方法、设备及计算机可读存储介质 |
CN108470083A (zh) * | 2018-02-02 | 2018-08-31 | 宁波大学 | 一种基于Kruskal算法的混淆有限状态机构建方法 |
CN108416191B (zh) * | 2018-02-12 | 2021-11-19 | 北京梆梆安全科技有限公司 | 基于不透明谓词和有限状态机加固源代码的方法及装置 |
CN108416191A (zh) * | 2018-02-12 | 2018-08-17 | 北京梆梆安全科技有限公司 | 基于不透明谓词和有限状态机加固源代码的方法及装置 |
CN108415709A (zh) * | 2018-02-12 | 2018-08-17 | 北京梆梆安全科技有限公司 | 一种基于有限状态机加固源代码的方法及装置 |
CN108415709B (zh) * | 2018-02-12 | 2022-01-28 | 北京梆梆安全科技有限公司 | 一种基于有限状态机加固源代码的方法及装置 |
CN110196718B (zh) * | 2018-05-10 | 2023-07-25 | 腾讯科技(深圳)有限公司 | 脚本混淆方法 |
CN110196718A (zh) * | 2018-05-10 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 脚本混淆方法 |
CN108733990A (zh) * | 2018-05-22 | 2018-11-02 | 深圳壹账通智能科技有限公司 | 一种基于区块链的文件保护方法及终端设备 |
CN109409033A (zh) * | 2018-09-11 | 2019-03-01 | 平安科技(深圳)有限公司 | 代码加密方法、装置、计算机装置及存储介质 |
CN109739582A (zh) * | 2018-12-12 | 2019-05-10 | 北京字节跳动网络技术有限公司 | 函数调用方法、装置、电子设备和计算机可读存储介质 |
CN109739582B (zh) * | 2018-12-12 | 2022-05-17 | 北京字节跳动网络技术有限公司 | 函数调用方法、装置、电子设备和计算机可读存储介质 |
CN110058861B (zh) * | 2019-04-19 | 2020-11-10 | 同盾控股有限公司 | 源码处理方法及装置、存储介质、电子设备 |
CN110058861A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 源码处理方法及装置、存储介质、电子设备 |
CN110348228A (zh) * | 2019-05-22 | 2019-10-18 | 嘉兴天盾安全技术服务有限公司 | 一种保密数据储存方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105005718B (zh) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105005718B (zh) | 一种利用马尔可夫链实现代码混淆的方法 | |
CN103544414B (zh) | 一种Android系统应用的深度代码混淆方法 | |
US8589897B2 (en) | System and method for branch extraction obfuscation | |
CN106599628B (zh) | 一种基于模块钩子的Python字节码文件保护方法 | |
CN106778101B (zh) | 一种基于控制流和外形混淆的Python代码混淆方法 | |
US8185749B2 (en) | System and method for revising boolean and arithmetic operations | |
CN106126981B (zh) | 基于虚拟函数表替换的软件安全防护方法 | |
CN103413075B (zh) | 一种通过虚拟机保护java可执行程序的方法及设备 | |
CN103778355B (zh) | 一种基于代码变形的二进制代码混淆方法 | |
CN105718765A (zh) | 一种利用有限自动机实现代码混淆的方法 | |
CN107908933A (zh) | 一种基于中间语言的字符串加密方法 | |
CN108363911B (zh) | 一种Python脚本混淆、水印的方法及装置 | |
US8429637B2 (en) | System and method for conditional expansion obfuscation | |
CN106682460B (zh) | 一种基于两次变换的代码混淆方法 | |
CN101807239A (zh) | 一种防止源代码反编译的方法 | |
CN101908119A (zh) | 一种动态链接库dll文件的处理方法和装置 | |
CN106778100B (zh) | 基于安卓平台和ios平台的混淆编译方法及混淆编译器 | |
CN104951674B (zh) | 用于应用程序的信息隐藏方法 | |
CN104268444A (zh) | 一种云OS Java源代码保护方法 | |
CN103413073A (zh) | 一种保护java可执行程序的方法及设备 | |
Park et al. | Effects of Code Obfuscation on Android App Similarity Analysis. | |
CN101986326A (zh) | 保护软件安全的方法及装置 | |
CN111819542A (zh) | 编译设备和方法 | |
CN109543368A (zh) | 一种基于中间语言解释器的跨平台源码虚拟化保护方法 | |
CN103093155B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180213 Termination date: 20200623 |