Binary code similarity detection(BCSD)

二进制代码相似性检测(BCSD)用于在缺乏源代码时查找漏洞和抄袭,通过动态和静态分析方法进行。动态分析关注运行时的函数特征,而静态分析则从汇编代码中提取特征,但可能产生误报。跨平台BCSD利用不同架构间的语意相似性,而AST提供语义信息,帮助识别不同体系中相似函数。
摘要由CSDN通过智能技术生成

为什么要有BCSD:

binary code:二进制代码,是给计算机看的computer language。

source code:源代码,就是人类可读的代码。我们平时说的C++,Java之类的都是source code

如果有source code的话,那肯定是分析source code最好看懂。但就是因为很多时候我们拿不到source code,能拿到手的就只有binary code。比如third party libraries。 所以就会想办法分析binary code。但人又binary code人看不懂,所以想要分析就要先转换成人能看懂的形式,which is source code的形式。

BCSD就是用已知的一个vulnerability function,去找类似漏洞(homologous vulnerable functions)。 除了找安全漏洞以外,BCSD还用来做plagiarism detection, malware detection and patch analysis. 

BCSD的两种方法

1. dynamic analysis-based method 动态分析

2. static analysis-based method 静态分析

动态分析是指在代码运行的过程中来抓取一些函数特征,比如I/O pairs和system calls。动态分析有些情况下很难实现,比如跑一些很大的程序需要特定的设备和仿真固件(emulating firmware)。

静态分析主要从汇编代码里面提取函数特征。比如比较两段汇编代码。静态分析方法虽然很快并且适合大规模的代码分析,但会因为缺乏语意信息(semantic information)而产生很多false positive。

cross-pla

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值