虚拟机技术
首先我们描述一下一个病毒分析者的工作:当拿到一个样本时,我们并不敢直接运行它,因为它可能是带毒的,
而且极可能是未知的,谁也无法查杀的新病毒。要分析它,我们必须做的是跟踪它的执行,查看它是否有传染模块,
是否有破坏模块。如果一个样本中有用于传染的模块,我们就无可争辩的认定它是病毒,如果它还有破坏模块,我们
就会将它归人恶性病毒。有些病毒是戏滤性的、学术性的,不会破坏系统。但,这也就如让您穿了一双泡水的鞋一样,
脚上不会有大问题,却终归是心里不舒服的。
这里涉及到一个重要问题,判定样本是否是病毒的重要问题:传染性。我们可以想象,如果能让程序判定一个
“样本”是否有传染性,也就解决了反病毒领域中的一个重要难题“预警”。
传统的程序员分析病毒会使用DOS的DEBUG程序,现在更多的人选择SOFT-ICE一类功能更强大的软件。但终归一点,
这类动态调试软件的核心就是单步跟踪执行被调程序的每一个语句。
事实上,更为具体的做法可以是这样:用程序代码虚拟一个CPU来,同样也虚拟CPU的各个寄存器,甚至将硬件端
口也虚拟出来,用调试程序调人被调的“样本”,将每一个语句放到虚拟环境中执行,这样我们就可以通过内存和寄
存器以及端口的变化来了解程序的执行。这样的一个虚拟环境就是一个虚拟机。
未来的虚拟现实技术在系统底层级上是有借鉴于虚拟机技术的。
既然虚拟中可以反映程序的任何动态,那么,将病毒放到虚拟机中执行,则病毒的传染动作一定会被反映出来。
如果这样,未知病毒的查出概率将是100%!
100%?!惊人的数字!然而事实上,我们无法虚拟执行程序的全部代码,因为虚拟机太慢,大约会比正常的CPU
慢上几十倍甚至更多。目前个别反病毒软件选择了样本代码段的前几K字节虚拟执行,其查出概率已高达95%左右。
虚拟机用来侦测已知病毒速度更为惊人,误报率可降到一个千分点以下!这项技术在1997年被认为是国际反病毒
领域的前沿技术,至今仍有许多人在研究和完善它。因为它的未来可能是一台用于Internet上的庞大的人工智能化的
反病毒机器人。当然,也是一个软件机器人。