巨集病毒
(文件導向式的病毒感染)
 
   看到這個名稱 ,首先要解釋的是:到底何謂「巨集」呢?我們可以回溯到當年的PE2時代,只要玩過電腦的都知道,要PE2執行的好,真正需要的檔案有兩個:PE2.EXE,PE2.PRO,其中的.PRO 定義了鍵盤哪些鍵的作用,我們可以說,這便是巨集的濫觴。

    隨著套裝軟體的愈做愈大,人們逐漸發現,常用的一些對於檔案編輯的動作,事實上可以歸為一整套的指令,然而,每個人所常用的指令與常用的指令動作都不同,於是乎,每個套裝軟體便會自己定義出一些指令供使用者發揮使用,最明顯的例子是Lotus 123和獨立成一套的語言 dbase,儼然因為巨集的指令過於強大,走上命令解譯器如BASIC 的道路。

    同樣的事情發生在 Word 的身上,不過 Word 的模式不同,它定義出一個範本模式,將檔案資料,以及該檔案所需要的巨集整合在一種名為 .dot的範本檔案之中,這種作法已經不同於以往的套裝軟體將資料和巨集分開儲存的方法。正因為這種是巨集亦是資料的檔案格式,便產生巨集感染的可能性。因為,檔案資料的可攜性極高,如果巨集亦隨著檔案而被分派到不同的工作平台,只要能被執行,不也相似於病毒的傳染過程?不過這種形式的傳染,就會有原始碼被公開的危機,而且正因為原始碼是公開的,這個病毒的一切行為便無所遁形了。

     Word 的工作模式是只要一載入範本檔案,就先執行起始的巨集,接著載入資料內容,這個創意本來是好的,因為隨著資料不同而需要有不同的巨集工作。可是事實上,很少人會對巨集產生興趣,因為巨集的撰寫相當於學習一套程式語言,儘管它的語法被撰寫的很簡單,可是大多數的人,一方面在不知情,一方面或是知道有巨集這麼一回事,卻依然寧願多花個幾秒重複數個動作。因此, Word 便為大眾事先定義一個共用的範本檔案(Normal.dot),裡面包含了基本的巨集(隨軟體不同)。

    這樣子的手法,更是為巨集感染開啟大門。因為如果是一個範本一個巨集,那麼傳染途徑就只能經由這個單一檔案而已,只要一被人發現,公開說某某檔案是有問題的檔案,那麼這個檔案存活率勢必很小,因為沒有人會行這種自殺的行為,除非是故意的。但是共用範本的存在,卻去除了這種憂慮,只要某某有心人士,要問題巨集自身複製、或撰寫感染碼進公用巨集,那麼好玩了,以後只要一進入 Word ,公用範本一併被事先載入,只要存下任何範本檔案,那麼該檔案就無可避免地成了問題文件。
 

    可是畢竟巨集是儲存於範本文件裡面的啊,在 office 裡面,範本文件是統一放置在 Template 資料夾裡面,如果我們沒有動到裡面的任何一個範本巨集,那麼為何我們還是會感染到巨集病毒呢?關於這個問題,實際上便牽涉到微軟公司對於 Word 檔案格式處理的矛盾。

    我們以磁碟作業系統 (DOS)一個很有名的例子來看,作業系統的執行檔案作業的程序是先從檔案的副檔名,判斷其是否為可執行檔 (.EXE) ,或者命令檔 (.COM) 。但只要是編譯過程式的人都知道,DOS 對於這樣子的區分並不嚴格,它只是單單對副檔名以二元分類法辨別出這個檔案可不可執行,接著從裡面的檔案格式去選擇載入於記憶體中的方式,因此。如果我們將一個可執行格式的檔案 (*.EXE) 改命名為命令檔 (*.COM) ,實際上它依然是以可執行檔格式被載入記憶體中而被執行。

    同理,這種包含內外兩種不同檔案格式的謬誤,在 Win 95 中並未被解決 (事實上,它並沒有被解決的必要) 。 Word 在決定以何種方式載入文件的時候,事實上是先到 Win95系統中的登錄項去尋找是否有此登錄,在載入的時候,根據實際的格式決定這個文件被執行的方式。換句話說,我們可能載入一個事實上為 .dot 格式的 .doc 檔案,只要這種情形一發生,當我們不自覺地看見 Word 將檔案顯示在螢幕的瞬間,此文件內藏的巨集,已經經由 Word 被載入記憶體中而執行了,如果巨集作者再聰明一點的話,他就會侵入共用範本(Normal.dot),這麼一來,每次只要一啟動 Word ,你的電腦中便等著被有問題的巨集騷擾了。

    我們可以這樣子說,檔案式病毒警告我們不要隨便複製別人的檔案,磁碟式病毒警告我們不要使用來路不明的磁碟,那麼,在標榜以文件導向為主的 Win95 裡,或許類似 Taiwan NO.1 一類的巨集病毒給我們的最大的啟示,或許是要我們不可以隨便偷看別人文件吧!

 
 
 

回上一頁  回首頁