论文部分内容阅读
Android平台的开源性和可扩展性导致各种移动应用呈现爆发式的增长,出于功能与效率的考虑,使用native代码开发关键功能也变得越发普遍。但是随着目前逆向分析技术和攻击工具的不断发展,针对本地代码的各种恶意攻击变得越发频繁,代码安全性面临严峻的威胁。尽管Android系统针对其系统架构的各个层次提供了独特的安全机制,而且目前也存在不少针对Android平台应用的保护技术,但是如何提升应用软件的本地代码的安全性仍然是一个亟待解决的问题。本文针对Android应用本地代码的安全性进行研究,分析本地代码可能面临的安全威胁,针对传统代码保护方案的缺失,提出了一种通过代码运行时实时检测控制流完整性的本地代码保护方案,设计并实现了针对Android本地代码的加固框架,基于控制流完整性为代码安全性提供保障。此外,本文对现有本地代码保护方案的安全性进行分析,提出了一套基于逆向工程的代码安全性评估方案,为开发者提供一些参考和安全建议。论文的主要工作及成果如下:1、分析当前Android应用中本地代码面临的威胁和保护机制。从逆向攻击者的角度出发,对本地代码面临的攻击手段进行分析,以便于我们归纳如何防范这些威胁,提出更好的缓解方案。此外,我们分析当前针对Android应用代码保护采用的常见技术方案,对其具体的保护流程进行阐述,并指出其不足。2、对本地代码的函数调用过程进行分析。本文在对本地代码中函数调用过程的控制流变化进行研究后,提取其中的控制流特征用于后续的完整性校验,将控制流完整性的概念应用于Android的本地代码保护。3、结合当前针对控制流完整性的研究,针对Android平台ARM架构的特点,针对本地代码提出一种函数级别的控制流完整性保护方案。本文的研究角度相对传统方案更细粒度,通过对本地代码中关键函数的调用过程执行完整性校验机制,阻止攻击者对native层关键代码段的利用与篡改。4、针对Android本地代码提出一个安全性评估方案。基于攻击者的视角,针对本地代码提出一种面向逆向工程的保护技术的有效性评估方案,结合理论分析和逆向攻击技术,为本地代码的建立攻击模型并对其面临的风险进行评级,量化保护强度,为开发者提供一些建议。