基于基本块签名和跳转关系的二进制文件比对技(4)

时间:2025-04-21

1354

清华大学学报(自然科学版)2011,51(10)

S file= (F sim[i] F val[i])

F val[i] 100%

(0 i N1).(5)

其中:F sim[i]是样本文件中每个函数的最大相似度,F val[i]是该函数的权重,S file为文件整体相似度。

早期的二进制比对算法大多数忽视函数之间的个体性差异,将所有的函数无差别处理,仅仅对函数个数进行统计。这种做法存在很大的偏差,不同的基本块、函数之间差异很大。为了体现不同函数之间的差异,引入函数权重这一概念,用于表示函数在当前文件中所占的 比重 。函数权重计算公式如下:

F val=F2nod+F2edg+F2call,(6)其中:F2nod、F2edg、F2call分别是函数的内部基本块数量,内部基本块跳转数量和内部子调用数量。

2 试验结果及分析

由于应用于软件抄袭检测的二进制文件同源性比对工具的稀缺,本文把自主研发的BinCompar e 工具与文[1]中的针对源码检测的CodeCom pare工具以及Patchdiff2、BinDiff2等二进制补丁比对工具进行比较。

2.1 BinCompare与源码比对工具比较

1)针对源码常见抄袭情况的检测

针对源代码中语句顺序变换、变量名变换、变量顺序变换、变量类型变换、函数名变换等情况,各构建一组测试用例。然后用源码比对工具CodeCom pare得出每组测试用例的源码语法比对相似度、源码文本比对相似度;用BinCompare得出每组测试用例编译生成的二进制文件比对的相似度。例如针对源代码中语句顺序变化的情况部分测试用例如图2。

lo ng f1,f2; int i;

int i;long f1,f2;

f1=f2=1;f1=f2=1;

图2 源代码中语句顺序变化情况的部分测试用例

针对上述常见抄袭情况,采用源码比对工具CodeCom pare的语法比对和文本比对技术以及采用二进制比对工具BinCom pare,对文件的相似度测试结果如表1所示。

表1 针对不同测试用例的文件相似度比对结果

测试用例源码语法比对/%源码文本比对/%二进制文件比对/%语句顺序变化10085.7100

变量名变换10065.8100

变量顺序变换10094.199.7

变量类型变换10095.3100

函数名变换10080.899.7

表1的测试结果表明:针对上述源码常见抄袭情况,二进制比对工具BinCompare与源码比对工具CodeCompare的源码语法比对技术相比,两者检测的文件相似度基本相同。与Co deCompar e的源码文本比对技术相比,二进制比对工具BinCompar e 的准确度更高。

2)针对语义不变,源码表现形式变化的检测

软件抄袭行为中,包括一些通过改变源代码的语句形式,从而实现语义不变的抄袭手段。例如,将for循环用w hile循环替换;又如,在源码for 循环中增加冗余代码,从而改变语法和文本特征,但不改变语义。针对语义不变,源码表现形式变化的情况,源码比对工具从语法和文本的相似性匹配角度进行分析,因此难以进行准确的检测。而由于编译器优化原理,针对语义不变、源码表现形式变化的情况,二进制文件比对技术可以进行准确的比对。本文以for-w hile替换以及在源码for 循环中增加冗余代码为例,对二进制文件比对技术进行检测。

Whiletest.cpp和fortest.cpp是2个具有相同功能的源码文件;不同之处在于,在w hiletest.cpp 中,w hile循环代替了fortest.cpp中的具有相同功能的for循环,如图3所示,采用源码比对工具CodeCom pare和二进制文件比对工具BinCompare 进行文件相似度测试,其相似度测试结果如表2所示。

基于基本块签名和跳转关系的二进制文件比对技(4).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219