徐玄骥,董帅克,张智斌
(1.昆明理工大学,云南 昆明 650600;2.蚂蚁科技集团股份有限公司,浙江 杭州 310000)
代码对于普通开发者而言是非常重要的知识产权。为了保护代码资源,防止其被随意剽窃,开发者通常会使用代码混淆这一技术。然而,代码混淆无异于一把双刃剑,虽然能有效防止开发者的代码被恶意使用,但也极大程度上增加了安全分析师的分析成本。此外,恶意软件开发者还可以利用代码混淆来隐藏自己的真实意图,从而逃脱自动分析工具的扫描。与传统领域的应用相比,因为Java 语言天生的易于逆向的特征,代码混淆技术对于安卓(Android)应用具有更重要的意义。
Android 操作系统是使用人数最多的移动操作系统。统计信息[1]显示,截至2020 年12 月,谷歌官方应用程序商店(Google Play)共有超过350 万款应用可供下载,月平均下载人次超过500 万。因此,对Android 应用的代码混淆技术使用情况进行调研具有很重要的意义。一方面,开发者可以了解到目前主流的代码混淆技术,并判断是否要为自己的应用添加相应的保护。另一方面,安全分析师可以了解到不同种类的应用在代码混淆技术的使用方式上的异同,从而设计出更好的代码分析 工具。
目前,学术界已经有部分针对Android 代码混淆机制的研究。文献[2]提出了针对Dalvik 字节码的混淆方法,并针对市面上主流的反病毒软件进行了测试,观察其对混淆的抵抗能力。文献[3]提出了一种开源的黑盒混淆工具,并提供了包括重签名、随机清单、重命名等多种混淆方法,从而可以帮助开发者方便快捷地为应用添加代码混淆。……