The invention discloses a method for detecting said useless variables based on program slicing LLVM intermediate, since joining the useless variables of the program source code, the source code into LLVM intermediate representation form, then use the program slicing technique to analyze that the program dependence graph of LLVM, after the program dependence graph extraction and simplification, variable distance map, finally set a distance threshold, calculate the output variables and other variables in the variable distance map distance, to determine whether the useless variable exists in the source code. The invention can effectively detect the useless variables added in the source code, and has universality when detecting the source codes of different languages.
【技术实现步骤摘要】
基于LLVM中间表示程序切片技术的无用变量检测方法
本专利技术涉及恶意代码分析
,尤其是基于LLVM中间表示程序切片技术的无用变量检测方法。
技术介绍
随着信息时代互联网技术的飞速发展,在人们的生活变得更加便捷和高效的同时,也使得网络使用者更加容易受到恶意代码的攻击。网络信息安全日益受到人们的重视,各种恶意代码分析方法被不断提出。为了增加分析恶意代码的难度,恶意代码的编写者往往会采用各种方法对代码进行保护,代码混淆是常用的方法之一。代码混淆技术的使用增加了逆向工程师分析代码的开销,也使恶意软件能够躲避安全工具的检测。控制流混淆和数据流混淆是使用最广泛的代码混淆方法。前者通过各种手段对程序的控制流结构进行改变,在不改变程序执行结果的前提下,使程序的控制流变得复杂,难以被人分析和理解。后者对程序中的数据或数据结构进行转换,在不影响程序执行结果的条件下,将数据或数据结构转换成令人难以理解的形式,使反混淆者难以对程序中的数据进行分析。其中,插入无用变量是控制流混淆方法的一种,该方法在源程序中插入与程序执行结果无关的变量,从而阻碍反混淆者对代码进行分析。国内外研究人员 ...
【技术保护点】
基于LLVM中间表示程序切片技术的无用变量检测方法,其特征在于,包括步骤:S1、获取可能插入了无用变量的源代码;S2、在LLVM下将S1中的源代码转化为LLVM中间表示的形式;S3、利用程序切片技术,对S2中得到的LLVM中间表示进行切片分析,得到程序依赖图;S4、对程序依赖图进行抽取和化简,构建变量距离图;S5、将源代码中变量数量n设定为变量距离阈值r,在变量距离图上计算其他变量与输出变量之间的距离d,如果d>r,则认为是与程序执行结果无关的无用变量。
【技术特征摘要】
1.基于LLVM中间表示程序切片技术的无用变量检测方法,其特征在于,包括步骤:S1、获取可能插入了无用变量的源代码;S2、在LLVM下将S1中的源代码转化为LLVM中间表示的形式;S3、利用程序切片技术,对S2中得到的LLVM中间表示进行切片分析,得到程序依赖图;S4、对程序依赖图进行抽取和化简,构建变量距离图;S5、将源代码中变量数量n设定为变量距离阈值r,在变量距离图上计算其他变量与输出变量之间的距离d,如果d>r,则认为是与程序执行结果无关的无用变量。2.根据权利要求...
【专利技术属性】
技术研发人员:张迎周,王星,陈星昊,尹秀,赵莲,
申请(专利权)人:南京邮电大学,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。