论文部分内容阅读
安卓系统自2007年11月问世以来,已成为最热门的移动开发平台之一,基于此平台的应用软件数目快速增长。但随着移动市场的快速发展,各类应用安全问题也层出不穷,其中安卓应用的二次打包、逆向破解等问题尤为突出,严重威胁了开发者的合法权益和用户的信息财产安全。因此,对安卓应用加固的研究是非常有必要的。DEX是APK(即AndroidPackage,安卓应用安装包)中的可执行文件,它很容易被反编译成易读性很强的Java代码。对于此,开发者为了防止应用被他人逆向破解,一般会采用基于动态加载机制和函数挂钩技术加壳保护DEX,虽然此种技术能给原有应用加上一层保护壳,但仍然有方式对其脱壳破解。本文针对上述问题,对安卓应用加固的相关技术进行研究。首先利用DEX重构技术分析并验证DEX加壳所存在的不足,然后设计并实现一套基于DEX虚拟保护的方案对应用进行加固。本论文的主要工作有:首先从安卓系统架构出发,分析了安卓应用的运行机制和所面临的威胁,这些威胁包括:二次打包、逆向破解、注入攻击,并分析了DEX文件结构以及安卓应用在运行时Dalvik虚拟机解析DEX的方式;然后利用DEX重构技术和类主动加载机制对加壳应用进行脱壳破解。在此基础上,针对基于动态加载加壳技术的不足,设计并实现一个针对关键指令进行虚拟保护的加固方案。该方案采用自定义虚拟机的形式,对字符串赋值指令、数据运算指令、方法调用指令进行替换,并且运用加密算法将这些指令加密之后存放在本地,然后在SO文件中自定义虚拟机对加密指令解密并解析。本论文通过上述的研究工作,不仅验证了一般加壳技术所存在的问题,还完成了对DEX进行虚拟保护的研究与实现。