虚拟机保护技术是基于x86汇编系统的可执行代码转换为字节码指令系统的代码,以达到保护原有指令不被轻易逆向和篡改的目的。
字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的 ,是一种中间码。字节是电脑里的数据量单位。
虚拟机保护原理
虚拟机保护技术是基于x86汇编系统的可执行代码转换为字节码指令系统的代码,以达到保护原有指令不被轻易逆向和篡改的目的。
字节码是由指令执行系统定义的一套指令和数据组成的一串数据流
虚拟机执行时,VStartVM部分初始化虚拟机,VMDispatcher调度这些Handler。
如果将其看成一个CPU,字节码就是CPU中执行的二进制代码。
指令分类
按功能分为普通指令,栈指令,流指令,不可模拟指令4类
不可模拟指令就是无法再次模拟的指令,int3,sysenter,in,out
启动框架和调用约定
调度器
VStartVM将真实环境压入栈后会生成VMDispatcher的标签,当Handler执行完毕之后跳回到这里,形成一个循环,所以VStartVM也叫作“dispatcher”
esi指向字节码的起始地址,ebp指向VM栈顶,edi指向VMContext
Handler
不是Windows中的句柄,而是一段小程序或者一段过程
是由VM中的调度器来调用的
- 辅助Handler(执行一些重要的,基本的指令)
- 普通Handler(执行普通的x86指令)
辅助Handler主要是处理栈的Handler
未完待续