背景

作者身份识别是通过给定的代码对作者进行识别和分类的过程。 作者身份识别可用于广泛的软件领域,例如代码作者争议、抄袭检测、攻击者身份暴露。 除了遗留软件开发的固有挑战外,Android 中的框架编程和外包模式也大大增加了作者身份识别的难度。

  • 团队合作开发冲淡了不同代码作者的编程风格。
  • 第三方库的引入对作者身份识别产生负面影响。
  • Android 应用程序在编译后没有完全保留源代码的词汇和句法特征。

本文设计了一种两阶段的方法,将 Android 应用的主要代码归属于特定的开发人员。

方法论

image.png

作者身份解耦
作者将 packages 视为分析单元,并将它们划分为每个应用程序的不同模块。根据调用关系、继承关系和 ICC 连接为给定应用创建包关系图。 我们使用包聚合对作者创建的所有包进行分组,并设计语义和结构相似性来计算每对包的权重。 最后,我们利用 Louvain 模型和包之间的关联权重将包划分为模块。 主模块可以根据MainActivity所在的位置来确定。

作者身份识别
作者从应用程序的主要模块中提取三种类型的特征,并利用 TF-IDF 算法来识别这些特征的重要序列。 然后基于 word2vec 模型形成特征向量,并选择三个机器学习模型作为监督分类器来预测潜在作者。

在这项研究中,作者将包而不是类作为模块的原子单元,因为同一包下的类,尤其是具有多个级别的类,很可能是由同一作者编写的。
为了证明这一假设,作者从 F-Droid 数据集中提取了 100 个作者,并从每个作者中随机选择了一个应用程序。 然后,根据第四节的方法,进行作者身份与类粒度和包粒度的解耦。 表 I 显示了比较结果,可以看出作者身份在包粒度上的解耦比在类粒度下实现了更高的召回率、准确率和 F1 分数。 此外,它的成本仅为四分之一。
A3IDENT: A Two-phased Approach to Identify the Leading Authors of Android Apps - 图2

实验设计

数据集

A3IDENT: A Two-phased Approach to Identify the Leading Authors of Android Apps - 图3
F-Droid 是免费 Android 应用程序的开源存储库。 迄今为止,F-Droid 维护了数千个应用程序及其源代码。 我们通过其 API 总共获得了 2,296 个带有源代码的应用程序。

Benignware. 我们从 ANVA 获得了 1,672 个列入白名单的应用程序。 ANVA 是一个行业联盟,负责监控、检测和响应网络威胁。 每年,它都会发布一份经过 11 家专业安全评估机构全面审查的 Android 应用程序白名单。

Malware 从外界(包括 Google Play、ApkPure、Anzhi等)收集了 29,000 个被 VIRUSTOTAL 标记为恶意软件的 Android 应用程序。

Obfuscated Apps 我们选择了一些恶意软件样本,并通过 PROGUARD 对每个作者的 10% 作为测试集进行混淆。 PROGUARD 用于字符串混淆和代码收缩。 该数据集用于评估我们的方法对混淆的弹性。

评估

A3IDENT: A Two-phased Approach to Identify the Leading Authors of Android Apps - 图4