[发明专利]基于双重ARM指令虚拟的Android应用程序保护方法有效
申请号: | 201710684515.1 | 申请日: | 2017-08-11 |
公开(公告)号: | CN107577925B | 公开(公告)日: | 2019-07-05 |
发明(设计)人: | 汤战勇;赵贝贝;房鼎益;李振;陈晓江;龚晓庆;陈峰 | 申请(专利权)人: | 西北大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 西安恒泰知识产权代理事务所 61216 | 代理人: | 黄小梧 |
地址: | 710069 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 双重 arm 指令 虚拟 android 应用程序 保护 方法 | ||
本发明公开了基于双重ARM指令虚拟的Android应用程序保护方法,包括:查找so文件中需要进行保护的关键代码段,包括需要VOP保护的关键代码段和需要VMP保护的关键代码段;对需要VOP保护的关键代码段进行Hex抽取和映射虚拟,形成VOP虚拟机so文件;对需要VOP保护的关键代码段加密处理,对加密后的VOP关键代码段进行Hook替换使VOP虚拟机so文件中的虚拟指令码替换加密后的VOP关键代码段所对应的so文件中被加密的代码;对需要VMP保护的关键代码段进行指令虚拟,形成具有虚拟节的保护后的VMP虚拟机so文件;使VMP虚拟机so文件中的驱动数据替换关键代码段所对应的so文件中的代码。本发明结合两种不同的虚拟机保护思想,增加了逆向者的攻击成本以及保护后程序的复杂性。
技术领域
本发明属于Android应用程序中SO(shared object的缩写)文件加固的技术领域,具体涉及基于双重ARM指令虚拟的Android应用程序保护方法。
背景技术
近年来,随着Android智能设备的普及和对应设备上面的应用程序数量的日益增长,越来越多的攻击者和不发分子将关注点集中于移动平台上的应用程序,因此随之而来的是逆向分析和二次打包的现象愈发严重,给程序的开发厂商和使用者带来了巨大的经济利益损失。
因此为了减少开发厂商的不必要的经济损失,维护使用者的合法权益,急需对APP(application的简写)进行有效的保护加固。目前市场上对APP的保护主要是在对于DEX(APK中的classes.dex的简称,android应用程序下的可执行文件)的加固,并且在目前最新DEX的加固技术采用了虚拟化技术后,整个对虚拟化结果解释的程序将被转移到本地层,因此对于本地层SO文件的保护显得越来越重要。然而,目前对于SO文件的保护主要还是处于加壳和混淆阶段,加壳主要使用UPX加壳(the Ultimate Packer for eXecutables)或者通过重写loader的方式进行加壳保护,加壳程序能够阻止一定的静态分析,但是不能有效地防动态调试分析,攻击者如果比较了解整个ELF linker的加载过程,就能准确地找到脱壳的时机点进行脱壳,也就是说加壳不能从本质上来应对动态分析和有经验的逆向攻击者。另外一种针对于so文件的常见保护方式便是混淆,目前混淆主要是采用基于源码的OLLVM混淆,虽然OLLVM混淆在表面看起来增大了控制流的复杂度,但是过多的控制流会影响程序本身的性能,并且基于源码有很大的局限性,很多时候是在二进制的基础上进行保护的,操作性比较弱。虽然目前有了对于SO文件的虚拟化保护技术,单从虚拟化保护后的效果来看这种方式确实能够增大动态分析的成本,但是在手机平板这样一个设备前提上,这种方式将引进很大的性能开销,不具有通用性和可扩展性,造成这种方式至今为止没有应用到市场。因此急需一种在保护后程序性能开销不大的情况下的既能够防止静态分析又能够广泛防止动态分析的应用程序保护方法。
发明内容
针对上述对于本地层文件保护存在不足的情况,本文提出并设计一个基于双重ARM(Advanced Reduced Instruction Set Computer Machines)指令虚拟的Android应用程序保护方法,其核心思想是通过基于栈的ARM指令虚拟化保护技术和指令编译虚拟化保护技术的结合来提升保护后程序的安全性并同时保证程序的执行效率。ARM指令虚拟机保护利用代码虚拟化技术,将应用程序的原始指令(这里是ARM指令)转换成一种自定义的虚拟指令,在程序执行时,这些虚拟指令被一个虚拟解释器逐条解释执行,从而实现原始指令的功能。考虑到VMP(virtual machine protection,指代ARM指令虚拟化保护技术)保护后的指令在手机移动设备上所带来的性能损耗,其中部分指令通过VOP(virtualopcodeprotection,指代指令编译虚拟化保护技术)进行编译虚拟,这样在多重虚拟保护后的本地层文件既能够在牺牲性能和开销不大的情况下有效地保护Android应用程序本地层文件中的关键代码,增加保护后文件的逆向成本,同时又能够对DEX虚拟机中的解释器起到间接的保护作用。
为达到上述目的,本发明采用如下技术方案:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北大学,未经西北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710684515.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:自动扶梯导轨连接处的加固结构
- 下一篇:可调式扶手带导向装置