摘要
代码嵌入利用神经网络模型将二进制函数的代码表示转化为向量,在漏洞搜索等应用中展现了优势。现有的方法将函数表示为汇编指令序列、控制流图的拓扑结构或若干路径,都没有克服不同编译环境导致控制流图结构变化的干扰。为此,设计了基于基本块树(Basic Block Tree, BBT)的代码表示以及构建了对应的代码嵌入模型BBTree。首先,二进制函数被表示为一系列BBT,每个BBT被处理为指令序列;其次,BBTree利用LSTM和Bi-GRU将基于BBT的代码表示转化为向量;最后,通过计算向量间的距离去高效衡量对应函数的相似性。在代码搜索中,BBTree的平均准确率比主流工具提升了24.8%;在漏洞搜索中,BBTree的平均召回率比主流工具提升了26.1%。
- 单位