一种通用CPU自解释指令执行的虚拟机实现方法技术

技术编号:27771804 阅读:12 留言:0更新日期:2021-03-23 12:50
本发明专利技术公开一种通用CPU自解释指令执行的虚拟机实现方法,步骤10、CPU指令集分类:将目标二进制代码分类为硬件指令和软件指令并分别进行编码,如目标二进制代码为硬件指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;步骤20、硬件指令处理:保持硬件指令类型不变,对其进行寄存器映射替换,然后将其用于CPU自解释执行,进入步骤40;步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的硬件指令和步骤30中处理完成的软件指令并进行组合。本发明专利技术能快速准确的实现CPU自解释指令执行的虚拟机化。

【技术实现步骤摘要】
一种通用CPU自解释指令执行的虚拟机实现方法
本专利技术属于软件安全领域,具体涉及一种通用CPU自解释指令执行的虚拟机实现方法。
技术介绍
在软件安全领域,代码保护效果最好的形式即为虚拟机代码保护。这种方案由于存在私有的指令编码和CPU解释器,所以可以很好的保护目标代码不被逆向工程。在Windows平台,由于只需要考虑x86/x64架构,因此实现自定义的虚拟机相对容易,典型的产品如VMProtect。而在移动平台比如iOS/Android,需要考虑x86/x64/arm/arm64/arm64e等一系列架构,因此需要设计一种相对通用的虚拟机实现方案。
技术实现思路
本专利技术所要解决的技术问题便是针对上述现有技术的不足,提供一种通用CPU自解释指令执行的虚拟机实现方法,能快速准确的实现CPU自解释指令执行的虚拟机化。本专利技术所采用的技术方案是:一种通用CPU自解释指令执行的虚拟机实现方法,包括以下步骤:步骤10、CPU指令集分类:将目标二进制代码分类为硬件指令和软件指令并分别进行编码,如目标二进制代码为硬件指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;步骤20、硬件指令处理:保持硬件指令类型不变,对其进行寄存器映射替换,然后将其用于CPU自解释执行,进入步骤40;步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的硬件指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。其中一个实施例中,步骤10中,所述的软件指令包括断点指令、结束指令和PC依赖指令。其中一个实施例中,步骤10中,将所述的目标二进制代码按照逻辑控制指令、普通指令和依赖PC的普通指令进行分类。其中一个实施例中,步骤20中,所述寄存器映射替换方式具体如下:将特殊寄存器替换为普通寄存器。本专利技术的有益效果在于:1、可以快速的实现出一个完备的虚拟机;2、可以快速迁移至不同计算机体系架构。附图说明图1为本专利技术虚拟机实现原理图。具体实施方式下面将结合附图及具体实施例对本专利技术作进一步详细说明。如图1所示,本专利技术公开了一种通用CPU自解释指令执行的虚拟机实现方法,包括以下步骤:步骤10、CPU指令集分类:将目标二进制代码分类为硬件指令和软件指令并分别进行编码,如目标二进制代码为硬件指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;步骤20、硬件指令处理:保持硬件指令类型不变,对其进行寄存器映射替换,然后将其用于CPU自解释执行,进入步骤40;步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的硬件指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。本实施例中,步骤10中,所述的软件指令包括断点指令、结束指令和PC依赖指令。本实施例中,步骤10中,将所述的目标二进制代码按照逻辑控制指令、普通指令和依赖PC的普通指令进行分类。本实施例中,步骤20中,所述寄存器映射替换方式具体如下:将特殊寄存器替换为普通寄存器。本专利技术中,所述的CPU指电脑或手机的处理器,对于应用层开发而言,暴露给开发者的是其对应的指令集,比如x64、arm64指令集;所述的自解释指不依靠外部实现,而仅仅靠自身的基础功能实现解释器的功能;所述的指令执行指CPU的单条指令的执行,比如add、sub等指令的执行;所述的虚拟机指使用纯软件模拟出的带执行上下文和指令集的虚拟处理器;所述的PC指CPU执行时的程序地址计数器ProgramCounter。本专利技术所述的硬件指令如add、sub或xor,利用CPU自解释执行;所述的断点指令如int3或bkpt#8;所述的结束指令如ret或retn;所述的PC依赖指令如call、jmp、bl、adr或adrp。本专利技术应用于软件安全攻防领域,同时也可用于应用程序性能剖析。软件安全攻击一方,可以利用该指令级虚拟机逐条执行目标程序,则可完全掌握目标程序的运行情况,进而可以逆向破解目标程序。软件安全防守一方,可以利用该指令级虚拟机将核心的软件代码用本虚拟机编码保护起来,进而可以阻止逆向破解的人分析核心代码。应用程序性能剖析时,可以利用该指令级虚拟机逐条采样程序的运行过程,达到100%精确分析程序运行情况的目的。以上所述实施例仅表达了本专利技术的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本专利技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变形和改进,这些都属于本专利技术的保护范围。本文档来自技高网...

【技术保护点】
1.一种通用CPU自解释指令执行的虚拟机实现方法,其特征在于,包括以下步骤:/n步骤10、CPU指令集分类:将目标二进制代码分类为硬件指令和软件指令并分别进行编码,如目标二进制代码为硬件指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;/n步骤20、硬件指令处理:保持硬件指令类型不变,对其进行寄存器映射替换,然后将其用于CPU自解释执行,进入步骤40;/n步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;/n步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的硬件指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。/n

【技术特征摘要】
1.一种通用CPU自解释指令执行的虚拟机实现方法,其特征在于,包括以下步骤:
步骤10、CPU指令集分类:将目标二进制代码分类为硬件指令和软件指令并分别进行编码,如目标二进制代码为硬件指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;
步骤20、硬件指令处理:保持硬件指令类型不变,对其进行寄存器映射替换,然后将其用于CPU自解释执行,进入步骤40;
步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;
步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的硬件指令和步骤30中处理完...

【专利技术属性】
技术研发人员:刘柏江
申请(专利权)人:成都云铀子网络科技有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1