基于指令虚拟化技术的移动应用加固技术研究(无全文)

作者:吴建辉;杨素梅;刘伟;匡琮;王鹏; 刊名:电子世界 上传者:

抱歉,该篇全文还没有人上传哦!我要 上传, 我要 求助

【摘要】针对虚拟化技术在移动加固方面的应用,本文采用一种基于指令虚拟化技术方法来实现移动应用的加固,该方法主要通过在移动应用程序中添加一条新的dalvik指令码,重新构造解释器的函数代码的方式来实现指令虚拟化,并重点研究了指令集虚拟化的具体实现方法。通过对指令虚拟化技术的研究可以很好的起到移动应用程序加固的作用,有效的防止内存中程序代码外露的可能性,并且对后续的静动态的解析也有着比较好的抵御效果。

全文阅读

1前言为了避免移动应用中用户账号和密码被窃取、交易数据被破解以及篡改、预防钓鱼欺诈的攻击、以及捆绑流氓、恶意的应用和游戏被外挂摧毁等情况出现,越来越多的开发者不得不投入更多的时间和精力来考虑通信安全、代码层面安全等方面的问题[1]。但在移动应用平台上,攻和防是具有不对等性的,防御者往往没有攻击者的权限等级高。随着现代技术的不断发展,有关移动应用中的逆向分析也变得越发容易,因此有很多网络安全公司生产了许多加壳服务,虽说在增添加壳措施之后,在对抗静态分析方面取得了不错的效果,但在应用运行后会使源码暴露在内存中,从而让攻击者能够轻易的获取窗口期dump内存,并且在进行一些必要的修复措施,就能在IDA里面进行阅读分析。将移动应用中的代码虚拟化后,就可以有效的防止上述情况的发生,即使被dump,IDA也不能获取被虚拟化加固的代码,因为程序运行时并不会将虚拟指令集还原为原生指令集。下面我们主要通过有关移动应用虚拟化加固的框架以及功能、虚拟化加固指令的实现这两个方面进行重点分析。2移动应用虚拟化加固框架和功能移动虚拟化框架是由服务器端和移动端两部分组成的,在功能上也可以大致化为分级存储管理、移动应用的Run Time以及离线的静态模块分析三大部分。图2.1移动应用虚拟化框架设计分级存储管理(也称为数据的迁移)主要是描述服务器端与移动设备端之间的数据转移过程以及有限网络、Wi Fi等媒介的传输。当移动设备端的应用适用于迁移,或者当迁移到服务器端的函数执行结束需要返回时时,由该部分负责两者之间的数据传输以及附带的数据校验、安全等功能。移动应用的Run Time有移动端和服务端的dalvik虚拟机两部分组成。当应用程序在移动设备中被成功安装后,就拥有了执行的前提条件,从使用者操作移动终端设备执行某个程序开始,我们所用到的上述整个框架如图2.1就开始发挥功效了:首先,当移动应用启动时,移动系统就会自动加载已经分析好的离线文件存入内存中,把它作为一个输入用于动态分析;而后,当应用程序开始运行时,首先判断该程序是否属于首次运行,如果属于就开始执行训练,若不是就开始执行迁移操作,移动到服务端即可;最后,如果是进行训练执行操作的话,就得依据由动态分析所得出的阈值设置参数和程序运行时间来设定迁移操作的标志位,以供后续移动应用程序的多次使用。最终实现移动使用者的应用程序毫不保留的迁移到云端去进行运行,已加速运行的效率。离线的静态分析主要的工作是对移动程序的apk文件进行的逆向编译解析,首先,要获取该移动应用的一个相关的关系调用图,其次,依据该关系调用图用以区别与硬件相关与否的应用程序,并且把不相关的那部分程序所对应的消息保存到partition文件中,从而可以依据该文件的相应记录,判定出哪部分应用程序中的哪些函数在移动终端运行,哪些应用函数有可能转移到服务器端运行。3移动应用的虚拟化加固指令的实现基于上述的理论介绍,我们可以清晰的发现有两个方面是必须的也是最为关键的,一个方面是虚拟指令集,另一个方面是虚拟机,对于虚拟指令集,我们可以暂时将一些带有opcode的指令集进行变形,生成相关数据直接回填到原文件中,已达到静态分析的目的。根据指令集的相关资料介绍,我们可以知道每一条指令主要由两部分组成并决定的:一是指令的格式标识,二是位描述;以指令B|A|op|CCCC G|F|E|D为例,其中各项所代表的意思如下:字母B代表参数的个数,字母C代表偏移位值,也就是方法的索引值,而字母A、D、E、F、G等则代表寄存器的一些参数,op为操作码,代表运行的是哪一种操作。当使用者的移动应用运行后,

参考文献

引证文献

问答

我要提问