[发明专利]一种通用Unicorn模拟指令执行的虚拟机实现方法在审
申请号: | 202011438234.6 | 申请日: | 2020-12-11 |
公开(公告)号: | CN112527457A | 公开(公告)日: | 2021-03-19 |
发明(设计)人: | 刘柏江 | 申请(专利权)人: | 成都云铀子网络科技有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 成都聚蓉众享知识产权代理有限公司 51291 | 代理人: | 张辉 |
地址: | 610000 四川省成都市高新*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 通用 unicorn 模拟 指令 执行 虚拟机 实现 方法 | ||
本发明公开一种通用Unicorn模拟指令执行的虚拟机实现方法,步骤10、CPU指令集分类:将目标二进制代码分类为模拟指令和软件指令并分别进行编码,如目标二进制代码为模拟指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;步骤20、模拟指令处理:保持硬件指令类型不变,用Unicorn模拟执行CPU,进入步骤40;步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的模拟指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。本发明能快速准确的实现CPU指令模拟执行式的虚拟机化。
技术领域
本发明属于软件安全领域,具体涉及一种通用Unicorn模拟指令执行的虚拟机实现方法。
背景技术
在软件安全领域,代码保护效果最好的形式即为虚拟机代码保护。这种方案由于存在私有的指令编码和CPU解释器,所以可以很好的保护目标代码不被逆向工程。在Windows平台,由于只需要考虑x86/x64架构,因此实现自定义的虚拟机相对容易,典型的产品如VMProtect。而在移动平台比如iOS/Android,需要考虑x86/x64/arm/arm64/arm64e等一系列架构,因此需要设计一种相对通用的虚拟机实现方案。
发明内容
本发明所要解决的技术问题便是针对上述现有技术的不足,提供一种通用Unicorn模拟指令执行的虚拟机实现方法,能快速准确的实现CPU指令模拟执行式的虚拟机化。
本发明所采用的技术方案是:一种通用Unicorn模拟指令执行的虚拟机实现方法,包括以下步骤:
步骤10、CPU指令集分类:将目标二进制代码分类为模拟指令和软件指令并分别进行编码,如目标二进制代码为模拟指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;
步骤20、模拟指令处理:保持硬件指令类型不变,用Unicorn模拟执行CPU,进入步骤40;
步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;
步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的模拟指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。
其中一个实施例中,步骤10中,所述的软件指令包括断点指令、结束指令和PC依赖指令。
其中一个实施例中,步骤10中,将所述的目标二进制代码按照逻辑控制指令、普通指令和依赖PC的普通指令进行分类。
其中一个实施例中,步骤40中,调取当前CPU对等的寄存器上下文使用Unicorn模拟执行指令时去掉Unicorn内置Qemu的MMU功能。
本发明的有益效果在于:
1、可以快速的实现出一个完备的虚拟机;
2、可以快速迁移至不同计算机体系架构。
附图说明
图1为本发明虚拟机实现原理图。
具体实施方式
下面将结合附图及具体实施例对本发明作进一步详细说明。
如图1所示,本发明公开了一种通用Unicorn模拟指令执行的虚拟机实现方法,包括以下步骤:
步骤10、CPU指令集分类:将目标二进制代码分类为模拟指令和软件指令并分别进行编码,如目标二进制代码为模拟指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;
步骤20、模拟指令处理:保持硬件指令类型不变,用Unicorn模拟执行CPU,进入步骤40;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都云铀子网络科技有限公司,未经成都云铀子网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011438234.6/2.html,转载请声明来源钻瓜专利网。