Page 138 - 《软件学报》2021年第6期
P. 138

1712                                     Journal of Software  软件学报 Vol.32, No.6,  June 2021

             13.           path=findPath(tv_c.stmt,tv_d.stmt);  //前向路径搜索
             14.           if path!=null && checkOnPath(path,cleanSet)==false
             15.              cleanSet.addAll(tv_d.cleanStmts);  //添加清除语句到 cleanSet
             16.              tv_c=tv_d; i++; tv_d=tv i ;
             17.           else return false;
             18.           end if
             19.        end if
             20.     else
             21.        path=findPath(tv_c.stmt,tv_d.stmt);  //前向路径搜索
             22.       if path!=null && checkOnPath(path,cleanSet)==false
             23.           cleanSet.updateTo(tv_d.cleanStmts);  //更新 cleanSet 的清除语句
             24.           tv_c=tv_d; i++; tv_d=tv i ;
             25.        else return false;
             26.        end if
             27.     end if
             28.     end while
             29.     return true;

         4    实验及分析

             为了验证工具 FastDroid 的精度和效率,我们在多个测试集上分别对 FlowDroid-2.5               [22] 和 FastDroid 进行了
         实验及结果分析.实验使用了 FlowDroid-2.5 工具默认的参数设置,采用的机器配置是 Intel i7  CPU(4.0GHz)和
         16GB RAM,操作系统采用 Ubuntu 16.04 系统.实验工具 FlowDroid-2.5 和 FastDroid 都使用项目管理工具 Maven
         打包生成 Jar 文件,然后用 Shell 脚本运行 Jar 文件,逐一对测试集中的应用进行批处理并记录实验结果.
         4.1   测试集

             本文实验使用了 3 个测试集:(1) DroidBench-2.0     [27] ,一个专门检测 Android 应用污点分析工具精度的测试
                                  [6]
         集,该测试集是 DroidBench-1.0 的升级版,包含 119 个开源应用,应用中包含的污染流种类多样,能够有效测试
         工具能否全面地识别各类污染流;(2) MalGenome           [28] ,该测试集包含 49 种不同类型的 1 260 个 Android 恶意应用
         样本;(3)  从 Google Play 应用商店随机下载了 1 517 个较为热门的应用,应用类型包括游戏类、社交类、视频音
         频类、管理类等等,应用大小从 15KB~51MB 不等.
         4.2   实验结果及分析
             (1)  查准率(precision)和查全率(recall)
             DroidBench-2.0 测试集的应用中一共存在 113 个污染流,FlowDroid 和 FastDroid 两个工具检测污染流的正
         确数、漏报数和误报数的统计结果如表 2 所示.FlowDroid 的查准率和查全率分别为 84.7%和 73.5%,而 FastDroid
         查准率和查全率均高于 FlowDroid,分别为 93.3%和 85.8%.综合来看,FastDroid 的统计量 F-measure 为 0.89,高于
         FlowDroid 的 0.79.FastDroid 实现高精度的主要原因如下:首先,FastDroid 工具与 FlowDroid 工具一样能够支持
         流敏感、上下文敏感、域敏感及对象敏感的分析;其次,我们对 DroidBench 测试集的源码进行了深入研究,对
         FlowDroid 无法检测的一些复杂污染流的污染方式进行分析和抽象,制定了专门的特殊规则并加入到分析算法
         中.例如:FastDroid 设计了针对隐式污染流(implicit flow)的特殊污染传播规则,对于隐式污染流类型的污点分析
         FastDroid 结果明显好于 FlowDroid.由于测试集 DroidBench 的测试用例都是开源的,我们可以判断工具的检测
         结果是否准确;而对于 Google Play 和 MalGenome 两个测试集,我们很难获取应用中准确的污染流信息,因此没
         有统计这两个测试集上的查准率和查全率.
   133   134   135   136   137   138   139   140   141   142   143