第218章 HD病毒(二)
许毅见还有几个人(没有参加虚拟机编写计划的)对这个并不了解,于是便耐着性子,给他们讲解起来……
虚拟机,顾名思义,虚拟的机器。其核心思想是用软件来模拟硬件。它作为原操作系统下的一个应用程序,可以为运行于其上的目标操作系统创建出一部虚拟的机器,目标操作系统就像是运行在单独的一台真正的机器上一样,丝毫察觉不到自己处于虚拟机的控制之下。在一个成熟的虚拟机中,完全可以模拟整个计算机开机、启动、运行、关机等过程。按下电源键(PowerOn),窗口中也会出现机器自检的画面,接着是操作系统的载入,一切都和真实的一模一样,甚至还有专门的一套BIOS来处理各种I/O中断。而实际上,他们只不过运行在一个虚拟的平台上而已,表现在真实的操作系统中,它只是系统中的系统,只要硬件配置足够高,这样的系统可以运行很多个,就像应用程序那样,多线程,互不影响,互不妨碍。在虚拟机中运行的应用程序认为自己独占整个机器,它们相信自己是从真正的键盘和鼠标获得输入,并从真正的屏幕上输出,它们甚至认为自己完全拥有CPU和全部内存。
例如,虚拟机中操作系统的硬盘是最外层操作系统中的表现通常是一个文件,这个文件是模拟硬盘,虚拟机中的操作系统要进行文件的读取的保存操作,实际上只是在这个文件中进行——在这个文件中格式化、分区、建立和删除文件等。
因为这个平台是软件的,是能够通过程序员编程而控制的,所以在虚拟机中,无论是操作系统的运行还是应用程序的执行,所有过程都是可跟踪和可观察的。程序员可以随时观察虚拟的CPU各个寄存器的状况和跟踪内存中数据地交换——这是一个多么奇妙的功能!编写操作系统的时候,最令程序员头疼的就是各种各样千奇百怪不可预期的BUG,一不小心,就会导致CPU挂死(死机)。而这个时候,根本没有任何有效的手段来得知那个时候,CPU中的状态到底是怎么样的,为什么会发生这种情况?所有的这些仅仅通过程序员来推测、来估计几乎是不可能的。所以,虚拟机往往被用来编写操作系统。
许毅最开始动心思编写虚拟机就是因为这个原因。后来由于实在是太过复杂,转而去编写了一个比较简单的。这也就是“生死斗”平台的前身。
“啊,原来还有这样的好东西!”一个刚刚加入团队学习的新人惊叹道,“那样的话,我们岂不是只要将病毒程序创建一个虚拟的执行环境,提供它可能用到的一切元素,包括硬盘,端口等,让它在上面自由发挥……而我们则慢慢跟踪,最后根据它的结果来判定其运行机制就可以了?”
好几个人深以为然地点了点头。当然,这些人都是没有参加过虚拟机开发的。
小黑听完之后苦笑道:“理论上是行得通的,不过实际操作起来就没有那么容易了。”
许毅说道:“小黑说得不错,一个完整的虚拟机的开发,是一个非常庞大的工程,并不是说想开发就能开出来的。在里面需要模拟的元素太多了,单单只是做虚拟机就已经非常困难了,再加上一些其他判断,其行为分析甚至还要借助于人工智能理论。”
“那……你们编写的那个不是虚拟机吗?”好问的新人再次问道。
“当然是虚拟机!”小黑反驳道,之后他又说道,“不过不是你认为的虚拟机罢了。严格说来叫它为虚拟CPU更为准确一点,或者说是通用解密器,不过大家都习惯称之为虚拟机。”这个项目是许毅一手策划的,其中很多东西都进行了简化,要不然,现在肯定还完成不了。
“那怎么办?这个虚拟机有没有用?”
大家听到这个问题,纷纷将目光看向了许毅。
“当然有用。那个虚拟CPU已经足够用来做分析了,当然,还要一些辅助手段,你们有兴趣的话,就在旁边看看吧。”许毅有心让他们见识一下,也不介意他们在旁边观看。而现在他关心的是,这个病毒到底是不是CIH病毒,从中毒的症状来看,和那个病毒很相似,不过许毅又不能确定,毕竟按照历史,CIH目前还没有出现。难道因为他的出现,陈盈豪接触计算机的时间也提前了?许毅不能确定的原因有两点,首先盈豪现在应该还有努力学习计算机技术中,因为他接触计算机的时间很晚,是因为上网之后频频被病毒困扰而反感于那些杀毒软件的无用才下决心编写CIH病毒恶作剧的。另外一点就是CIH病毒的爆发日期是4月26日,那是他的高中座号,也是他的绰号。而这和这个神秘病毒爆发的时间不吻合。
在大家的强烈期待之中,许毅开始了病毒的分析破解工作。所用的主要工具就是小黑他们刚刚编写出来的虚拟CPU,它可以像真正CPU那样取址、译码和执行,可以模拟一段代码在真正CPU上运行得到的结果。
许毅将获得的病毒样本输入这个虚拟机中,病毒的代码说穿了一二就是一组机器的序列,最终还是要通过CPU才能执行,而现在有了这个虚拟机,许毅就可以一步一步来跟踪这种病毒的行为。
在跟踪之前,许毅还对这个新完成的虚拟机进行了一番组装,将几个常用的工具组合到了一起,这样他就可以随时暂停虚拟CPU的运行,查看各个寄存器中的数据,以及查看虚拟内存地址中的数据。组合中所涉及到的接口是许毅在最初设计的时候就已经考虑到的,所以现在做起来并不复杂,很快就弄好了。其他在旁边围观的人,只有少数几个看得懂许毅在做什么。
病毒开始执行,虚拟机自动从机器码序列中取出第一条指令操作码部分,判断操作码的类型和寻址方式,确定这条指令长度之后,便在相应的函数中执行它,接着又根据执行后的结果确定下一条指位置……这个过程在反复循环着,指令计数器一直在增长,许毅的眼睛则一刻也没有离开寄存器现实框,观察着里面的数据,手中则根据那些数据不停地调节着,时快时慢……一会儿之后,病毒头部入口处的解密子便完全执行完毕,接下来的过程便将是通过得到的控制权的解密代码对已经加密的病毒主体进行循环解密——这正是变形加密病毒的特征。而这个时候许毅也没有发现任何有用的信息,不能确定这是否就是CIH病毒。
“反病毒安全部”的那些家伙都屏气凝神眼睛一眨不眨地观察着许毅的一举一动,他们只看到许毅此刻的神情非常的专注,全身心地投入分析过程中,显示器中眼花缭乱的数据像瀑布雨一样往上不停地刷着……外行看热闹,内行看门道。看不懂的新人只觉得这个情景非常酷,帅极了,颇有科幻电影中黑客情节的意味,伴随着这种想法的自然是对许毅更加佩服和崇拜。而以小黑为首的这些能看懂一些操作的,心中的震惊远比那些新人来得要大。准确而迅速地设置断点,跟踪,调试……一系列眼花缭乱的动作让他们大开眼界,而最让他们震惊的是在这些动作的背后得要多快的思维速度!要知道,那些操作可不是简单的执行一下就行了,这其中还涉及到很多计算,病毒编写者在加密的时候,还会设置各种反追踪手段和措施,竭力阻止破解。这些操作只要其他有一个操作不当,就会陷入死胡同,得重新开始,而现在,许毅竟然就这样流畅地运行下来了!这不得不让他们感到难以置信!
现场静悄悄的,只有许毅击键的声音。
“快了,快了……”许毅在心中说道。解密过程非常顺利,连他自己都感觉有点意外,现在的他对这些数简直变得再敏感不过了,一看就通,甚至成了本能的反应一样。相信再过几分钟,他就可以完全将这个病毒破解。
指尖在键盘上跳舞——这就是在场的所有人现在的感觉。他们看到许毅的手指越来越流畅,轻快地迅速敲击着黑色的按键,甚至连击键的声音也开始带有一定的节奏。
“嘀——嘀——”
正在这时,房间里面突然传来了刺耳的报警声,把大家吓得够呛!几乎所有的心脏都猛地跳了一下,连带着身体也有很小幅度的动作,包括许毅,他正沉浸在一种非常玄妙的状态当中,突然来了这么一下,他的手指不由得一抖,一下按错了……