CN113885872A - 一种代码混淆方法及装置 - Google Patents
一种代码混淆方法及装置 Download PDFInfo
- Publication number
- CN113885872A CN113885872A CN202111152087.0A CN202111152087A CN113885872A CN 113885872 A CN113885872 A CN 113885872A CN 202111152087 A CN202111152087 A CN 202111152087A CN 113885872 A CN113885872 A CN 113885872A
- Authority
- CN
- China
- Prior art keywords
- code
- obfuscation
- information
- obfuscated
- name
- 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
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种代码混淆方法及装置,涉及数据处理技术领域,该方法包括以下步骤:获取目标代码,提取函数名、结构体名、枚举类型、全局常量名称、常量字符串以及控制流信息;对函数名、结构体名、枚举类型以及全局常量名称进行混淆处理,生成各自对应的第一混淆信息,并生成对应的混淆名称映射表;对常量字符串进行混淆处理,获得对应的第二混淆信息;拆分控制流信息,并将控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内;生成与目标代码对应的代码混淆文件。本申请对目标代码进行拆分,基于拆分获得的代码信息的类型,按照对应的预设的混淆规则进行混淆处理,实现代码混淆工作,具有便利性和通用性,满足代码混淆的使用需求。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种代码混淆方法及装置。
背景技术
随着物联网的普及,各种物联网嵌入式设备开发如火如荼,其中软件层大部分由代码语言开发。但大部分对代码编译后的程序缺乏安全保护意识,依靠IDA等逆向分析工具,可以对编译后对程序反汇编,再从汇编逆向生成代码,基本可以看到函数名称和实现过程,可以分析寻找漏洞。因此需要有工具可以混淆代码,加深逆向分析的难度。
传统的混淆方案类似OLLVM,与编译器LLVM深度耦合,对LLVM的IR中间层进行混淆,直接生成编译后的程序。但是,该技术手段具有一定的局限性,仅能够应用在LLVM编译器上,但大部分嵌入式设备都是采用各类GCC或者ARMCC编译器,而这两类编译器目前没有合适的混淆工具。
因此,基于目前技术手段的局限性,提供一种新的代码混淆技术,用以满足当前使用需求。
发明内容
本申请提供一种代码混淆方法及装置,对目标代码进行拆分,基于拆分获得的代码信息的类型,按照对应的预设的混淆规则进行混淆处理,从而实现代码混淆工作,具有一定的便利性和通用性,满足代码混淆的使用需求。
第一方面,本申请提供了一种代码混淆方法,所述方法包括以下步骤:
获取目标代码,提取所述目标代码的函数名、结构体名、枚举类型、全局常量名称、常量字符串以及控制流信息;
对所述函数名、所述结构体名、所述枚举类型以及全局常量名称进行混淆处理,生成各自对应的第一混淆信息,并生成对应的混淆名称映射表;
对所述常量字符串进行混淆处理,获得对应的第二混淆信息;
拆分所述控制流信息,并将所述控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内;
基于所述第一混淆信息、所述第二混淆信息以及所述第三混淆信息,生成与所述目标代码对应的代码混淆文件;其中,
所述基本块中配置有对应的数据处理算法。
进一步的,所述代码混淆方法还包括以下步骤:
基于预设的混淆白名单,将所述目标代码中与所述混淆白名单匹配的代码信息在不做混淆处理的前提下存储对应的所述代码混淆文件。
进一步的,所述代码混淆方法还包括以下步骤:
基于预设的文件混淆规则,对所述目标代码的当前文件名进行混淆处理,获得对应的混淆文件名并存入对应的所述代码混淆文件。
进一步的,对所述常量字符串进行混淆处理,获得对应的第二混淆信息之后,所述代码混淆方法还包括以下步骤:
将所述目标代码中的所述常量字符串对应的所述第二混淆信息存入预设的第一混淆数组;其中,
所述第一混淆数组被配置在所述代码混淆文件内。
具体的,所述第一混淆数组为ASCII码数组。
具体的,所述拆分所述控制流信息,并将所述控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内,包括以下步骤:
拆分所述控制流信息,获得对应的所述基本块;
将所述基本块之间的流程关系配置成死循环;
将流程关系配置完成后的所述基本块以及所述原始流程关系存入对应的第三混淆信息内。
第二方面,本申请提供了一种代码混淆装置,所述装置包括:
代码拆解模块,其用于获取目标代码,提取所述目标代码的函数名、结构体名、枚举类型、全局常量名称、常量字符串以及控制流信息;
代码混淆模块,其用于对所述函数名、所述结构体名、所述枚举类型以及全局常量名称进行混淆处理,生成各自对应的第一混淆信息,并生成对应的混淆名称映射表;
所述代码混淆模块还用于对所述常量字符串进行混淆处理,获得对应的第二混淆信息;
所述代码混淆模块还用于拆分所述控制流信息,并将所述控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内;
混淆输出模块,其用于基于所述第一混淆信息、所述第二混淆信息以及所述第三混淆信息,生成与所述目标代码对应的代码混淆文件;其中,
所述基本块中配置有对应的数据处理算法。
进一步的,所述代码混淆模块还用于基于预设的混淆白名单,将所述目标代码中与所述混淆白名单匹配的代码信息在不做混淆处理的前提下存储对应的所述代码混淆文件。
进一步的,所述代码混淆模块还用于基于预设的文件混淆规则,对所述目标代码的当前文件名进行混淆处理,获得对应的混淆文件名并存入对应的所述代码混淆文件。
进一步的,所述代码混淆模块还用于将所述目标代码中的所述常量字符串对应的所述第二混淆信息存入预设的第一混淆数组;其中,
所述第一混淆数组被配置在所述代码混淆文件内。
本申请提供的技术方案带来的有益效果包括:
本申请对目标代码进行拆分,基于拆分获得的代码信息的类型,按照对应的预设的混淆规则进行混淆处理,从而实现代码混淆工作,具有一定的便利性和通用性,满足代码混淆的使用需求。
附图说明
术语解释:
IDA:Interactive Disassembler,交互式反汇编器;
OLLVM:Obfuscator-LLVM,底层虚拟机混淆器;
LLVM:Low Level Virtual Machine,底层虚拟机;
IR:Intermediate Representation,中间表示;
GCC:GNU Compiler Collection,GNU编译器套件;
ARMCC:ARM Compiler Collection,ARM的C编译器;
ARM:Advanced RISC Machines,ARM处理器;
ASCII:American Standard Code for Information Interchange,美国信息互换标准代码。
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中提供的代码混淆方法的步骤流程图;
图2为本申请实施例中提供的代码混淆方法中的目标代码的控制流的示意图;
图3为本申请实施例中提供的代码混淆方法中的目标代码混淆处理后的控制流的示意图;
图4为本申请实施例中提供的代码混淆装置的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图对本申请的实施例作进一步详细说明。
本申请实施例提供一种代码混淆方法及装置,对目标代码进行拆分,基于拆分获得的代码信息的类型,按照对应的预设的混淆规则进行混淆处理,从而实现代码混淆工作,具有一定的便利性和通用性,满足代码混淆的使用需求。
为达到上述技术效果,本申请的总体思路如下:
一种代码混淆方法,该方法包括以下步骤:
S1、获取目标代码,提取目标代码的函数名、结构体名、枚举类型、全局常量名称、常量字符串以及控制流信息;
S2、对函数名、结构体名、枚举类型以及全局常量名称进行混淆处理,生成各自对应的第一混淆信息,并生成对应的混淆名称映射表;
S3、对常量字符串进行混淆处理,获得对应的第二混淆信息;
S4、拆分控制流信息,并将控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内;
S5、基于第一混淆信息、第二混淆信息以及第二混淆信息,生成与目标代码对应的代码混淆文件;其中,
基本块中配置有对应的数据处理算法。
以下结合附图对本申请的实施例作进一步详细说明。
第一方面,参见图1~3所示,本申请实施例提供一种代码混淆方法,该方法包括以下步骤:
S1、获取目标代码,提取目标代码的函数名、结构体名、枚举类型、全局常量名称、常量字符串以及控制流信息;
S2、对函数名、结构体名、枚举类型以及全局常量名称进行混淆处理,生成各自对应的第一混淆信息,并生成对应的混淆名称映射表;
S3、对常量字符串进行混淆处理,获得对应的第二混淆信息;
S4、拆分控制流信息,并将控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内;
S5、基于第一混淆信息、第二混淆信息以及第二混淆信息,生成与目标代码对应的代码混淆文件;其中,
基本块中配置有对应的数据处理算法。
需要说明的是,目标代码可以是C语言代码。
其中,混淆名称映射表内记录有不同的函数名、结构体名、枚举类型以及全局常量名称,还存储有函数名、结构体名、枚举类型、全局常量名称各自对应的混淆名称。
本申请实施例中,对目标代码进行拆分,基于拆分获得的代码信息的类型,按照对应的预设的混淆规则进行混淆处理,从而实现代码混淆工作,具有一定的便利性和通用性,满足代码混淆的使用需求。
进一步的,该代码混淆方法还包括以下步骤:
基于预设的混淆白名单,将所述目标代码中与所述混淆白名单匹配的代码信息在不做混淆处理的前提下存储对应的所述代码混淆文件。
进一步的,该代码混淆方法还包括以下步骤:
基于预设的文件混淆规则,对所述目标代码的当前文件名进行混淆处理,获得对应的混淆文件名并存入对应的所述代码混淆文件。
进一步的,对所述常量字符串进行混淆处理,获得对应的第二混淆信息之后,所述方法还包括以下步骤:
将所述目标代码中的所述常量字符串对应的所述第二混淆信息存入预设的第一混淆数组;其中,
所述第一混淆数组被配置在所述代码混淆文件内。
优选的,所述第一混淆数组为ASCII码数组。
具体的,该代码混淆方法中,所述拆分所述控制流信息,并将所述控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内,包括以下步骤:
拆分所述控制流信息,获得对应的所述基本块;
将所述基本块之间的流程关系配置成死循环;
将流程关系配置完成后的所述基本块以及所述原始流程关系存入对应的第三混淆信息内。
结合上述技术方案,在实际实施时,可以基于上述技术方案的实质内容编写执行程序,接收两个输入参数,一个是目标代码的存储路径,一个是混淆配置文件的存储路径,混淆配置文件内至少包括混淆名称映射表、混淆对应关系、混淆白名单以及文件混淆规则;
先读取混淆配置文件文件流,解析数据格式,获取混淆白名单;
然后读取目标代码的存储路径,依次读取所有目标代码,进行词法分析,生成词法树;
针对目标代码对应的词法树中的函数名称、结构体名、枚举类型以及全局变量名称(混淆白名单中的名称除外),生成对应混淆名称映射表并对名称进行替换,再对函数体实现对部分增加混淆控制流。
需要说明的是,基于本申请实施例的技术方案,通过对目标代码进行混淆,支持多级目录多个文件的混淆工作,生成对应的混淆后的代码文件,具体的混淆工作包括:函数名替换、全局变量名称替换、字符串常量混淆、结构体名称替换、枚举名和结构体属性名替换、以及函数控制流混淆;
由于本申请实施例的技术方案是对原始代码文件做混淆,不受编译器限制,混淆后的代码文件可以在任意编译器上编译;
另外,该技术方案还支持白名单功能,对于部分不需要混淆的函数名、结构体名、枚举类型以及全局变量,可以增加到混淆白名单,当判断属于混淆白名单内的名称时,则不进行混淆。
基于本申请实施例的技术方案,在具体实施时,包括以下流程:
第一步、读取混淆处理的相关配置,主要包括有混淆关键名称前缀配置、混淆文件名称前缀配置、关键字白名单以及文件白名单;
第二步、读取目标代码,提取获得函数名,结构体名,枚举类型,全局常量名称名,并使用第一步的混淆处理的相关配置进行混淆处理;同时,文件白名单提取的相关名称会添加到混淆白名单中,不做混淆处理。
第三步,假如目标代码的当前文件名需要混淆,读取源码的同时,会用第一步中的混淆处理的相关配置进行混淆处理,生成新的混淆名称并保存,仅混淆文件名称。
需要说明的是,主要实现混淆和保存功能的操作具体如下:
第一、对函数名、结构体名、枚举类型以及全局常量名称进行混淆,并生成对应的混淆名称映射表。
第二、对代码中常量字符串进行混淆,混淆后为ASCII码数组。
第三、混淆前,在目标代码的文件中的.rodata段可以看到常量字符串,混淆后,不存在.rodata段中,而是跟随代码段.text一起且无法辨别。
另外,代码混淆处理中,针对目标代码,会压扁控制流,具体包括以下操作
Q1、拆分目标代码的控制流,获得对应的基本块;
Q2、把控制流图中各个基本块全部放到switch语句中;
Q3、将swich语句封装到死循环中;
Q4、将混淆后的混淆文件名称保存到输出目录中。
第二方面,参见图4所示,本申请实施例提供一种代码混淆装置,其基于第一方面提及的代码混淆方法,该装置包括:
代码拆解模块,其用于获取目标代码,提取所述目标代码的函数名、结构体名、枚举类型、全局常量名称、常量字符串以及控制流信息;
代码混淆模块,其用于对所述函数名、所述结构体名、所述枚举类型以及全局常量名称进行混淆处理,生成各自对应的第一混淆信息,并生成对应的混淆名称映射表;
所述代码混淆模块还用于对所述常量字符串进行混淆处理,获得对应的第二混淆信息;
所述代码混淆模块还用于拆分所述控制流信息,并将所述控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内;
混淆输出模块,其用于基于所述第一混淆信息、所述第二混淆信息以及所述第三混淆信息,生成与所述目标代码对应的代码混淆文件;其中,
所述基本块中配置有对应的数据处理算法。
需要说明的是,目标代码可以是C语言代码。
本申请实施例中,对目标代码进行拆分,基于拆分获得的代码信息的类型,按照对应的预设的混淆规则进行混淆处理,从而实现代码混淆工作,具有一定的便利性和通用性,满足代码混淆的使用需求。
进一步的,所述代码混淆模块还用于基于预设的混淆白名单,将所述目标代码中与所述混淆白名单匹配的代码信息在不做混淆处理的前提下存储对应的所述代码混淆文件。
进一步的,所述代码混淆模块还用于基于预设的文件混淆规则,对所述目标代码的当前文件名进行混淆处理,获得对应的混淆文件名并存入对应的所述代码混淆文件。
进一步的,所述代码混淆模块还用于将所述目标代码中的所述常量字符串对应的所述第二混淆信息存入预设的第一混淆数组;其中,
所述第一混淆数组被配置在所述代码混淆文件内。
具体的,所述第一混淆数组为ASCII码数组。
结合上述技术方案,在实际实施时,可以基于上述技术方案的实质内容编写执行程序,接收两个输入参数,一个是目标代码的存储路径,一个是混淆配置文件的存储路径,混淆配置文件内至少包括混淆名称映射表、混淆对应关系、混淆白名单以及文件混淆规则;
先读取混淆配置文件文件流,解析数据格式,获取混淆白名单;
然后读取目标代码的存储路径,依次读取所有目标代码,进行词法分析,生成词法树;
针对目标代码对应的词法树中的函数名称、结构体名、枚举类型以及全局变量名称(混淆白名单中的名称除外),生成对应混淆名称映射表并对名称进行替换,再对函数体实现对部分增加混淆控制流。
需要说明的是,基于本申请实施例的技术方案,通过对目标代码进行混淆,支持多级目录多个文件的混淆工作,生成对应的混淆后的代码文件,具体的混淆工作包括:函数名替换、全局变量名称替换、字符串常量混淆、结构体名称替换、枚举名和结构体属性名替换、以及函数控制流混淆;
由于本申请实施例的技术方案是对原始代码文件做混淆,不受编译器限制,混淆后的代码文件可以在任意编译器上编译;
另外,该技术方案还支持白名单功能,对于部分不需要混淆的函数名、结构体名、枚举类型以及全局变量,可以增加到混淆白名单,当判断属于混淆白名单内的名称时,则不进行混淆。
需要说明的是,在本申请中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种代码混淆方法,其特征在于,所述方法包括以下步骤:
获取目标代码,提取所述目标代码的函数名、结构体名、枚举类型、全局常量名称、常量字符串以及控制流信息;
对所述函数名、所述结构体名、所述枚举类型以及全局常量名称进行混淆处理,生成各自对应的第一混淆信息,并生成对应的混淆名称映射表;
对所述常量字符串进行混淆处理,获得对应的第二混淆信息;
拆分所述控制流信息,并将所述控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内;
基于所述第一混淆信息、所述第二混淆信息以及所述第三混淆信息,生成与所述目标代码对应的代码混淆文件;其中,
所述基本块中配置有对应的数据处理算法。
2.如权利要求1所述的代码混淆方法,其特征在于,所述方法还包括以下步骤:
基于预设的混淆白名单,将所述目标代码中与所述混淆白名单匹配的代码信息在不做混淆处理的前提下存储对应的所述代码混淆文件。
3.如权利要求1所述的代码混淆方法,其特征在于,所述方法还包括以下步骤:
基于预设的文件混淆规则,对所述目标代码的当前文件名进行混淆处理,获得对应的混淆文件名并存入对应的所述代码混淆文件。
4.如权利要求1所述的代码混淆方法,其特征在于,对所述常量字符串进行混淆处理,获得对应的第二混淆信息之后,所述方法还包括以下步骤:
将所述目标代码中的所述常量字符串对应的所述第二混淆信息存入预设的第一混淆数组;其中,
所述第一混淆数组被配置在所述代码混淆文件内。
5.如权利要求4所述的代码混淆方法,其特征在于:
所述第一混淆数组为ASCII码数组。
6.如权利要求1所述的代码混淆方法,其特征在于,所述拆分所述控制流信息,并将所述控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内,包括以下步骤:
拆分所述控制流信息,获得对应的所述基本块;
将所述基本块之间的流程关系配置成死循环;
将流程关系配置完成后的所述基本块以及所述原始流程关系存入对应的第三混淆信息内。
7.一种代码混淆装置,其特征在于,所述装置包括:
代码拆解模块,其用于获取目标代码,提取所述目标代码的函数名、结构体名、枚举类型、全局常量名称、常量字符串以及控制流信息;
代码混淆模块,其用于对所述函数名、所述结构体名、所述枚举类型以及全局常量名称进行混淆处理,生成各自对应的第一混淆信息,并生成对应的混淆名称映射表;
所述代码混淆模块还用于对所述常量字符串进行混淆处理,获得对应的第二混淆信息;
所述代码混淆模块还用于拆分所述控制流信息,并将所述控制流信息中的基本块以及原始流程关系存入对应的第三混淆信息内;
混淆输出模块,其用于基于所述第一混淆信息、所述第二混淆信息以及所述第三混淆信息,生成与所述目标代码对应的代码混淆文件;其中,
所述基本块中配置有对应的数据处理算法。
8.如权利要求7所述的代码混淆装置,其特征在于:
所述代码混淆模块还用于基于预设的混淆白名单,将所述目标代码中与所述混淆白名单匹配的代码信息在不做混淆处理的前提下存储对应的所述代码混淆文件。
9.如权利要求7所述的代码混淆装置,其特征在于:
所述代码混淆模块还用于基于预设的文件混淆规则,对所述目标代码的当前文件名进行混淆处理,获得对应的混淆文件名并存入对应的所述代码混淆文件。
10.如权利要求7所述的代码混淆装置,其特征在于:
所述代码混淆模块还用于将所述目标代码中的所述常量字符串对应的所述第二混淆信息存入预设的第一混淆数组;其中,
所述第一混淆数组被配置在所述代码混淆文件内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111152087.0A CN113885872A (zh) | 2021-09-29 | 2021-09-29 | 一种代码混淆方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111152087.0A CN113885872A (zh) | 2021-09-29 | 2021-09-29 | 一种代码混淆方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113885872A true CN113885872A (zh) | 2022-01-04 |
Family
ID=79008121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111152087.0A Pending CN113885872A (zh) | 2021-09-29 | 2021-09-29 | 一种代码混淆方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113885872A (zh) |
-
2021
- 2021-09-29 CN CN202111152087.0A patent/CN113885872A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bajracharya et al. | Sourcerer: An infrastructure for large-scale collection and analysis of open-source code | |
Harris et al. | Practical analysis of stripped binary code | |
Lee et al. | SDD: high performance code clone detection system for large scale source code | |
ATE121209T1 (de) | Verfahren und vorrichtung zur wiederauffindung von gespeicherten grafikdaten. | |
Mokhov et al. | Build systems à la carte | |
Liang et al. | A behavior-based malware variant classification technique | |
CN106371997B (zh) | 一种代码检查方法及装置 | |
CN111984669B (zh) | 一种支持动态变量的函数式sql查询方法、装置、设备和介质 | |
Abbasi et al. | Reverse engineering web configurators | |
JP4826120B2 (ja) | 業務仕様作成支援システム及び方法 | |
Cheers et al. | Spplagiarise: A tool for generating simulated semantics-preserving plagiarism of java source code | |
Wang et al. | Autoquery: automatic construction of dependency queries for code search | |
Unruh et al. | Leveraging Flawed Tutorials for Seeding {Large-Scale} Web Vulnerability Discovery | |
CN113885872A (zh) | 一种代码混淆方法及装置 | |
CN109683900B (zh) | 针对elf文件调试信息的通用上位机符号查找与解析方法 | |
CN115291887A (zh) | 代码生成方法、装置、设备及存储介质 | |
Kroustek et al. | Accurate retargetable decompilation using additional debugging information | |
Poshyvanyk et al. | Creating and evolving software by searching, selecting and synthesizing relevant source code | |
CN114266020A (zh) | 一种软件保护方法、装置、设备及可读存储介质 | |
Van Emmerik | Identifying library functions in executable file using patterns | |
Ajam et al. | Scout-bot: Leveraging API community knowledge for exploration and discovery of API learning resources | |
KR100505111B1 (ko) | 데이터베이스 연산용 프로그램 소스 생성 장치 및 그방법과 이를 이용한 컴퓨터 프로그램 제품 | |
Tairas et al. | Representing clones in a localized manner | |
Spacco et al. | Lightweight techniques for tracking unique program statements | |
Schütte et al. | lios: Lifting ios apps for fun and profit |
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 |