既然谈得是虚拟机的启发式扫描反病毒技术,那么就该介绍下虚拟机、启发式扫描的概念。
虚拟机(VM),在反病毒界被称为通用解密器。具体做法是:用程序代码虚拟一个CPU来,同样也虚拟CPU的各个寄存器,甚至将硬件端口也虚拟出来,用调试程序调入被调的样本,将每一条语句放到虚拟环境中执行,这样就可以通过内存和寄存器以及端口的变化来了解程序的执行。这样的一个虚拟环境就是一个虚拟机。
虚拟机作为原操作系统下的一个应用程序,目标是让程序像运行在单独一台真正的机器上,丝毫察觉不到自己处于VM的控制之下。而实现虚拟技术的关键在于软件虚拟化和硬件虚拟化。
文中给出了三种方案:自含代码虚拟机(SCCE),缓冲代码虚拟机(BCE),有限代码虚拟机(LCE)。
自含代码虚拟机,像是一个真正的CPU,从内存中取出每条指令,然后解码,用自己的例程模拟该指令。该虚拟机会包含一个例程来对内存/寄存器寻址操作数进行解码,然后还包括一个用于模拟每个可能在CPU上执行的指令的例程集。因此,自含代码虚拟机的代码会非常巨大,而且速度会非常慢。
缓冲代码虚拟机,是SCCE的一个缩略版,大概是整合了个通用指令模拟例程,然后剩下的特殊指令单独用例程进行模拟。
虚拟机(VM),在反病毒界被称为通用解密器。具体做法是:用程序代码虚拟一个CPU来,同样也虚拟CPU的各个寄存器,甚至将硬件端口也虚拟出来,用调试程序调入被调的样本,将每一条语句放到虚拟环境中执行,这样就可以通过内存和寄存器以及端口的变化来了解程序的执行。这样的一个虚拟环境就是一个虚拟机。
虚拟机作为原操作系统下的一个应用程序,目标是让程序像运行在单独一台真正的机器上,丝毫察觉不到自己处于VM的控制之下。而实现虚拟技术的关键在于软件虚拟化和硬件虚拟化。
文中给出了三种方案:自含代码虚拟机(SCCE),缓冲代码虚拟机(BCE),有限代码虚拟机(LCE)。
自含代码虚拟机,像是一个真正的CPU,从内存中取出每条指令,然后解码,用自己的例程模拟该指令。该虚拟机会包含一个例程来对内存/寄存器寻址操作数进行解码,然后还包括一个用于模拟每个可能在CPU上执行的指令的例程集。因此,自含代码虚拟机的代码会非常巨大,而且速度会非常慢。
缓冲代码虚拟机,是SCCE的一个缩略版,大概是整合了个通用指令模拟例程,然后剩下的特殊指令单独用例程进行模拟。