-- 作者:aimulin
-- 發布時間:2009/5/28 18:52:33
-- 反病毒教程(中級篇)第8課
這一課詳細來講一下幾個配置文件. 配制文件的擴展名一般為.ini,內容的一般格式如下: 復制內容到剪貼板 代碼: [字段名] 關鍵字=值 在一個配制文件中,可以有多個字段,一個字段下也可以有多個關鍵字.字段名必須用中括號括起來.字段名,關鍵字,值等可以是中文,英文,各種符號等(一般英文居多).對于系統中的配制文件,字段名一定是固定的,關鍵字大都也是固定的,你不能隨意更改成其他名稱,只有后面的值才可以改,修改時也要符合一定的規則. 一.desktop.ini 這個文件在第5課中已經詳細地講過了,這里就不再講了. 二.autorun.inf 還是先貼一下上一課中的那個文件的內容,上一課中講得很簡單,這一課繼續講,不要求完全掌握,只要知道上一課中的內容就行: 復制內容到剪貼板 代碼: [autorun] open=progict1.exe shell\\open=打開(&O) shell\\open\\Command=progict1.exe shell\\open\\Default=1 shell\\explore=資源管理器(&X) shell\\explore\\Command=progict1.exe 第一行中的autorun是一個字段名,autorun.inf這個配制文件總共可以支持三個字段,另兩個是 AutoRun.Alpha和DeviceInstall.autorun字段是每個autorun.inf文件心須有的并且所有windows系統都支持該處的配制(除非禁用了自動播放等),其他兩個是可選的,AutoRun.Alpha適用于基于RISC的計算機光驅,而DeviceInstall則要求必須是XP及以上系統.下面一個個來具體說明: [autorun] 1.Open 這個單詞的意思為打開,也就是說當你打開設備(如磁盤,光盤,U盤)時,等號后面的命令(可執行文件)也會跟著執行,命令可以帶參數,如ping 127.0.0.1,必須是.exe,.com,.bat等文件,其他文件需使用start.exe打開或使用ShellExecute命令,命令的起始目錄必須是設備根目錄或系統的Path環境變量中所指定的,否則將無法運行. 2.ShellExecute 功能與Open類似,但可以是任意格式的文件,系統會根據文件關聯選擇合適的程序打開它.比如你寫一行ShellExecute=ratebbs.doc,當你雙擊時,系統將自動調用word程序來打開這個名為ratebbs.doc的文檔(前提是這個文檔必須存在). 3.Icon 用于指定盤符的圖標,等號后為圖標的路徑,可以是.ico,.bmp,.exe,.dll.當文件格式為.exe和.dll時需要使用序號來指定圖標,若不指定,則默認為0,文件路徑與序號之間用半角逗號隔開,比如我可以這樣寫:Icon=E:\\edu\\antivirus\\anti\\anti.exe,0 4.DefaultIcon 這個是用于指定將被自動執行的程序的圖標的,如果指定了另外一個圖標,則原來程序的圖標將不會顯示,也就是說它的優先級高于程序本身顯示的圖標.設置方法和關鍵字Icon一樣. 5.Label 用于指定磁盤的默認描述\\卷標,默認為本地磁盤,卷標命名規則好像和文件名一樣,不能包含一些特殊字符,可以有中文,空格等. 6.shell 這個說簡單也簡單,說復雜也復雜,因為自由度比較大, 復制內容到剪貼板 代碼: shell\\open=打開(&O) shell\\open\\Command=progict1.exe shell\\open\\Default=1 中間都有一個open(標識),其實也可以換成其他名字的,但三行中必須同時更改才有效,第一行的效果是右擊盤符時將出現一個名為打開的選項,后面的(&O)的效果是指定快捷鍵.第二行的效果是當你選擇打開時,運行指定的命令,第三行的效果為讓這個命令出現在右鍵快捷菜單的最上面.Command意為命令行,它后面的設置方法和關鍵字open是一樣的. 默認情況下,系統可以識別open,explore,find,ShellExecute等標識,也就是說當你使用這幾個標識時只要寫中間的那一行就可以了(第一行可以不寫),使用其他標識時前兩行必須有,且標識必須一致,舉例如下: 復制內容到剪貼板 代碼: shell\\ratebbs=反病毒(&A) shell\\ratebbs\\Command=E:\\edu\\antivirus\\anti\\anti.exe [AutoRun.alpha] 所有關鍵字的用法和[AutoRun]字段完全相同區別在于在基于RISC的光驅中,[AutoRun.alpha]優先級高于[AutoRun],也就是說如果同時設置了這兩個字段,在基于RISC的光驅中,系統只識別[AutoRun.alpha]字段中的,[AutoRun]字段將被忽略.這個字段并不常用. [DeviceInstall] 只有一個關建字DriverPath,用于指定驅動程序的搜索路徑.Windows XP以上支持,一般用于驅動程序的自動安裝,當你打開設備管理器,點更新驅動時,系統將自動搜索光盤以查找合適的驅動.如果沒有這一字段,系統將全盤搜索.若有這一字段,但沒有DriverPath關鍵字,則系統將不在此光盤中搜索驅動程序. 三.boot.ini 這是系統盤根目錄下的一個文件,具有只讀屬性,修改前需先更改它的屬性.該文件與開機時顯示操作系統選擇菜單有關,如果該文件丟失或配制錯誤將導致windows系統無法正常引導,所以修改前請一定要備份,以下為我裝完XP系統后備份的boot.ini文件的內容. 復制內容到剪貼板 代碼: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect [boot loader] 1,timeout 這個關鍵字指定開機時操作系統選擇菜單的停留時間,單位為秒,當只有一個操作系統時,它的值將被忽略. 2,default 當超過timeout所指定的時間且你沒有選擇要進入的操作系統,將自動進入該值所指定的操作系統.該值必須是operating systems字段中已存在的關鍵字,否則將出錯. [operating systems] 這個字段下是所有操作系統的列表.上面的例子只有一個XP系統.所有只有一行. multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS 說一下這個關鍵字的意思: multi(0)說明系統使用的是IDE,增強的IDE(EIDE)或增強的小型設備接口(ESDI)驅動器,或者沒有內置BIOS的SCSI適配器.有的系統此處可能為scsi(0)說明使用的是除上述以外的控制器.后面括號中的0表示第一個控制器(主控制器),如果有第二個,后面數字加1,即multi(1). disk(0)表示使用的SCSI邏輯單元(LUN).它可以是獨立的磁盤,但是大多數SCSI設置對每個SCSI ID只有一個 LUN,所以通常都是這個值. rdisk(0)表示該操作系統位于第一個物理磁盤上. partition(1)表該操作系統所有的磁盤分區,系統安裝在C盤則為partition(1),若在D盤則為partition(2),后面的以此類推. "Microsoft Windows XP Professional" /noexecute=optin /fastdetect 此處分兩部分講,關面雙引號中的可以任意更改,它就是操作系統選擇菜單所出現的名字.后面的是參數,參數一般不區分大小寫. /noexecute 該參數與數據執行保護(DEP)有關,其值為optin時表示開啟,值為Optout時表示關閉.開啟該項可以阻止某些惡意程序的執行,使惡意程序運行出錯而退出.具體也可以到我的電腦,屬性,高級,設置,數據執行保護處設置,如果你不知道DEP是什么,請單擊DEP是如何工作的. /fastdetect 系統啟動時不檢查串行口和并行口,可以加快系統的啟動速度. 除上面兩個參數之外,系統還支持很多其他參數.不要求掌握,大致了解就行.以下參數說明來自微軟知識庫文章(http://support.microsoft.com/kb/170756/en-us/)及本人的理解. /3GB 使得用戶模式程序能夠訪問3GB的內存,正常情況下通常為2GB,只適用于各NT系統非家庭版的SP3版. /basevideo 強制用標準640x480 16色VGA模式啟動系統.當視頻分辨率,刷新速率出錯或相關驅動出錯時可使用此選項. /BAUDRATE=nnnn 設置波特率的調試端口.如果沒有設置波特率,默認波特率是19200.若通過調制解調器遠程調試正常速率,此值為9600.例如/BAUDRATE=9600. /BOOTLOG 將系統日志寫入%SystemRoot%\\NTBTLOG.TXT,并非所有系統都支持. /BURNMEMORY=nnnn 使系統在已知的內存上少使用指定的兆數,如果/burnmemory=128,則系統可使用的內存數將在原有基礎上減少128M /CRASHDEBUG 系統啟動時,如果經常無故出錯(一般是內核錯誤),這個參數就非常有用. /DEBUG 在啟動系統時調入調度器,它可以在任何時間激活,在錯誤可以再次出現時使用它比較合適 /DEBUGPORT=comx 指定用于調度的端口,其中的x就指端口號. /HAL=<hal> 允許用戶不使用默認的HAL.等號后的是一文件名,用于加載指定的內核. /INTAFFINITY 設置多處理器HAL(HALMPS.DLL),使編號最大的處理器接收中斷請求.如果不設置此選項,系統會使所有處理器接收中斷請求. /KERNEL=<kernel> 與上面的/HAL功能類似,但它是針對SMP中的內核而言的.例/KERNEL=ntkrnlmp.exe,指定的文件必須位于%systemroot%/system32目錄中 /MAXMEM:n 指定系統可以使用的最大內存數. /NODEBUG 禁用內核調試器,藍屏時不顯示相應信息. /NOGUIBOOT 不加載VGA驅動程序,不顯示啟動過程和失敗時的藍屏信息. /NOSERIALMICE=[COMx|COMx,y,z...] 在特定的COM中上禁止對串行鼠標的檢測. /NUMPROC=n 只允許前n個處理器工作 /ONECPU 在多處理器中只使用一個處理器 /PCILOCK 不讓系統為PCI設置分配IO/IRQ資源,從而無法在windows中更改BIOS設置. /SAFEBOOT 以安全模式啟動 /SOS 在調入驅動程序名時顯示它的名字,在因驅動問題而無法啟動時使用,從而知道是哪個驅動導致的問題. /WIN95 在裝有三個系統DOS,Win9x和Windows NT的系統上,讓NTLDR直接調用Win9x啟動文件BOOTSECT.W40 /WIN95DOS 在裝有三個系統DOS,Win9x和Windows NT的系統上,讓NTLDR直接調用DOS啟動文件BOOTSECT.DOS /YEAR= 使用指定的年份,如果設置為/YEAR=2005,那現在的時間就是2005年,此參數只對NT4+SP4和W2K生效. 一般情況下不建議直接編輯boot.ini文件,除非你有足夠的把握不出錯,修改前請備份.一般使用如下兩種方式修改其部分設置. 1.我的電腦,屬性,高級,設置(第三個).在這里可以進行不少的設置了,或者點擊編輯進行自定義設置.
2.開始,運行,輸入msconfig,boot.ini,要使用哪些參數直接在下面,或高級中相應選項前打勾就行了,以防止出錯. 以下是我目前的boot.ini文件的內容: 復制內容到剪貼板 代碼: [boot loader] timeout=30 default=C:\\PSALDR [operating systems] C:\\PSALDR="microsoft windows xp professional" C:\\PSBLDR="microsoft windows xp professional 單一影子模式" multi(0)disk(0)rdisk(0)partition(1)\\windows="microsoft windows xp professional 完全影子模式" /fastdetect c:\\grldr=maxdos_5.0e 工具箱 c:\\arldr=microsoft dos 7.1 不知大家裝過影子系統2008沒,裝完后關鍵字default的值被改成了C:\\PSBLDR,也就是說超時未選擇操作系統的話,默認會進入單一影子模式,把它改成C:\\PSALDR默認就會進入正常模式. c:\\grldr,c:\\arldr,C:\\PSBLDR等都是用于啟動相應系統的文件,等號后面的可任意修改.
四.system.ini 曾經是一個非常重要的系統配制文件,早期的病毒或木馬常修改這個文件達到開機就啟動的目的,現在已經不多見了,但仍然有.NT系統中,幾乎所有配制已集成到注冊表中,因此現在這個文件的內容比較少了,但仍很有用,系統每次啟動都會修改這個文件的內容,不信你可以查看其屬性,修改時間.該文件位于%systemroot%/system.ini.也可以通過msconfig來修改.. 該文件的配制是相關復雜的,這里只講和病毒有關的字段及關鍵字. [boot]字段的shell=Explorer.exe 注冊表位置HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon,鍵名shell,正常值為Explorer.exe,不正常時可能為Explorer.exe,anti.exe [386Enh],[mic],[drivers],[drivers32]等字段的driver=驅動程序文件路徑. 與驅動有關的注冊表路徑如下: HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\HardwareProfiles 五.Win.ini 和system.ini一樣,是一個非常重要且相當復雜的配制文件,幸好,大多數配制已集成到注冊表.這里也只講與病毒加載有關的字段和關鍵字. [windows]字段的load和run. 關鍵字load的注冊表路徑HKEY_CURRENT_USER\\Software\\Microsoft\\WindowsNT\\CurrentVersion\\Windows,鍵名load. 關鍵字run的注冊表路徑同上,鍵名為run,正常情況這兩個鍵并不存在或其值為空. 六.Wininit.ini 這個文件用于重啟時修改或刪除文件用的.有些正在運行中的文件是無法被修改或刪除的,于是可以用這個文件的配制在下次開機時修改或刪除(在這些文件沒被加載前),修改或刪除成功后,該文件消失,所以一般情況下是看不到這個文件的. 該文件的功能亦被集成到注冊表中,注冊表路徑HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\FileRenameOperations 類型為REG_MULTI_SZ 不能直接編輯該處的鍵及值,通常是通過API函數MoveFileEx來實現的. wininit.ini的[rename]字段 關鍵字是一個文件名,值也是一個文件名,重啟時,系統將用值的文件替換關鍵字的文件,并把值的文件刪除. 如果關鍵字所指定的文件不存為,則實際上是將值所指定的文件重命名為關鍵字所指定的文件. 如果關鍵字為nul,則實際上是將值所指定的文件刪除. 如:C:\\WINDOWS\\explorer.exe=C:\\WINDOWS\\TASKMAN.EXE 文件名必須是完整路徑. 七.AUTOEXEC.BAT 不屬于配制文件,而是一上批處理文件,但也常被病毒利用,正常情況下該文件沒有任何內容,大小為0字節. 這個文件用于存放系統啟動時自動執行的命令(一個特殊的批處理文件).如果發現該文件的內容為一可執行文件名,請一定要注意了. 八.CONFIG.SYS 雖然擴展名為sys,但他實際上是一個文本文件(可以用記事本來打開),正常情況下也是空的.如果該文件被改動,應引起注意,特別是device=文件名等這樣的配制,系統啟動時將加載指定的驅動文件.這個文件就相當可疑. 以上是能和病毒扯上一些關系的配制文件.在NT內核系統中,大多數配制已集成進注冊表,但配制文件仍然有效.
|