2007年12月17日 星期一

登錄檔的指令(Reg Command)

對WINDOWS有些許認識的人,應該都有接觸過登錄檔( Registry)這東西,不過絕大部份都是透過WINDOWS的UI(REGEDIT)來操作,再不然就是透過其它軟體來處理。

先不論那種方式好,其實WINDOWS下也可以用指令來達到相同效果,不過只適合用在常見的檢查,畢竟你不會想把所有查詢的機碼一條條全都用指令輸入吧!

雖然如此,個人覺得這部份的技巧,可以應付大部份的狀況,更何況有些時候你無法操作REGEDIT的功能(被隱藏),這時候就得靠最原始的方法來解決。


指令的使用,可以透過文字介面的HELP(/?)或是官方網頁得到訊息:

例:REG /?


在操作之前,我還是要再重申一次,這部份的動作還是有它的風險存在,就連M$官方都不對自行修改REG檔造成的風險背書了

如果有興趣去翻文字介面或看官方說明的人,其實它上面已經寫的挺詳細的,只是要看你怎麼應用,或者說你對於登錄檔的瞭解有多少?(應該說現行的惡意程式最愛竄改那些部份)

就拿我先前寫過有關登錄的文章來說,絕大部份的惡意程式都得在RUN這個機碼上動手腳,不然它們很難一開機就執行,或是載入某個進程中(Process)。

所以,想要直接透過WINDOWS的REG指令來查閱機碼有沒有被竄改,就可以透過簡單的語法達到這目的,對於沒有AD環境又常要維護為數不少的電腦時,也是一個方便的小工具,首要條件是你得知道你要查閱的內容有那些。

(其實有很多程式都有類似的工能,可以幫你檢查登錄檔是否異常,例:SREng...等,我這裡主要是以不須使用其它軟體的方式)

首先,你要先確認查閱的機碼有那些,例:

啟動:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

檔案檢視的相關設定:(隱藏鎖定)
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

PS:縮寫用法
REG的相關設定分為五大類,皆為HKEY開頭,後面分別為_CLASSES_ROOT_CURRENT_USER_LOCAL_MACHINE_USERS_CURRENT_CONFIG,各有各的用處,不過在使用指令時可以將_CURRENT_USER縮寫成HKCU、HKEY_LOCAL_MACHINE縮寫成HKLM...以此類推。

然後透過簡單的批次檔來查閱,並將結果輸出成文字檔,例:RUN.bat

批次內容如下:

@echo off
cls
echo.
echo 將啟動及檔案檢視的設定讀出,另存於c:\info.txt
echo.
reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" > c:\info.txt
reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" >> c:\info.txt
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" >> c:\info.txt
echo.
echo 檢視c:\info.txt文件檔
echo.
pause
type c:\info.txt|more
pause
exit

說明:相關指令可參考官方網站

1.echo off 隱藏後面執行的指令,前面@是把ECHO OFF隱藏。
2.cls 清空畫面。
3.echo 文字內容 -->執行到此,輸出文字內容。
4.reg.exe query 查詢機碼的內容。
5.> c:\info.txt 將查詢結果導向c:\info.txt檔案中。
6.>> c:\info.txt 將查詢結果接於c:\info.txt檔案末端。(不取代)
7.type c:\info.txt 輸出c:\info.txt的內容。
8.|more 以分頁方式顯示。
9.pause 暫停批次程式,顯示「請按任意鍵繼續...」。
10.exit 停止這個批次程式。

執行的畫面:


按下任意鍵後:(接著按SPACE鍵,就可以檢閱內容...)


我這只是做個小小的範例,網路上現在有很多類似的批次檔在使用(尤其是用在手動清除病毒),最好還是能夠自行判斷後再行使用,否則就跟使用別人提供(打包)好的程式一樣,生殺大權全在它人之手(不是懷疑那些人的善心)。

只是,小心一點總沒錯,不是嗎?你當然也可以透過批次檔把一些相關內容寫入(ADD)、匯入(IMPORT)、匯出(EXPORT),甚至可以透過連線來修改或檢閱遠端的電腦,端看管理者要怎麼使用它了。