论文部分内容阅读
随着科学技术和移动网络的发展,手机已经成为了人们日常生活必不可少的一部分,而Android手机更是以其开源和廉价占据了广大的手机市场,其市场占比达到了86%。Android应用程序在人们日常生活中发挥巨大的作用,但是随之而来的也有更多的恶意Android应用逆向人员,其通过逆向分析及动态调试等逆向手段破解软件开发人员的正版Android应用程序,通过修改和复用正版应用程序代码为自己谋取私利,严重影响了正版软件开发人员的利益,侵害了用户的个人隐私,因此Android应用程序的保护就变得十分重要。论文在研究了Android应用程序的结构和各种常见应用保护方法的基础上,提出了一套可以应对大部分攻击手段的应用程序保护方案。论文主要工作包括:(1)设计并实现了ARM体系指令集下的Hook功能,可以在程序的正常执行过程中,在任意地址进行Hook功能注入额外的指令,对程序进行修改或者其他操作;(2)设计了对Dex文件中的方法和So动态库中的函数进行基于Hook功能的文件自修改保护方案,并且使用自修改状态机加密算法对Hook中解密功能实现保护;(3)提出了对Dex文件中资源id和字符串进行加密的保护方案,配合资源混淆实现对资源文件到代码映射的双重保护;(4)增加了反调试和签名校验模块,并利用Hook自修改方案对这两个模块进行保护。相比传统的加固方案,基于Hook的文件自修改方案加密粒度更小,加密精度更准确,利用Hook功能可以大大延迟加密程序在内存中的解密时间,增加了密文在内存中存在的时间,并且实现了So动态库中函数运行前解密运行后加密,所以任何时刻So动态库都不是完整的明文。论文在加密资源id处使用随机密钥,杜绝了逆向人员对文件进行全局搜索资源id的破解方法。论文利用基于Hook的自修改方案对反调试模块和签名校验模块进行保护,防止了Android逆向人员对这两个防御模块的破坏,极大地增加了逆向成本和破解难度。