Page 321 - 《软件学报》2024年第6期
P. 321

徐建 等: LibPass: 基于包结构和签名的第三方库检测方法                                                2897


                                        表 6    LibPass 方法中是否应用主模块识别的实验结果

                                                   性能 (%)                 平均检测时间 (s)
                           是否集成主模块识别
                                               recall    FPR      主模块识别时间         两阶段检测时间
                                  √            100       11.39         1.48           15.47
                                  ×            100       11.38         -              23.68

                                                                                                 δ d  ”, 该阈
                    最后, 讨论主模块识别中涉及的阈值对于检测结果的影响. LibPass 仅涉及一个阈值“依赖强度阈值
                 值出现在主模块识别方法中, 用于判定两个子包是否存在依赖关系. 实验中将                         LibPass 主模块识别模块中使用的
                            δ d  设置为  0.01, 一个比较小的值, 意味着确保任意两个子包容易存在依赖关系. 从表                  5  和表  6  中关
                 依赖强度阈值
                 于主模块对    LibPass 的贡献分析结果可知, 主模块识别对           LibPass 的检测性能无影响, 对于检测效率有一定影响,
                 主模块识别仅是一个用于优化检测效率的可选组件. 因此, 依赖强度阈值对于                         TPL  检测性能是没有影响的, 故这
                 里不再进行阈值变化对检测结果的影响分析.
                  3.4.2    基于包结构树的检测性能和效率分析
                    本节对   LibPass 中基于包结构树的检测组件进行评价, 特别是评估其对于                  LibPass 解决方案效率方面的贡献.
                 实验在基准数据集       GTB-2  进行, 结果如表   7  所示. 从表中可以看出, 是否应用基于包结构树的检测方法对性能指
                 标  recall 和  FPR  也没有影响, 但是应用后的平均检测时间从         525.6 s 下降到  15.47 s, 节省  97.05%  的检测时间. 这
                 同样表明基于包结构树的检测组件的引入对效率提升有显著影响, 但对性能没有影响. 效率提升的原因在于基于
                 包结构树的检测方法提供了包级别匹配快速识别候选第三方库, 而不需要更耗时的类级别检测.

                                  表 7    LibPass 方法中是否集成基于包结构树的检测方法的实验结果

                                                性能 (%)                    平均检测时间 (s)
                     是否集成基于包结构树的检测
                                             recall   FPR     基于包结构树的       基于多级签名的        两者之和
                               ×              100     11.38        -            525.60      525.60
                               √              100     11.39       2.74          12.73        15.47
                    进一步地, 效率提升的空间取决于待分析应用程序是否经过混淆. 为了估计效率提升的空间, 从豌豆荚、
                                                个
                                                        应用, 对应用的混淆情况进行了统计分析, 结果如表
                 Google Store、F-Droid  上收集约  16 900 标志符混淆                                         所示, 从
                                                  Android
                                                                                                 8
                 表中可以看出, 83.46%    的  APK  没有混淆, 这些   APK  包含的  ARP  个数占比   92.63%, 剩余的  7.37% ARP  中仅有
                 1.77%  应用了包重组混淆技术会导致基于包结构树的检测方法失效, 因此仅需对                       1.77%  的  ARP  执行基于多级签
                 名的相似性比较, 而其他的        98.23%  的  ARP  可以通过基于包结构树的检测方法能对抗标识符混淆, 快速过滤到绝
                 大多数   TPL. 实验中统计基于包结构树的检测方法获得候选               TPL  个数平均值约为    70, 而  TPL  本地库规模为  140 000
                 个, 因此对于   98.23%  的  ARP  检测效率提升了   2 000  倍. 从上述分析结果可以得出基于包结构树的快速检测方法
                 对于  LibPass 的检测效率提升有显著贡献, 即使        TPL  规模的增大也不会对       LibPass 的检测效率带来不良影响.

                                                  表 8    收集的  APP  混淆情况

                             是否混淆             混淆类型             APK数 (占比(%))      ARP数 (占比(%))
                                ×                -              14 104 (83.46)    122 014 (92.63)
                                                                 1 644 (9.72)      7 389 (5.60)
                                √
                                          标志符混淆 & 包重组            1 152 (6.82)      2 325 (1.77)

                  3.4.3    检测能力评价
                    本节在   GTB-1  基准数据集上完成对       LibPass 的检测能力评价, 并与其他第三方库检测方法进行了对比分析,
                 实验结果如表     9  所示. 从表中可以看出, LibPass 的   precision  为  93.07%, 比最好的  LibD  低  0.61%; LibPass 的  recall
                 略低于   LibPecker 和  LibID-A, 分别低了  3.45%  和  0.09%; LibPass 的综合指标  F1-score 上显著优于其他对比方法,
                 比排名第   2  的  LibID-A  的对应值高  13.71%; 这表明  LibPass 的总体性能优于其他对比方法.
   316   317   318   319   320   321   322   323   324   325   326