BCSD论文阅读
基本块
Improving Cross-Platform Binary Analysis using Representation Learning via Graph Alignment
Patch Based Vulnerability Matching for Binary Programs
工具名称:BinXray
实验
比较的工具:
Semantics-Based Obfuscation-Resilient Binary Code Similarity Comparison with Applications to Software and Algorithm Plagiarism Detection
SIGMADIFF: Semantics-Aware Deep Graph Matching for Pseudocode Diffing
工具名称:Sigmadiff
比较的工具:diaphora(目前已知仅存的伪代码diffing工具)、deepbindiff(仅存的二进制基本块级别diffing)
思想:用IR表示的过程间程序依赖图(IPDG)、DGMC匹配IPDG的结点
IR表示的优点:简洁、更丰富的语义信息、token level的细粒度、跨架构
挑战:在strip的文件里需要推断高级的特征,并可能引入噪声。
流敏感、call-site敏感的lightweight symbolic analysis提取IR语义信息:
motivating:在伪代码里找到语义等价的token级变化,忽略句法的改变。伪码层面的改变带来的挑战(感觉2、3主要还是编译的问题)1.变量重命名(但是在cots文件里应该没有这个问题?);2.表达式合并或拆分;3.控制流变化。作者在此处进行了实验,表明伪码的diffing不适合直接使用源码diffing技术
Step1:预处理。构造IPDG,结点为IR语句,边(两种)表示控制流和数据流;语义提取,过程内符号执行算法,得到结点的特征,具体算法建议看论文
Step2: 伪代码diffing