这里所涉及的电脑,都是指的个人电脑,也叫“微型机”,其主要特点就是总线结构。那些大型机、中型机和小型机均不在讨论之列。
十多年前刚刚上网的时候,最早跟人争论的一个问题是:打印机的RAM中能否感染病毒。
那时候虽然还不到电脑的普及阶段,但大吹二吹的已经相当多,牛B烘烘的都拿自己当了大瓣蒜,明明对硬件了解甚少,却非要自作聪明。连病毒的“驻留内存”和把病毒“调入内存”有什么区别都不知道,就敢断言打印机的RAM中也能感染病毒。这些人显然没编过病毒——当然,我也没编过,谁说我编过我跟谁急!我只是说,起码应该懂得或理解病毒制作者的一些心理和需求。
病毒是程序,和其他程序一样,也要被调入内存才能执行。说这话也许有人会抬杠:程序是可以在盘上直接运行的,有些还可以在压缩包里直接运行。告诉你吧:那都不过是个假象。CPU只会从本机的RAM中寻址,无论程序还是数据,统统要在RAM中运行和处理。盘上程序的运行过程,不过是通过OS的执行约定,从盘上被调入RAM中再执行的。所有影像文件、文字文件、声音文件,也统统要调入RAM以后才能处理。CPU不但不能从盘上寻址,而且根本不可能从任何本机RAM以外的地方寻址。这是一个非常非常关键的概念。
不用说,打印机的RAM,主机的CPU也根本就无权寻址。
拆开打印机,都会在它内部的线路板上看到一个8031的芯片,这就是51系列掩膜生产的单片机,搞过自控的对此一定很熟悉。打印机本质上也是一台有自己CPU的电脑,不过是专一功能的电脑。打印机与主机的关系是平起平坐的通信关系,谁也管不着谁。即便不连电脑,打印机只要上电,照样可以打印自检样张,有些还能打印出帮助文件、使用说明书。别把专接打印机的口叫作“打印口”,那是“并行通信口”,现在基本都用USB口连打印机,这就更容易理解了。那都是通用的通信口。
这么讲虽然已经很明白,但反对者还是“义正辞严”:病毒还是有可能在打印机的RAM中放一段破坏性程序,到一定时机调出来执行。哈哈!不知道是把电脑病毒看得太聪明了,还是看得太傻了。
病毒进入内存也有不同的情况,比如我们要分析一个病毒,除了把它调入内存没什么别的办法,但那是作为数据调入,而非作为程序来执行。如果病毒已经在执行,明明直接就可以做破坏性的事情,难道还要脱了裤子FP,再从别处找从别处调吗?前面也说过了,无论把数据放到打印机RAM中的什么地方,还是从打印机RAM中的什么地方取,主机的CPU都是管不着也够不着的,即便病毒真这么傻,也根本就没可能实现。
后来提到了病毒是否会破坏硬件的问题,一些主张“能破坏”的“明白人”还设想:病毒反复读写RAM中某段相邻地址,就能使某个RAM片发热烧坏。这更加明显地看出,说这话的人真是对硬件一无所知!让搞硬件的人笑掉大牙。
电脑CPU对ROM的寻址通常是在某一个芯片中,而对RAM的寻址是通过地址译码器来进行的,CPU从某个RAM地址拿到一个字节的8位0或1,这8位统统都来自不同的芯片,写入过程当然也一样。把RAM理解成中药铺的一个一个小抽屉,实在是对电脑硬件的极大误解。在这个误解的基础上想当然地“烧坏”,自然也属于异想天开。