摘要

针对编译优化、跨编译器、混淆等带来的二进制代码相似性识别准确率低的问题,提出并实现了一种基于用户系统调用序列的识别方案UstraceDiff。首先,基于Intel Pin框架设计了一个动态分析插装工具,动态提取二进制代码的用户系统调用序列及参数;其次,通过序列对齐获得被分析的两个二进制代码的系统调用序列的公有序列,并设计了一个有效参数表用于筛选出有效系统调用参数;最后,提出了一种计算方法,综合公有序列及有效参数对二进制代码的相似性进行评估,计算其同源度。使用Coreutils数据集在四种不同的编译条件下对UstraceDiff进行了评估。实验结果表明,相较于Bindiff、DeepBinDiff,UstraceDiff对于同源程序识别的平均准确率分别提高了8.2~63.1个百分点、34.5~73.9个百分点,对于非同源程序的区分效果也更好。