rundll32

rundll32

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
  • 出品者:: Microsoft Corp.
  • 進程名稱:: Microsoft Rundll32
  • 系統進程:: 是
進程信息,套用,工作方式,作用,DLL參數,調用,常用參數,Shell,相關病毒,病毒介紹,解決方案,錯誤修復,

進程信息

進程檔案: 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() 獲取 <entrypoint> 函式的地址。
4. 它調用 <entrypoint> 函式,並傳遞作為 <optional arguments> 的命令行尾。
5. 當 <entrypoint> 函式返回時,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,格式為:

DLL參數

調用

相信大家在論壇上很常看見那些高手給出的一些參數來簡化操作,如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
功能:啟動軟碟複製視窗

Shell

如果能配合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應用程式錯誤並進行修復。

相關詞條

熱門詞條

聯絡我們