Rundll32介紹和使用方法
動態連結程式庫函數啟動器——Rundll32
經常聽到有些朋友說:呀!系統的註冊表啟動項目有rundll32.exe,系統進程也有rundll32.exe,是不是病毒呀?其實,這是對 rundll32.exe介面不瞭解,它的原理非常簡單,瞭解並掌握其原理對於我們平時的應用非常有用,如果能理解了原理,我們就能活學活用,自己挖掘 DLL參數應用技巧。
Rundll32.exe和Rundll.exe的區別
所謂 Rundll.exe,可以把它分成兩部分,Run(運行)和DLL(動態資料庫),所以,此程式的功能是運行那些不能作為程式單獨啟動並執行DLL檔案。而 Rundll32.exe則用來運行32位DLL檔案。Windows 2000/XP都是NT核心系統,其代碼都是純32位的,所以在這兩個系統中,就沒有rundll.exe這個程式。
相反, Windows 98代碼夾雜著16位和32位,所以同時具有Rundll32.exe和Rundll.exe兩個程式。這就是為什麼Windows 98的System檔案夾為主系統檔案夾,而到了Windows 2000/XP時就變成System32為主系統檔案夾(這時的System檔案夾是為相容16位代碼設立的)。
Rundll.exe是病毒?
無論是Rundll32.exe或Rundll.exe,獨立運行都是毫無作用的,要在程式後面指定載入DLL檔案。在Windows的工作管理員 中,我們只能看到rundll32.exe進程,而其實質是調用的DLL。我們可以利用進程管理器等軟體(本刊2004年21期有介紹)來查看它具體運行 了哪些DLL檔案。
有些木馬是利用Rundll32.exe載入DLL形式啟動並執行,但大多數情況下Rundll32.exe 都是載入系統的DLL檔案,不用太擔心。另外要提起的是,有些病毒木馬利用名字與系統常見進程相似或相同特點,瞞騙使用者。所以,要確定所啟動並執行 Rundll32.exe是在%systemroot%system32目錄下的,注意檔案名稱也沒有變化。
相信大家在論壇上很 常看見那些高手給出的一些參數來簡化操作,如rundll32.exe shell32.dll,Control_RunDLL,取代了冗長的“開始→設定→控制台”,作為菜鳥的我們心裡一定痒痒的。他們是怎麼知道答案的? 我們如何自己找到答案?分析上面命令可以知道,其實就是運行Rundll32.exe程式,指定它載入shell32.dll檔案,而逗號後面的則是這個 DLL的參數。瞭解了其原理,下面就可以自己挖掘出很多平時罕為人知的參數了。
第一步:運行eXeScope軟體,開啟一個某個DLL檔案,例如shell32.dll。
第二步:選擇“匯出→SHELL32.DLL”,在右邊視窗就可以看到此DLL檔案的參數了。
第三步:這些參數的作用一般可以從字面上得知,所以不用專業知識。要注意的是,參數是區分大小寫,在運行時一定要正確輸入,否則會出錯。現在隨便 找一個參數,例如RestartDialog,從字面上理解應該是重啟對話方塊。組合成一個命令,就是Rundll32.exe shell32.dll,RestartDialog ,運行後可以看見平時熟悉的Windows重啟對話方塊。
現在,我們已經學會了利用反編譯軟體來擷取DLL檔案中的參數,所以以後看到別人的一個命令,可以從調用的DLL檔案中擷取更多的命令。自己摸索,你就能瞭解更多調用DLL檔案的參數了。
小資料
常用的rundll32參數
命令: rundll32.exe shell32.dll,Control_RunDLL
功能: 顯示控制台
命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
功能: 顯示“控制台→輔助選項→鍵盤”
命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
功能: 執行“控制台→添加新硬體”
命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
功能: 執行“控制台→添加新印表機”
命令:rundll32.exe DISKCOPY.DLL,DiskCopyRunDll
功能:啟動磁碟片複製視窗