查看單個文章
舊 2003-04-27, 03:14 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 Wininit.ini文件檔的作用

 一、Wininit文件工作機制

在Windows中,一個可執行文件如果正在執行或某個程動態式庫文件或系統驅動(*.dll、*.vxd、*.sys等)因開機後隨就載入記憶體運作,正在被開啟使用,當則不能被改寫或刪除。例如,你不可能在檔案總管,資源管理器中刪除Windows的Explorer.exe。而在Windows的GDI圖形界面下,有一些文件一直處於這種狀態下,除Explorer.exe外,還有顯示驅動程式庫文件、文件子系統程式庫文件等。如果我們要對這些文件進行昇級,改動,就必須在Windows保護模式下進行,於是Windows就提供了基於Wininit.ini文件的一個os機制,來完成這個任務,這個機制是,要刪除或改寫這類文件的應用程式,按一定的格式把命令寫入Wininit.ini。Windows在重啟時,將在Windows目錄下,搜尋Wininit.ini文件,如果找到,就遵照該檔案指令刪除、改名、更新文件,完成任務後,將刪除Wininit.ini文件本身,繼續啟動。所以Wininit.ini文件中的指令.只會被執行一次,列顯示目錄時也通常沒有它的蹤影。



Wininit.ini文件的格式簡述如下:
Wininit.ini文件有三個可能的段,但微軟只敘述了「rename」段的用法,雖然名為「rename」,卻可實現刪除、改名、更新文件的功能。其格式為:

[rename]
filename1=filename2
行「filename1=filename2」相當於依次執行「copy filename2 filename1」及「del filename2」這兩個DOS命令。
啟動時,Windows將用filename2覆蓋filename1,再刪除filename2,這就實現了用filename2更新filename1的目的。如果filename1不存在,實際結果是將filename2改名為filename1;如果要刪除文件,可令filename1為nul,例如:
[rename]
nul=filename2
將刪除filename2。

以上檔案名都必須包含完整路徑。注意:由於Wininit.ini文件的處理是在Windows文件系統調入前,所以不支持長檔案名。

Wininit.ini的套用很多,除了經常在軟硬體的安裝程序中用到外,還在軟硬體的卸載程序中用到。比如:假設你要為自己的軟體編寫一個卸載程序,這個卸載程序本身是不可能被自己刪除的,因為它試圖刪除自身時,自身卻正在執行。為了清除卸載程序本身,你就得借助於Wininit.ini文件。順便提一句,在安裝Windows的最後階段,就是利用Wininit.ini文件來清除和更名被安裝程序自身使用的文件。

二、以它該技術,在Windows會讓病毒中載入流行
Windows病毒在感染文件時,也碰到了這樣一個問題,某些文件因為系統正在使用,不能被改寫和感染,有些Windows病毒如CIH病毒採用VXD技術來解決這個問題,這易造成系統不穩定,而許多病毒卻採用Windows提供的標準方法——Wininit.ini文件來解決這個問題,比如以下幾種Windows病毒。

1.Win32.Kriz
該病毒又叫聖誕節病毒,記憶體駐留型,在12月25日發作時將改寫CMOS,覆蓋所有驅動器上的所有文件,然後用CIH病毒中的同樣程序破壞主機板BIOS。該病毒感染*.EXE(PE格式)和*.scr文件,同時為了監控所有文件操作,它感染Kernel32.dll,接管文件複製、開啟、移動等文件存取函數,由於Kernel32.dll文件在Windows執行時只能以只讀方式開啟,為感染它,該病毒將它複製一份,名為KRIZEO.TT6,然後感染複製品KRIZEO.TT6,寫Rename指令到Wininit.ini文件中,下次機器啟動時,KRIZEO.TT6將替代原來的Kernel32.dll完成感染。

2.Supp1.A蠕蟲
這是一個Word巨集蠕蟲,通過在發出的E-mail中插入一個特洛伊我的文件作為附件傳播,當被開啟時病毒拷貝我的文件到Anthrax.ini,把要展開的資料寫到文件dll.lzh,並解壓為dll.tmp,以上文件都放在Windows目錄下。下一步這個蠕蟲新增一個具有如下內容的Wininit.ini文件。

[rename]
nul=c:\windowsdll.lzh
c:\windows\system\wsock33.dll=c:\windowssystemwsock32.dll
c:\windows\system\wsock32.dll=c:\windowsdll.tmp

第一行是刪除dll.lzh,第二行是把原wsock33.dll改名為wsock32.dll。下一步啟動時,這些指令將生效。這樣wsock32.dll就被感染了。利用它,蠕蟲就可監控外發郵件,一旦發現外發郵件,蠕蟲就自動把特洛伊木馬我的文件作為附件加到該郵件中進行傳播,感染7天後,該病毒將把硬碟上所有以DOC、XLS、TXT、RTF、ZIP、ARJ、RAR為副檔名的文件長度置為0,從而破壞所有的資料文件。

3.Heathen病毒

多平台病毒,感染Word我的文件和PE格式EXE文件。為了感染Explorer.exe,病毒先把Explorer.exe複製為Heathen.vex,然後加一條「rename」指令到Wininit.ini文件。
下次啟動時,Windows將幫助它完成對Explorer.exe的感染。另外,該病毒發作時,也使Wininit.ini來刪除Windows註冊表文件。

4.Win95.SK

這是最凶狠、最狡猾的病毒之一了,早期有一些Bug,現在已出現了更新版本,糾正了第一個版本中的所有Bug。它是一個寄生性的Windows病毒,可感染Windows PE格式文件、HLP求助文件、壓縮包文件(RAR、XIP、ARJ、HA)。它採用了許多新的進階技術,如:自身加解密技術、入口點隱藏技術等。當磁牒上文件被訪問時,它檢查其檔案名,如果是幾個反病毒程序的名字(DINF、AVPI、AVP、VBA、DRWEB),該病毒將刪除從C碟到Z盤的所有目錄下的所有能被刪除的文件,然後,使用函數Fatal_Error_Handler使系統當機。

Windows Shell文件Explorer.exe是Windows病毒必爭之地,該病毒自然不會放過,但比其他病毒更加完善。它通過從System.ini文件中的「shell=」行來獲得Shell檔案名,這樣,即使你將Explorer.exe改名,在Shell中指定實際的檔案名,期望借此避免被感染,也是徒勞,它感染Shell文件與其他病毒的做法如出一轍。

由於上述原因,一些實時病毒監控軟體已把Wininit.ini文件列為重點監控對象。


三、現反以採用Wininit.ini徹底殺除病毒

在Windows平台下殺病毒,會碰到類似問題。如何清除正在執行,或處於開啟狀態的染毒文件中的病毒?瞭解了Wininit.ini文件的工作機制,我們可以這樣來設計殺毒軟體:在發現某個染毒文件因為正處於開啟狀態或執行狀態而不能清除病毒時,可將其複製一份,並將複製品去毒。然後在Windows目錄下新增一個Wininit.ini文件(新增之前要先查查Wininit.ini文件是否存在),建立[rename]段,加入一行:染毒檔案名=複製品檔案名;繼續清掃病毒,如果發現類似文件,可在[rename]下再增加一行即可。掃瞄完成後強烈建議用戶,重新啟動或乾脆強行重新啟動,以便執行Wininiti.ini完成整個清毒過程。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次