CN113158147B - 一种基于母体融合的代码混淆方法 - Google Patents
一种基于母体融合的代码混淆方法 Download PDFInfo
- Publication number
- CN113158147B CN113158147B CN202110311243.7A CN202110311243A CN113158147B CN 113158147 B CN113158147 B CN 113158147B CN 202110311243 A CN202110311243 A CN 202110311243A CN 113158147 B CN113158147 B CN 113158147B
- Authority
- CN
- China
- Prior art keywords
- code
- parent
- program
- fusion
- control flow
- 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
- 230000004927 fusion Effects 0.000 title claims abstract description 65
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000006870 function Effects 0.000 claims abstract description 50
- 239000012634 fragment Substances 0.000 claims description 31
- 239000000523 sample Substances 0.000 claims description 28
- 238000004422 calculation algorithm Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 claims description 10
- 230000014509 gene expression Effects 0.000 claims description 10
- 238000003780 insertion Methods 0.000 claims description 6
- 230000037431 insertion Effects 0.000 claims description 6
- 230000010354 integration Effects 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 4
- 230000009471 action Effects 0.000 claims description 2
- 238000005192 partition Methods 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 14
- 230000006399 behavior Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000007499 fusion processing Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000008774 maternal effect Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000011218 segmentation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Abstract
本发明属于网络安全技术领域,具体涉及一种基于母体融合的代码混淆方法。本发明通过将母体代码程序与要保护的代码在结构上进行合并,并通过变量共用等方式使母体代码与要保护的代码之间产生逻辑关联,从而将两个代码合并为不易分割,具有原有代码功能,并对原有执行流图结构进行隐藏的新代码,以此保护原程序。该方法摒弃了传统的混淆方法中对源码形式的过度处理,能够有效解决传统混淆方法难以对抗自动化分析手段、具有明显混淆特征的问题,混淆效果较好;而且该混淆方法适用于大多数编程语言,具有良好的普适性。
Description
技术领域
本发明属于网络安全技术领域,具体涉及一种基于母体融合的代码混淆方法。
背景技术
逆向分析技术是恶意代码编写者通用的一项技术。通过对现有程序进行逆向分析,挖掘程序内包含的算法逻辑和关键数据,可有效实施软件盗版甚至基于漏洞的黑客攻击。根据商业软件联盟(the software alliance,简称BSA)2018年发布的软件调查显示,全球范围内有高达36%的已安装软件未经合法授权,对软件产业和用户信息安全均构成极大威胁。
代码混淆技术是进行软件保护的通用技术,通过将代码在语义、逻辑或表现形式上的变化,对代码原有的执行逻辑进行混淆,达到隐藏代码核心功能的目的。代码混淆主要应用于高级语言,即源码层面的代码混淆,通过对源码形态的变换,生成具有抗逆向功能的可执行程序或脚本程序。主要的源码混淆方式有添加冗余代码,数据加密等。其中添加冗余代码属于控制流混淆的一种,是指将基本块结构相似,数据随机生成的无意义代码片段或不透明谓词插入到原代码控制流中,增加原程序的逻辑分支复杂度。数据加密则是通过将关键内容通过加密的方式,以数据形式进行存储,在使用时再进行解密,例如将源代码以数据形式进行加密,在运行时先解密出源码再执行。
然而,上述混淆技术难以对抗以符号执行、模拟执行为主的动态逆向分析技术。研究表明,动态符号执行被广泛应用于添加不透明谓词等通过添加冗余代码的混淆算法的消除:通过分析执行流中每个基本块,对具有分支的基本块进行路径可达性分析,去除不可达路径。而动态模拟执行可将加密数据部分通过模拟解密过程的方式进行提取,以获取加密前形态。动态分析技术有效的消除了传统代码混淆技术对程序破译的阻碍,使得软件保护产业难以取得进一步的突破。
显然,传统的代码混淆算法已经难以适应软件保护的需求,混淆方法的创新显得尤为重要,因此,提出一种混淆强度大,方式新颖的代码保护方法是当前的首要解决的问题。
发明内容
针对传统的代码混淆算法主要通过增添代码冗余,提高程序复杂度,对抗逆向分析,其混淆强度依赖于代码冗余程度,难以应对日趋高效的自动化分析技术,并且传统的源码混淆方式会产生明显的混淆特征,并暴露混淆手法,使程序更容易越过混淆进行分析的缺陷和问题,本发明提供一种混淆强度大、方式新颖的基于母体融合的代码混淆方法。
本发明解决其技术问题所采用的方案是:一种基于母体融合的代码混淆方法,包括以下步骤:
步骤一、选取无害但功能复杂的程序作为母体程序,所述母体程序需要与目标代码属于同种编程语言、具有相同语言规则且不会与目标代码产生冲突;
步骤二、采用抽象语法树结构对母体程序进行遍历,以语法树各结点类型和关系为基础抽象出母体程序控制流结构,提取出母体程序的抽象控制流图,并对母体程序控制流的关键节点或必经节点进行记录;
步骤三、根据执行流刻画所得到的运行点记录数量对目标代码进行分片,根据获取的母体程序的控制流图和节点信息,选取可融合的代码位置,然后将目标代码分片按照母体程序执行点记录位置顺序与母体程序对应位置进行融合,形成新的控制流图进而形成新的程序。
上述的基于母体融合的代码混淆方法,步骤二具体方法为:对顶层语法树结点的子结点进行遍历,获取母体程序的控制流图,按照遍历顺序对每一个语法树结构类型进行判别,根据结构类型确定插入执行探针的结点位置;
若结构类型为一般变量操作,设置执行探针,直接插入执行探针;
若为特殊语法结构类型,需要根据语法结构的各种操作类型结构进行整合提取,整合提取分为:
(1)若为条件分支结构,设置执行探针,在每一条分支结构内部的开始位置插入执行探针以获取执行当前分支所需要的触发条件;
(2)若为函数调用结构,对函数内部语法结构进行分析,将函数作为一个整体,在整体后插入执行探针以获取函数的参数个数、参数类型以及返回值类型;
上述的基于母体融合的代码混淆方法,若函数调用结构为递归调用函数,将其视为循环结构,不进行执行探针插入。
上述的基于母体融合的代码混淆方法,若函数调用结构为内部多层次调用函数,则设置深度阈值,并采用深度优先算法,以避免程序陷入多重调用导致融合失败。
上述的基于母体融合的代码混淆方法,步骤三中对目标代码按照语法树进行完整分片,分片数量不大于运行点记录数量。
上述的基于母体融合的代码混淆方法,步骤三中目标代码分片的融合点优先选择和分片结构类型相同或相似的结构进行融合。
上述的基于母体融合的代码混淆方法,步骤三中目标代码分片与母体程序对应位置融合按照目标代码分片中不同的代码结构采用不同的融合方式,分别为:
(1)对于目标代码分片中的简单语句操作,直接将目标代码分片以原形式填充到母体程序的对应融合位置,所述简单语句操作包括普通表达式和循环体;
(2)将循环体代码进行控制流扁平化处理,更改代码结构但不更改程序语义,然后将更改后的代码结构填充到母体程序的对应融合位置;
(3)对于目标代码中存在的分支结构,将母体的分支条件与目标代码分片的分支条件取并集形成新的分支条件,在分支内容上则通过直接以原形式填充的方式,融合到母体代码的对应融合位置。将分片的其他部分插入到条件动作中,设置变量共用,将目标代码分片构建为不透明谓词,并根据记录将母体程序中的变量作为不透明谓词的一个元素构建出与原表达式具有相同语义的融合表达式。
本发明的有益效果:本发明通过代码间结构共用与代码控制流融合的方式,将两个同语言编写的程序代码组成一个新的、同时具有两者完整功能的新代码程序,丰富原有的代码执行流结构,隐藏敏感程序内容,增强程序的抗分析能力与抗同源性检测能力,解决传统混淆方法混淆强度低的缺点。
本发明通过使要保护的代码与无害的母体代码进行融合,摒弃传统的混淆方法中对源码形式的过度处理,通过将核心代码隐藏在复杂的母体代码中,分段隐藏具体的代码行为。在功能完整性上,核心代码通过将自身的控制流结构与母体代码的控制流结构相融合,并选取母体执行流中的关键点或必经点作为融合点,保证了程序的执行正确性与不变性。在静态分析层面,原程序控制流图被破坏,各关键控制流节点加入了新的控制流过程,但主体依然是无害母体的控制流。在动态分析层面,生成的新代码程序在很大程度上依然主要为母体代码的行为,在分析过程中,核心操作分片隐藏在母体代码中,通过变量绑定结构共用的方式融合的代码使母体与核心代码之间存在不易分割的逻辑关系,无法区分母体代码程序与核心代码程序,无害的母体代码为核心代码提供了良好的隐藏效果。
附图说明
图1为本发明执行流跟踪流程图。
图2为目标代码控制流图。
图3为母体代码控制流图。
图4为融合后目标代码控制流图。
具体实施方式
针对传统的代码混淆算法已经难以适应软件保护的需求的缺陷和问题,本发明提供一种混淆强度大、方式新颖的基于母体融合的代码混淆方法,通过代码间结构共用与代码控制流融合的方式,将两个同语言编写的程序代码组成一个新的、同时具有两者完整功能的新代码程序,丰富原有的代码执行流结构,隐藏敏感程序内容,增强程序的抗分析能力与抗同源性检测能力,解决传统混淆方法混淆强度低的缺点。下面结合附图和实施例对本发明进一步说明。
本发明对代码的混淆主要通过母体代码程序与要保护的代码在结构上进行合并,并通过变量共用等方式使母体与要保护的代码之间产生逻辑关联,从而将两个代码合并为不易分割,具有原有代码功能,并对原有执行流图结构进行隐藏的新代码,以此保护原程序。
实施例1:本实施例提供一种基于母体融合的代码混淆方法,该方法需要通过结构共用在目标代码和母体程序之间进行代码控制流融合,首先需要选择合适的母体程序作为融合基础,其中母体程序选择无害但功能复杂的程序作为母体代码,母体代码需要满足以下条件:
(1)与需要保护的代码程序属于同种编程语言,具有相同的语言规则;(2)避免代码间冲突,代码在运行过程中不会与要保护的代码之间产生冲突,例如操作行为冲突等。
从算法上遍历控制流图中所有节点,并对必经节点所对应的代码块进行记录,将该部分代码块按照执行时顺序作为融合点进行代码融合。
在确定母体代码之后,要对母体代码进行执行流跟踪。在源码层面对母体进行执行流跟踪时,需要利用两个关键点,一是控制流图,另一个是抽象语法树。本发明通过抽象语法树结构进行遍历,以语法树各节点类型及关系为基础抽象出代码控制流结构,以静态语法分析的方式提取出程序的抽象控制流图,流程如图1所示。具体如下。
设置语法树顶层节点和深度阈值,对顶层语法树结点的子结点进行遍历,
1、若没有子结点或超过深度阈值,则停止;
2、若存在子结点,则对结点结构类型进行判别,并根据节点结构进行对应的执行探针插入操作;如若遇到特殊的代码结构,则采用一体化的思想,对语法结构中的特殊结构进行整合提取,如循环、跳转、逻辑判断等,即忽视其内部过程,只关注该结构的开始与结束,只在开始前与结束后插入探针。为了提高融合的多样性,需要对特殊的语法结构进行特殊的执行探针插入操作,
(1)若结点结构为循环结构,不插入执行探针;
(2)若结点结构为条件分支结构,记录逻辑条件,设置执行探针,在每一条分支结构内部的开始位置插入执行探针以获取执行当前分支所需要的触发条件;
(3)若结点结构为函数调用结构,记录函数调用的相关信息,并进入函数内部,对函数内部语法结构进行分析,将函数作为一个整体,在整体后插入执行探针以获取函数的参数个数、参数类型以及返回值类型;在存在递归调用情况的函数则将其视为循环结构,与代码中存在的其他循环结构的处理方式相同,为避免循环体对融合代码产生不利影响,对所有循环体与递归调用函数均不对其进行执行探针插入;
(4)若结点结构为普通结构(一般的变量操作),记录变量信息,直接插入执行探针。
算法如下表1所示。
表1语法树控制流识别算法
完成代码的遍历之后,需要根据不同的语法结构类型确定简化的控制结构图:对语法结构中的各种操作类型结构进行整合提取,参照C语言代码风格,对do-while,for,while等常规循环类型结构采用一体化表示,不在控制流中体现循环过程,只关注循环的开始与结束,忽视其内部的其他操作,因为在进行融合过程中,循环体内的融合会使融合程序产生预期之外的错误,所以只关注循环开始前与结束后的程序执行流。而针对部分语言中goto类型的跳转指令,则以位置标识符为起始,goto指令为终止为一体结构。对if-else,switch-case等分支条件结构,则采用各分支代码插桩的方式,在每一条条件分支中插入探针语句,获取当前分支下,前方判断条件的元素取值,再通过动态执行的方式,根据探针的执行情况判断哪条分支可用,并进行记录。然而,在具体程序中,大多会存在嵌套的语法结构,针对嵌套的结构,则以外层的语法结构类型为准,最大限度的覆盖每一个分支。
由于忽视结点内部的结构,所以可以进行插入执行探针的结点之间不存在嵌套或包含关系,这样不仅可以满足语法树向控制流的转化条件,同时可以有效地避免在进行融合的过程中,因其内部混乱的执行顺序使融合程序产生预期之外的错误。
在完成执行探针的插入工作后,通过动态运行母体程序的方式,根据探针的执行情况获取到母体程序源码的执行顺序。在正常情况下,该执行顺序应具有顺序不变性,路径唯一性,结点必经性等特点。
确定母体代码的执行流并获取到关键执行结点后,需要将母体代码的功能与目标代码的功能融合在新的程序之中,该程序利用母体程序的复杂性,将目标代码片段隐藏在母体程序的代码之中,并跟随母体程序的执行流进行执行,从静态、动态两个方面对目标程序进行保护。
该过程主要思想为:融合需要根据执行流刻画所得到的运行点记录进行结构上的融合。从运行点记录中可以获得每个语法树结点的结构类型,以及所包含固定组成元素变量信息,根据不同的结构类型选择不同的融合方式。
为保证切片与融合的正确性,需要在操作过程中满足以下要求:
(1)目标代码的切分数量不可大于执行点记录中的可用点数量,对目标代码的切片按照语法树进行完整切片,运行点记录中的数量即为可融合的分片数量,对目标代码的程序分片数量不能大于该值,否则目标代码无法完成完整的融合。
(2)目标代码分片与母体进行融合的顺序需要按照执行点记录中的位置顺序进行;执行点记录描述母体代码的执行顺序,若在融合过程中,目标代码分片在执行过程中,执行顺序没有按照执行点顺序,则会造成目标代码执行失败。
(3)目标代码分片的融合点优先选择和自身结构类型相似的点进行融合;融合的过程按照“优先选择相同或相似类型的代码结构之间进行融合”的原则,例如母体的分支结构与目标代码分片中的分支结构进行融合,因为相似的代码结构之间更容易满足变量共用,结构共用的融合要求。
在满足以上条件的情况下,目标代码切片与母体程序对应部位的融合应根据不同的结构类型选择不同的融合方式,主要有以下三种方式:
(1)代码直接填充:对于目标代码分片中的普通表达式、循环体等简单语句操作,直接将代码以原形式填充到母体的关键结点位置。
(2)预混淆后填充:将循环体代码进行控制流扁平化处理,更改原有的代码结构,但不更改程序语义,为目标代码提供进一步保护。
(3)相似结构融合:根据目标代码分片中不同的代码结构,使用不同的融合手段在语法结构上进行融合。针对代码中存在的分支结构,例如代码中存在的if-else,switch-case等分支结构,则将母体的分支条件与要保护的代码分支条件取并交集,形成新的分支条件,在分支内容上则重复“代码直接填充”方式中的过程。针对代码中的函数调用、函数定义,通过将函数一对一进行结构融合,将目标代码中的函数定义结构与母体代码中的函数定义结构进行融合,即将目标代码函数定义中的操作转移至母体代码的函数定义中,并添加运行参数,以区分二者功能,保证功能的正确性。
进行融合的过程中,为使母体代码与目标代码之间产生逻辑关联,需要首先将母体语法树中的变量引入目标代码中,即构建二者变量间转换关系。根据执行点记录中记录的变量类型与变量值,对目标代码分片中的操作进行等价转换,将目标代码分片构建为不透明谓词,并根据记录将母体中的变量作为不透明谓词的一个元素,构建出与原表达式具有相同语义的融合表达式。以此,目标代码与母体代码之间通过共用变量的方式,在不影响二者语义的情况下,在结构、逻辑上产生关联,增强了二者的紧密程度。
具体算法描述见下表2。
表2语法树融合算法
从而将母体代码的功能与目标代码的功能融合在新程序中,可保证功能完整性的前提下有效隐藏代码自身的逻辑功能。
本发明通过使要保护的代码与无害的母体代码进行融合,摒弃传统的混淆方法中对源码形式的过度处理,通过将核心代码隐藏在复杂的母体代码中,分段隐藏具体的代码行为。在功能完整性上,核心代码通过将自身的控制流结构与母体代码的控制流结构相融合,并选取母体执行流中的关键点或必经点作为融合点,保证了程序的执行正确性与不变性。在静态分析层面,原程序控制流图被破坏,各关键控制流节点加入了新的控制流过程,但主体依然是无害母体的控制流。在动态分析层面,生成的新代码程序在很大程度上依然主要为母体代码的行为,在分析过程中,核心操作分片隐藏在母体代码中,通过变量绑定结构共用的方式融合的代码使母体与核心代码之间存在不易分割的逻辑关系,无法区分母体代码程序与核心代码程序,无害的母体代码为核心代码提供了良好的隐藏效果。能够有效解决传统混淆方法难以对抗自动化分析手段,具有明显混淆特征的问题。并且,该混淆方法适用于大多数编程语言,具有良好的普适性。
实施例2:本实施例以C程序控制流图为例,融合前后母体代码与目标代码的控制流图变化如下所示,结果如图2-4所示,其中图2为融合前目标代码控制流图,图3为融合前母体代码控制流图,图4为融合后代码控制流图。
目标代码的相关数据在程序初始阶段进行定义,在融合之后,目标代码数据与母体程序数据进行整合,均在程序初始阶段,即控制流图深度为0的位置(最上层基本块以0开始,下文相同)进行初始化,保证程序的数据访问需求。目标代码程序的控制流图的基本块分散在融合之后的程序控制流图中,例如融合后的控制流图中深度为4的其中一个基本块,在语义上包含了目标代码控制流图中深度为3的基本块语义内容,其中不一致的部分属于母体代码的控制流。融合后代码的控制流图与目标代码控制流图在深度和形态上具有较大区别,并且存在相似的部分包含母体代码控制流的部分语句,具有较强的抗同源分析效果。
可以明显看出,进行融合之后,母体程序中的关键节点前插入核心代码的分片,在母体代码执行的过程中,核心代码分片分散在母体代码的各个部位,并通过代码变形,改变代码原有的结构,但依照顺序进行执行,隐式的执行核心代码的全部功能。目标代码在与母体融合后,程序的控制流发生了较大变化,在整体的控制流结构上更接近于母体程序的控制流结构,其本身的控制流与母体代码的控制流相结合,并难以区分,增强了程序的抗同源性分析能力,混淆效果更佳。
Claims (5)
1.一种基于母体融合的代码混淆方法,其特征在于:包括以下步骤:
步骤一、选取无害但功能复杂的程序作为母体程序,所述母体程序需要与目标代码属于同种编程语言、具有相同语言规则且不会与目标代码产生冲突;
步骤二、采用抽象语法树结构对母体程序进行遍历,以语法树各节点类型和关系为基础抽象出母体程序的控制流结构,提取出母体程序的抽象控制流图,并对母体程序控制流的关键节点或必经节点进行记录;具体是:对顶层语法树节点的子节点进行遍历,获取母体程序的控制流图,按照遍历顺序对每一个语法树结构类型进行判别,根据结构类型确定插入执行探针的节点位置;
若结构类型为一般变量操作,设置执行探针,直接插入执行探针;
若为特殊语法结构类型,需要根据语法结构的各种操作类型结构进行整合提取,整合提取分为:
(1)若为条件分支结构,设置执行探针,在每一条分支结构内部的开始位置插入执行探针以获取执行当前分支所需要的触发条件;
(2)若为函数调用结构,对函数内部语法结构进行分析,将函数作为一个整体,在整体后插入执行探针以获取函数的参数个数、参数类型以及返回值类型;
步骤三、根据执行流所得到的运行点记录数量对目标代码进行分片,根据获取的母体程序的控制流图和节点信息,选取可融合的代码位置,然后将目标代码分片按照母体程序执行点记录位置顺序与母体程序对应位置进行融合,形成新的控制流图进而形成新的程序;其中目标代码分片与母体程序对应位置融合按照目标代码分片中不同的代码结构采用不同的融合方式,分别为:
(1)对于目标代码分片中的简单语句操作,直接将目标代码分片以原形式填充到母体程序的对应融合位置,所述简单语句操作包括普通表达式和循环体;
(2)将部分代码进行控制流扁平化处理,更改代码结构但不更改程序语义,然后将更改后的代码结构填充到母体程序的对应融合位置;
(3)对于目标代码中存在的分支结构,将母体的分支条件与目标代码分片的分支条件取并集形成新的分支条件,在分支内容上则通过直接以原形式填充的方式,融合到母体代码的对应融合位置;将分片的其他部分插入到条件动作中,设置变量共用,将目标代码分片构建为不透明谓词,并根据记录将母体程序中的变量作为不透明谓词的一个元素构建出与原表达式具有相同语义的融合表达式。
2.根据权利要求1所述的基于母体融合的代码混淆方法,其特征在于:若函数调用结构为递归调用函数,将其视为循环结构,不进行执行探针插入。
3.根据权利要求1所述的基于母体融合的代码混淆方法,其特征在于:若函数调用结构为内部多层次调用函数,则设置深度阈值,并采用深度优先算法,以避免程序陷入多重调用并导致融合失败。
4.根据权利要求1所述的基于母体融合的代码混淆方法,其特征在于:步骤三中对目标代码按照语法树进行完整分片,分片数量不大于运行点记录数量。
5.根据权利要求1所述的基于母体融合的代码混淆方法,其特征在于:步骤三中目标代码分片的融合点优先选择和分片结构类型相同或相似的结构进行融合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110311243.7A CN113158147B (zh) | 2021-03-24 | 2021-03-24 | 一种基于母体融合的代码混淆方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110311243.7A CN113158147B (zh) | 2021-03-24 | 2021-03-24 | 一种基于母体融合的代码混淆方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113158147A CN113158147A (zh) | 2021-07-23 |
CN113158147B true CN113158147B (zh) | 2022-12-09 |
Family
ID=76888411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110311243.7A Active CN113158147B (zh) | 2021-03-24 | 2021-03-24 | 一种基于母体融合的代码混淆方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113158147B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6668325B1 (en) * | 1997-06-09 | 2003-12-23 | Intertrust Technologies | Obfuscation techniques for enhancing software security |
WO2012023786A2 (ko) * | 2010-08-19 | 2012-02-23 | (주)잉카인터넷 | 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법 |
CN109992935A (zh) * | 2019-03-15 | 2019-07-09 | 同盾控股有限公司 | 一种源代码保护方法及装置 |
CN110647329A (zh) * | 2019-08-13 | 2020-01-03 | 平安科技(深圳)有限公司 | 代码混淆方法、装置、计算机设备和存储介质 |
CN110826032A (zh) * | 2019-11-05 | 2020-02-21 | 浪潮卓数大数据产业发展有限公司 | 一种基于AST的Javascript混淆方法 |
CN111723345A (zh) * | 2020-05-09 | 2020-09-29 | 中国人民解放军战略支援部队信息工程大学 | 基于回调函数的控制流混淆方法及系统 |
CN112487368A (zh) * | 2020-12-21 | 2021-03-12 | 中国人民解放军陆军炮兵防空兵学院 | 一种基于图卷积网络的函数级混淆检测方法 |
-
2021
- 2021-03-24 CN CN202110311243.7A patent/CN113158147B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6668325B1 (en) * | 1997-06-09 | 2003-12-23 | Intertrust Technologies | Obfuscation techniques for enhancing software security |
WO2012023786A2 (ko) * | 2010-08-19 | 2012-02-23 | (주)잉카인터넷 | 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법 |
CN109992935A (zh) * | 2019-03-15 | 2019-07-09 | 同盾控股有限公司 | 一种源代码保护方法及装置 |
CN110647329A (zh) * | 2019-08-13 | 2020-01-03 | 平安科技(深圳)有限公司 | 代码混淆方法、装置、计算机设备和存储介质 |
CN110826032A (zh) * | 2019-11-05 | 2020-02-21 | 浪潮卓数大数据产业发展有限公司 | 一种基于AST的Javascript混淆方法 |
CN111723345A (zh) * | 2020-05-09 | 2020-09-29 | 中国人民解放军战略支援部队信息工程大学 | 基于回调函数的控制流混淆方法及系统 |
CN112487368A (zh) * | 2020-12-21 | 2021-03-12 | 中国人民解放军陆军炮兵防空兵学院 | 一种基于图卷积网络的函数级混淆检测方法 |
Non-Patent Citations (4)
Title |
---|
《代码融合的PE文件信息隐藏技术研究》;田祖伟;《中国博士学位论文全文数据库(信息科技辑)》;20190115;I138-31页 * |
代码混淆技术研究综述;李路鹿等;《软件》;20200215(第02期);全文 * |
基于控制流混淆转换的代码保护技术;李婧;《计算机安全》;20090815(第08期);全文 * |
基于控制流的代码混淆技术研究;蒋华等;《计算机应用研究》;20130315(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113158147A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5042315B2 (ja) | ソースコード内のセキュリティ脆弱性の検出 | |
Russo et al. | Dynamic vs. static flow-sensitive security analysis | |
US7409718B1 (en) | Method of decrypting and analyzing encrypted malicious scripts | |
CN111723345B (zh) | 基于回调函数的控制流混淆方法及系统 | |
Kalysch et al. | VMAttack: deobfuscating virtualization-based packed binaries | |
CN111737150B (zh) | 面向Java EE程序SQLIA漏洞的污点分析和验证方法及装置 | |
CN104573503A (zh) | 一种内存访问溢出的检测方法及装置 | |
CN112115427A (zh) | 代码混淆方法、装置、电子设备及存储介质 | |
CN115269427A (zh) | 针对web注入漏洞的中间语言表示方法及系统 | |
CN114611074A (zh) | Solidity语言源代码混淆方法、系统、设备及存储介质 | |
CN113158147B (zh) | 一种基于母体融合的代码混淆方法 | |
CN116541022A (zh) | 一种基于语义状态图的php二阶漏洞的自动化挖掘方法 | |
Bruni et al. | Code obfuscation against abstract model checking attacks | |
CN109299610A (zh) | 安卓系统中不安全敏感输入验证识别方法 | |
He et al. | Tamperproofing a software watermark by encoding constants | |
CN113419960B (zh) | 用于可信操作系统内核模糊测试的种子生成方法及系统 | |
CN114936369A (zh) | 基于标记的sql注入攻击主动防御方法、系统及存储介质 | |
CN114003868A (zh) | 一种处理软件代码的方法和电子设备 | |
KR102344496B1 (ko) | 악성코드의 기능을 분석하는 방법 및 장치 | |
Almeida-Matos et al. | An Information Flow Monitor for a Core of DOM: Introducing References and Live Primitives | |
Foroughipour et al. | Androclonium: Bytecode-level code clone detection for obfuscated android apps | |
Cerutti et al. | Looking for criminal intents in javascript obfuscated code | |
CN117195241B (zh) | 固件漏洞的检测方法、设备和介质 | |
KR102572607B1 (ko) | 비실행데이터 내의 셸코드 식별장치 및 방법 | |
CN112162777B (zh) | 一种源代码特征提取方法及装置 |
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 |