基于中间表示的源码和二进制代码相似性比对技术研究

来源 :战略支援部队信息工程大学 | 被引量 : 0次 | 上传用户:zhangwenda_gz
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
开源无处不在,从底层芯片、驱动、固件,到操作系统、浏览器、应用软件,都有开源软件的应用,基于组件的开发和代码重用大大提高了软件开发的效率。然而,开源项目维护者对代码安全质量重视不够和技术能力水平不足,开源代码的依赖和引用关系较为复杂,其安全性也往往缺少审查和管理,因此,开源软件也增加了软件供应链的复杂性和安全风险,许多开源漏洞也被引入到闭源二进制文件中。因此,检测闭源二进制代码中复用的开源代码,研究源码和二进制代码相似性比对技术具有现实意义。现有研究多关注源码和源码之间,或者二进制代码之间的相似性比对,对此类问题的相似性比对方法的研究比较成熟。源码之间的相似性比对常用于解决代码克隆检测,代码搜索等问题,二进制代码相似性比对常用于解决漏洞搜索,补丁分析,恶意软件检测等问题。代码比较的粒度一般为基本块,函数,或者整个程序,以确定它们的异同。然而,由于源代码和二进制代码之间的巨大差异,很少有研究对二进制源代码匹配进行研究。将源代码编译成二进制代码的过程中,可能会选择随机或固定配置的编译选项,比如不同的编译器版本,编译优化等级,目标架构,从而生成完全不同的二进制代码,大大增加了源码和二进制代码相似性比对的难度。同时由于源码和二进制代码具有完全不同的语法形式,无法直接从源码和二进制代码提取足够的特征进行相似性比对。针对以上这些挑战,本文的主要研究内容如下:1.提出基于中间表示的源码和二进制代码转换方法。由于源码和二进制代码语法形式完全不同,从源代码和二进制代码本身可以直接提取并用于比较的特征不足,且对于代码语义不具有代表性。为解决源码和二进制代码直接进行比对困难的问题,本文提出将两者转换为相同形式的中间表示,同时尽可能保留源码和二进制代码的语义信息,从而具有跨语言和跨平台的特性。2.提出基于中间表示的代码语义表示学习方法。为了从代码中间表示语句中获得语义特征,将程序语言类比自然语言,根据出现在相同上下文中的语句具有相似的语义这一思想,通过提取代码中间表示的数据流和控制流等特征,作为代码运行过程中上下文的语义关系,利用自然语言处理模型Word2vec对代码的中间表示进行词嵌入训练,从而获得代码的语义表示。3.实现基于中间表示的源码和二进制代码相似性比对工具。设计并实现基于中间表示的源码和二进制代码相似性比对工具,以要分析的源码和二进制代码作为输入,以代码相似性评价作为输出,依次设计并实现数据集构造及预处理模块,基于LLVM IR的数据流图和控制流图构造模块,基于LLVM IR的词嵌入训练模型,以及代码相似性比对模块。
其他文献
辐射源个体识别技术(Specific Emitter Identification,SEI)通过提取信号中蕴含的可以表现辐射源硬件特性的细微畸变来实现对某一特定发射设备的识别。其识别过程不需要对内涵信息进行解译和理解,在无线安全、自组织网、军事目标识别等领域得到了应用。在实际应用中,存在进行跨接收机SEI的需求,即利用多个接收机的接收数据实现对发射设备的识别,例如对广域运动辐射源的识别和多平台协同
波达方向(Direction-of-Arrial,DOA)估计技术是5G与物联网相融合的关键技术之一,超分辨子空间类DOA估计算法实现了较优估计性能,但由于均匀阵列存在孔径较小、阵元间互耦误差较大、阵列分辨力较低等不足,其性能仍有待提高。互质阵列作为一种新型的稀疏阵列,具有等阵元数时阵列孔径大、等孔径时阵元开销数少、阵元互耦误差小、高分辨力等优势,能够获得更优异的阵列信号处理增益,因此结合互质阵列
近些年,语音识别技术随着深度学习的发展再度兴起并进入新的发展阶段。在近场声学环境下,自动语音识别取得了超人的识别准确率。然而,在实际应用中,拾取语音通常包含噪声、混响、回声、人声等干扰因素,使得识别性能严重下降。与近场声学环境相对应,远场声学环境是指声源与接收器之间距离为1m到10m的声学环境,囊括了智能音响、可穿戴设备和助听器等大部分语音识别系统的实际应用场景。远场语音识别技术可以提升在复杂声学
Stencil是一类在科学计算和工程应用中常见的计算模式,其计算和访存开销随规模增大呈线性增长,适合在高性能计算机上并行执行。我国自主研发设计的“神威·太湖之光”由国产SW26010众核处理器搭载而成,是世界上首台性能超过100 Pflop/s的超级计算机。为充分发挥国产超级计算机在科学应用性能加速中的作用,针对Stencil计算的性能优化研究十分重要。然而,Stencil计算在国产异构众核处理器
当前,信号处理领域实时性要求越来越高,采用CPU+GPU架构的高性能处理平台逐渐在信号处理领域受到重视。为了有效发挥平台内部CPU和GPU计算资源的效率,需要任务调度算法与平台的硬件特点相匹配。然而对于CPU+GPU异构信号处理平台,传统调度算法由于CPU+GPU架构的特殊性,无法发挥优势,甚至造成负面影响。课题由此研究改进了适合于CPU+GPU异构信号处理平台的任务调度决策与方法,实现了对平台多
水声通信信号的盲检测与调制识别是非合作接收条件下水声通信信号信息恢复的重要环节,对海洋资源的开发利用以及提升水下侦察预警能力等具有重要意义。传统的基于特征统计量的水声通信信号盲检测与调制识别方法在水声多途信道和复杂分布噪声环境下往往不够稳健,而深度学习方法能够自动提取深层特征并分类,有效降低了对人工领域知识的依赖。但是,该类方法往往要求大量来自待测目标信道条件下的数据对网络进行训练,在非合作接收条
卫星通信具有覆盖范围广、不受地理条件限制、不易遭到破坏、可承载业务种类多等优点,在应急通信中具有广泛的应用;而不同应用场景往往需要不同的传输速率以承载差异化的服务,通信设备如果能够支持多速率传输和多调制方式的在线切换,将会使系统更具有通用性;TDMA被广泛应用于卫星通信中,其具有单载频复用、无互调干扰、吞吐量高等优点,非常适合处理突发业务。因此本文拟设计一套支持多调制方式和多速率传输的TDMA系统
互联网上丰富的开源代码和第三方组件能够协助软件开发者快速高效地完成开发任务,同时极大地解放了生产力和创造力。正因如此,第三方代码在软件工程中被广泛地使用,甚至无处不在。在很多情况下,即便无法获得软件的源代码或缺少版权声明,我们也想了解软件中第三方代码的复用情况,进而实现知识产权保护和脆弱代码监控等重要应用,二进制代码相似性检测就是为了完成这类任务。本文通过对现有工作的研究发现,由于突破了传统方法在
2020年国家信息安全漏洞共享平台(China National Vulnerability Database,CNVD)所披露的数据显示,当前互联网环境中Web应用类型漏洞占总体漏洞数量的26.5%,可见互联网环境中的Web应用程序面临着极大的安全威胁。代码注入攻击与XSS(Cross Site Scripting)攻击是目前Web应用程序面临的主要威胁,针对此类攻击的传统防御手段,存在过滤规则
代码复用极大提高软件开发效率的同时可能带来一定的安全风险,如果被重用的代码片段中包含漏洞,则所有在此基础上构建的软件系统都会受到影响,因此漏洞检测一直都是软件安全领域研究的重要问题。但是,对于大多数商业软件和设备的固件镜像无法获得源代码,此外随着物联网设备的普及,越来越多的程序被移植到不同体系架构的平台上运行。因此针对跨平台二进制漏洞的检测问题日益成为该领域研究的重点。二进制代码相似性检测用于度量