rundll32
執行DLL文件中的內部函數
Rundll32.exe是什麼?顧名思意,"執行32位的DLL文件"。它的作用是執行DLL文件中的內部函數,這樣在進程當中,只會有Rundll32.exe,而不會有DLL後門的進程,這樣,就實現了進程上的隱藏。介紹一下Rundll32.exe這個文件,功能就是以命令行的方式調用動態鏈接程序庫。系統中還有一個Rundll.exe文件,他的意思是"執行16位的DLL文件",其命令行下的使用方法為:Rundll32.exe DLLname,Functionname Arguments,DLLname為需要執行的DLL文件名;Functionname為前邊需要執行的DLL文件的具體引出函數;Arguments為引出函數的具體參數。
進程文件: rundll32 或者 rundll32.exe
正常位置:X:(當前系統分區)\windows\system32
描述:test for netguide..----Caiger2008
屬於:Microsoft Windows Operating System
後台程序:是
使用網路:否
硬體相關:否
常見錯誤:未知N/A
內存使用:未知N/A
安全等級 (0-5): 0
間諜軟體:否
Adware: 否
廣告軟體:否
木馬: 否
動態鏈接庫函數啟動器——Rundll32
經常聽到有些朋友說:系統的註冊表啟動項目有rundll32.exe,系統進程也有rundll32.exe,是不是病毒呀?其實,這是對 rundll32.exe介面不了解,它的原理非常簡單,了解並掌握其原理對於我們平時的應用非常有用,如果能理解了原理,我們就能活學活用,自己挖掘 DLL參數應用技巧。
與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位代碼設立的)。
rundll32的正常位置:c:\windows\system32
如果不是這個位置,則肯定是病毒
Rundll32.exe是什麼?顧名思義,“執行32位或者64位的DLL文件”。它的作用是執行DLL文件中的內部函數,這樣在進程當中,只會有 Rundll32.exe,而不會有DLL後門的進程,這樣,就實現了進程上的隱藏。如果看到系統中有多個Rundll32.exe,不必驚慌,這證明用 Rundll32.exe啟動了多少個的DLL文件。當然,這些Rundll32.exe執行的DLL文件是什麼,我們都可以從系統自動載入的地方找到。
對於Rundll32.exe這個文件,意思上邊已經說過,功能就是以命令行的方式調用動態鏈接程序庫。系統中還有一個 Rundll.exe文件,他的意思是“執行16位的DLL文件”,這裡要注意一下。在來看看Rundll32.exe使用的函數原型:
Void CALLBACK FunctionName (
HWND hwnd,
HINSTANCE hinst,
LPTSTR lpCmdLine,
Int nCmdShow
);
其命令行下的使用方法為:Rundll32.exe DLLname,Functionname [Arguments]
DLLname為需要執行的DLL文件名;Functionname為前邊需要執行的DLL文件的具體引出函數;[Arguments]為引出函數的具體參數。
Rundll 執行以下步驟:
1. 它分析命令行。
2. 它通過 LoadLibrary() 載入指定的 DLL。
3. 它通過 GetProcAddress() 獲取 函數的地址。
4. 它調用 函數,並傳遞作為 的命令行尾。
5. 當 函數返回時,Rundll.exe 將卸載 DLL 並退出。
常用Windows9x的朋友一定對Rundll32.exe和Rundll.exe這兩個檔案不會陌生吧,不過,由於這兩個程式的功能原先只限於在微軟內部使用,因而真正知道如何使用它們的朋友想必不多。那麼好,如果你還不清楚的話,那麼就讓我來告訴你吧。
首先,請你做個小實驗(請事先保存好你正在執行的程式的結果,否則...):點擊“開始-程式-Ms-Dos方式”,進入Dos視窗,然後鍵入 rundll32.exe user.exe,restartwindows,再按下回車鍵,這時你將看到,機器被重啟了!怎麼樣,是不是很有趣?
當然,Rundll的功能絕不僅僅是重啟你的機器。其實,Rundll者,顧名思義,執行Dll也,它的功能就是以命令列的方式呼叫Windows的動態鏈結庫,Rundll32.exe與Rundll.exe的區別就在於前者是呼叫32位的鏈結庫,而後者是運用於16位的鏈結庫,它們的命令格式是:
RUNDLL.EXE ,,
這裡要注意三點:1.Dll檔案名中不能含有空格,比如該檔案位於c:\ ProgramFiles\目錄,你要把這個路徑改成c:\Progra~1\;2.Dll檔案名與Dll入口點間的逗號不能少,否則程式將出錯並且不會給出任何資訊!3.這是最重要的一點:Rundll不能用來呼叫含返回值參數的Dll,例如Win32API中的GetUserName(), GetTextFace()等。在Visual Basic中,提供了一條執行外部程式的指令Shell,格式為:
相信大家在論壇上很常看見那些高手給出的一些參數來簡化操作,如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.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
功能:啟動軟盤複製窗口
如果能配合Rundll32.exe用好Shell指令,會使您的VB程式擁有用其他方法難以甚至無法實現的效果:仍以重啟為例,傳統的方法需要你在VB工程中先建立一個模組,然後寫入WinAPI的聲明,最後才能在程式中呼叫。而此刻只需一句:
命令列 : rundll32.exe shell32.dll,Control_RunDLL 功能: 顯示控制面板
更簡便的方法:Shell "shutdown -s -t 0"
無論是Rundll32.exe或Rundll.exe,獨立運行都是毫無作用的,要在程序後面指定載入DLL文件。在Windows的任務管理器中,我們只能看到rundll32.exe進程,而其實質是調用的DLL。我們可以利用進程管理器等軟體來查看它具體運行了哪些DLL文件。
有些木馬是利用Rundll32.exe載入DLL形式運行的,但大多數情況下Rundll32.exe 都是載入系統的DLL文件,不用太擔心。另外要提起的是,有些病毒木馬利用名字與系統常見進程相似或相同特點,瞞騙用戶。所以,要確定所運行的 Rundll32.exe是在%systemroot%system32目錄下的,注意文件名稱也沒有變化。
一般情況 出現該文件或者相類似的文件時,大都是因為病毒原因,建議下載殺毒軟體查殺一下電腦安全:
rundll32一般不是病毒,它是系統必須的組件之一,不可以刪除,強烈建議你打開殺毒軟體的監控,以便及時發現病毒
rundl132.exe才是病毒 是阿拉伯數字1而不是字母l
你直接在C:\WINDOWS\system32 下刪除
並在註冊表啟動項里去除rundl132.exe
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\
===========
C:\\WINDOWS\\uninstall 這個目錄下的是威金變種了。。
用專殺清除!手動難以清除其他被感染的可執行文件(EXE等)
建議打開任務管理器,檢查RUNDLL32.exe進程所屬的用戶名,如果是屬於系統,那中毒的機率就很小,如果顯示的是當前用戶,哪情況就不妙了。
1.最新版殺毒軟體都可以查殺
2.一些修復工具,比如金山急救箱,360急救箱......(測試過,可以查殺該木馬病毒,並修復rundll32.exe文件)
可在任務管理器中先結束該進程后,利用殺毒軟體徹底查殺,或進而轉為安全模式查殺。
rundll32手工查殺方法
(1) 在WINDOWS目錄中查找run32.exe文件,如果發現則證明病毒存在,則將同目錄下的rundll32.exe文件刪除,將run32.exe文件改名為:rundll32.exe。
(2) 在WINDOWS目錄中查找regedit.exe.sys文件,如果找到則證明病毒存在,將同目錄下的regedit.exe文件刪除,將regedit.exe.sys文件改名為regedit.exe。
如果無法刪除這些文件,可以用啟動盤進入DOS模式下,將這些病毒文件刪除。然後,進入註冊表編輯器,查看註冊表的HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion\Run項,看其中是否有上面提到的文件,如果有,則將這些鍵值刪除即可清除病毒註冊的鍵值;查看註冊表的HKEY_CLASSES_ROOT\Exefile\shell\open\command的鍵值,正確的“默認”項的內容為:“"%1"%*”,如果不是,則修改;查看註冊表的HKEY_CLASSES_ROOT\Txtfile\shell\open\command的鍵值,正確的“默認”項的內容為:“%SystemRoot%\system32\NOTEPAD.EXE %1”,如果不是,則修改。此時,病毒被清除。
1、打開360殺毒,電腦修復--電腦門診--輸入“控制”根據自動提示點擊;
2、找到對應的rundll32.exe應用程序錯誤並進行修復。
修復rundll32應用程序錯誤