[发明专利]一种基于虚拟机指令修改的Android应用加固系统及方法在审
申请号: | 201710928499.6 | 申请日: | 2017-10-09 |
公开(公告)号: | CN107729725A | 公开(公告)日: | 2018-02-23 |
发明(设计)人: | 吕小亮;刘苇;祁龙云;魏兴慎;宋子锋;韩勇;杨维永;黄益彬 | 申请(专利权)人: | 南京南瑞集团公司;南京南瑞信息通信科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F8/41;G06F8/53;G06F9/455 |
代理公司: | 南京纵横知识产权代理有限公司32224 | 代理人: | 董建林 |
地址: | 210003 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 虚拟机 指令 修改 android 应用 加固 系统 方法 | ||
1.一种基于虚拟机指令修改的Android应用加固系统,其特征是,包括依次相连的应用解析模块、安全加固模块和重新编译模块;
应用解析模块,对待加固的Android应用程序APK反编译得到Smali文件,遍历Smali文件选取需要加固的方法名;
安全加固模块包括依次相连的指令抽取子模块、指令转换子模块和字节码解析子模块;
其中指令抽取子模块,根据应用解析模块中选取的需要加固的方法名,从DEX文件中抽取出与方法名对应的原始Dalvik指令,并用Native方法指令替换此原始Dalvik指令;
指令转换子模块,构造指令集转换规则,根据所述指令集转换规则将上述指令抽取子模块抽取的标准Dalvik指令转换为自定义的虚拟指令;
字节码解析子模块,构造独立于标准Dalvik虚拟机的自定义虚拟机执行引擎,执行上述转换后的自定义虚拟指令集。
重新编译模块,将原Android应用程序APK中的资源文件以及经过安全加固模块处理后的文件重新打包编译成新的应用程序安装包。
2.一种基于虚拟机指令修改的Android应用加固方法,其特征是,包括以下步骤:
步骤S1,对待加固的Android应用程序APK进行反编译得到Smali文件,遍历Smali文件选取需要加固的方法名;
步骤S2,根据所选取的需要加固的方法名,从DEX方法文件中抽取出与方法名对应的原始Dalvik指令,并用Native方法指令替换此原始Dalvik指令;
步骤S3,构造指令集转换映射关系,将上述抽取的原始Dalvik指令按照上述指令集转换映射关系转换为自定义虚拟指令并保存到动态库中;
步骤S4,构造自定义虚拟机执行引擎执行上述转换后的自定义虚拟指令,并将该自定义虚拟机执行引擎保存到动态库中;
步骤S5,将原Android应用程序APK中的资源文件以及经过上述步骤处理后的文件重新打包编译成新的Android应用程序APK。
3.根据权利要求2所述的一种基于虚拟机指令修改的Android应用加固方法,其特征是,在步骤S1中,使用ApkTool对需要加固的APK利用静态分析技术反编译得到Smali文件。
4.根据权利要求2所述的一种基于虚拟机指令修改的Android应用加固方法,其特征是,在步骤S2中,从DEX方法文件中抽取出与方法名对应的原始Dalvik指令具体过程如下:
1)根据上述选取的需要加固方法名逐个匹配DEX方法列表;
2)当匹配成功后,即在DEX中找到了与上述选取的方法名,将方法中所包含的原始Dalvik指令,将这部分原始Dalvik指令抽取出来;
3)清空上述选取的方法名所对应的原始Dalvik指令,并用Native方法指令替换。
5.根据权利要求2所述的一种基于虚拟机指令修改的Android应用加固方法,其特征是,步骤S3中,自定义虚拟指令和标准Dalvik指令指令集转换映射关系如下:
1)定义字典DICT结构体,由key和value构成;key为操作数的个数,value为具体的指令;遍历标准Dalvik指令集中的每条指令,得到每条指令操作数的个数,将具有相同操作数个数的指令添加到所述DICT的同一个Key中;
2)复制所述DICT的每条指令,作为自定义的虚拟指令,并将所述自定义的虚拟指令一对一映射为所述DICT的同一个Key中的标准Dalvik指令,所述映射规则的集合即为指令集转换规则,所述自定义虚拟指令的集合即为自定义虚拟指令集。
6.根据权利要求2所述的一种基于虚拟机指令修改的Android应用加固方法,其特征是,步骤S4中构造自定义虚拟机执行引擎具体过程如下:
1)构造自定义虚拟指令操作码到对应指令处理逻辑代码所在地址的映射关系表;
2)通过PC指针获取所述被加固的方法的第一条自定义虚拟指令,每条指令都包含操作数和操作码;
3)分解所述自定义虚拟指令,获取操作码;
4)根据操作码和上述映射关系表跳转到对应的指令处理逻辑去处理;
5)执行完该条指令后,修改PC指针的值使其指向下一条自定义虚拟指令,重复这一过程,直到执行完所有指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京南瑞集团公司;南京南瑞信息通信科技有限公司,未经南京南瑞集团公司;南京南瑞信息通信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710928499.6/1.html,转载请声明来源钻瓜专利网。