论文部分内容阅读
在Android app源代码加固与保护领域,相较于Android Java层代码混淆保护,针对Android本地层(Android Native)代码的混淆保护是一种应用范围更广、分析难度更大的防护方式。Android本地层自身可用的混淆器和混淆方法的多样性,导致了安全分析人员逆向分析的难度和开销的增加。因此,如何能够从Android本地层混淆样本中正确识别出所使用的混淆器和混淆方法,既能更好地辅助安全分析人员逆向工作的开展,有利于逆向工具的裁剪和优化,也能促进混淆算法的更新,并进一步提升混淆算法的有效性和安全性。目前已有的各种利用机器学习针对Android app的反混淆主要针对于易分析的Java层,对于逆向难度更高、恶意负载聚集得更多的Android本地层,由于混淆变换的复杂性,相关的分析和研究还并不够多。本文以Android本地层原生程序为切入点,通过逆向工程对Android本地层中的混淆技术进行研究,并借鉴一些经典的机器学习算法,结合Android本地层的特殊性进行考虑,提出了一种Android本地层混淆程序识别方法ANRec来识别出其中所使用的混淆器和混淆方法。该方法主要包括以下几个方面:(1)针对Android本地层混淆样本的难获得问题,本文并不采用传统的样本获取思路,即先爬取大量apk,再逆向分析判别所用的混淆器和混淆方法的方式,而是采用本文所设计的Android本地层混淆样本生成器直接有目的性地生成不同混淆样本来进行研究。(2)为了更好地对Android本地层混淆程序所使用的混淆器和混淆方法进行分类和识别,本文首先通过逆向工程对不同混淆器和不同混淆方法所生成的样本进行处理,以求了解其内部工作原理,并寻得一些具有信息性的特征。(3)对于不同混淆器的分类和识别研究,本文根据之前逆向工程所研究出的混淆器相关工作原理,设计了一种基于图神经网络的Android本地层混淆程序的混淆器分类与识别方法。(4)对于不同混淆方法的分类和识别研究,提出了文本化的特征提取方法,分别从静态和动态反汇编文件中提取相应的词频逆文本频率特征,并使用经典的机器学习算法进行分类器训练。(5)设计并实现了基于ANRec方法的原型系统,并通过实验进行分析评估。实验结果表明两种不同的分类模型对Android本地层混淆样本都具有较好的识别效果,并基本上能够准确预测和识别出所使用的混淆器和混淆方法。