[发明专利]一种代码虚拟化加密方法、终端及存储介质在审
申请号: | 202010776413.4 | 申请日: | 2020-08-05 |
公开(公告)号: | CN112052459A | 公开(公告)日: | 2020-12-08 |
发明(设计)人: | 李鹏飞;冉山川 | 申请(专利权)人: | 北京智游网安科技有限公司 |
主分类号: | G06F21/60 | 分类号: | G06F21/60;G06F21/62;G06F21/53 |
代理公司: | 深圳市君胜知识产权代理事务所(普通合伙) 44268 | 代理人: | 陈专;朱阳波 |
地址: | 100000 北京市海淀区东北旺西路8*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 虚拟 加密 方法 终端 存储 介质 | ||
本发明公开了一种代码虚拟化加密方法、终端及存储介质,所述方法包括:加密时,根据DEX文件的二进制文件结构,将DEX文件的二进制文件进行解析,并生成解析结果;遍历获取DEX文件中所有方法,并根据解析结果获取对应代码段的二进制指令数据;提取所述DEX文件中所有方法的二进制指令,并把当前方法标识设置为原生方法;生成随机置换表,将所述二进制指令的操作码和操作数替换为只有自定义系统虚拟机能够识别的指令;根据被处理过的方法列表和随机置换表,生成包含所述原生方法的虚拟机解释器引擎库;完成虚拟化加密的应用在运行,运行到被虚拟化处理过的原生方法时,由系统虚拟机将执行权交给自定义虚拟机解释器执行,并返回执行结果。
技术领域
本发明涉及代码加密技术领域,尤其涉及一种代码虚拟化加密方法、终端及存储介质。
背景技术
传统的Android Java代码加密技术,在运行阶段,需要在内存中,对加密的数据进行解密,因此存在被内存DUMP(备份文件系统,转储,即把内存某一时刻的内容转存成文件)的风险。
因此,现有技术还有待于改进和发展。
发明内容
本发明的主要目的在于提供一种代码虚拟化加密方法、终端及存储介质,旨在解决现有技术中传统的Android Java代码加密技术,在运行阶段,需要在内存中,对加密的数据进行解密,因此存在被内存DUMP的风险。
为实现上述目的,本发明提供一种代码虚拟化加密方法,所述代码虚拟化加密方法包括如下步骤:
对应用进行虚拟化加密时,根据DEX文件的二进制文件结构,将所述DEX文件的二进制文件进行解析,并生成解析结果;
遍历获取所述DEX文件中所有方法,并根据所述解析结果获取对应代码段的二进制指令数据;
提取所述DEX文件中所有方法的二进制指令,并把当前方法标识设置为原生方法;
生成随机置换表,将所述二进制指令的操作码和操作数替换为只有自定义系统虚拟机能够识别的指令;
根据被处理过的方法列表和随机置换表,生成包含所述原生方法的虚拟机解释器引擎库;
完成虚拟化加密的应用在运行,运行到被虚拟化处理过的原生方法时,由系统虚拟机将执行权交给自定义虚拟机解释器执行,并返回执行结果。
可选地,所述的代码虚拟化加密方法,其中,所述代码虚拟化加密方法还包括:
提取所述DEX文件中所有方法的二进制指令后,将所述DEX文件中的指令数据清除。
可选地,所述的代码虚拟化加密方法,其中,所述代码虚拟化加密方法还包括:
根据提取的所述二进制指令的含义和长度遍历所述二进制指令,替换每条二进制指令中的指令码。
可选地,所述的代码虚拟化加密方法,其中,所述系统虚拟机为开源虚拟机,解析出的指令格式为固定公开的指令;
所述自定义虚拟机解释器为闭源虚拟机,每次加固生成的指令均为随机指令。
可选地,所述的代码虚拟化加密方法,其中,通过加密工具生成所述随机置换表。
可选地,所述的代码虚拟化加密方法,其中,所述随机置换表与系统指令表一一对应。
可选地,所述的代码虚拟化加密方法,其中,每次加密时的随机置换表都是随机生成的。
可选地,所述的代码虚拟化加密方法,其中,所述自定义虚拟机解释器根据所述随机置换表自动编译。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京智游网安科技有限公司,未经北京智游网安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010776413.4/2.html,转载请声明来源钻瓜专利网。