公开/公告号CN112527457A
专利类型发明专利
公开/公告日2021-03-19
原文格式PDF
申请/专利权人 成都云铀子网络科技有限公司;
申请/专利号CN202011438234.6
发明设计人 刘柏江;
申请日2020-12-11
分类号G06F9/455(20060101);
代理机构51291 成都聚蓉众享知识产权代理有限公司;
代理人张辉
地址 610000 四川省成都市高新区吉瑞三路99号1栋5单元17层1706号
入库时间 2023-06-19 10:19:37
技术领域
本发明属于软件安全领域,具体涉及一种通用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;
步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;
步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的模拟指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。
本实施例中,步骤10中,所述的软件指令包括断点指令、结束指令和PC依赖指令。
本实施例中,步骤10中,将所述的目标二进制代码按照逻辑控制指令、普通指令和依赖PC的普通指令进行分类。
本实施例中,步骤40中,调取当前CPU对等的寄存器上下文使用Unicorn模拟执行指令时去掉Unicorn内置Qemu的MMU功能。
本发明中,所述的Unicorn指一个基于qemu实现的虚拟cpu;所述的Qemu指一个纯软件实现的多架构模拟器;所述的模拟指不依靠外部实现,而仅仅靠自身的翻译功能实现指令集的功能;所述的指令执行指CPU的单条指令的执行,比如add、sub等指令的执行;所述的虚拟机指使用纯软件模拟出的带执行上下文和指令集的虚拟处理器;所述的PC指CPU执行时的程序地址计数器Program Counter;所述的MMU指Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory managementunit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。本文特指Unicorn集成的qemu自带的软件实现的MMU。
本发明所述的模拟指令如add、sub或xor,利用Unicorn模拟执行;所述的断点指令如int 3或bkpt#8;所述的结束指令如ret或retn;所述的PC依赖指令如call、jmp、bl、adr或adrp。
本发明应用于软件安全攻防领域,同时也可用于应用程序性能剖析。
软件安全攻击一方,可以利用该指令级虚拟机逐条执行目标程序,则可完全掌握目标程序的运行情况,进而可以逆向破解目标程序。软件安全防守一方,可以利用该指令级虚拟机将核心的软件代码用本虚拟机编码保护起来,进而可以阻止逆向破解的人分析核心代码。
应用程序性能剖析时,可以利用该指令级虚拟机逐条采样程序的运行过程,达到100%精确分析程序运行情况的目的。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
机译: -自主式自动返回无人机系统及其实现方法一种或多种存储计算机可执行指令的计算机可读介质,该计算机可执行指令在被执行时实现了一种基于发射轨迹修改预编程飞行模式的方法
机译: 例如在计算机上执行选择性跳转指令预测的计算机实现的方法数字专用或通用计算机,涉及在执行预测阻止指令后阻止跳转指令的预测
机译: 在两个过程步骤中通过转运模拟量存储器实现模拟数字实现的方法和执行该方法的指令