rundll32.exe

runDLL32.exe ist ein Win32-Dienstprogramm von Microsoft Windows ab Windows 95 und wird verwendet, um Win32-Funktionen aus Programmbibliotheken als eigenständige Routinen auszuführen. Dabei können nur Funktionen ausgeführt werden, die in der Programmbibliothek explizit für das Ausführen mit diesem Dienstprogramm deklariert wurden. In älteren Windows-Versionen (Windows 95 bis Windows Me) ist aus Kompatibilitätsgründen die 16-bit-Version RUNDLL.EXE zum Ausführen von Win16-Funktionen noch enthalten.[1]

Die Datei befindet sich bei Windows NT bis Windows 10 im Ordner %windir%\system32 (also zum Beispiel C:\WINNT\system32) und bei Windows 95 bis Windows ME direkt im Windows-Verzeichnis (also zum Beispiel C:\Windows). Bei 64-Bit-Betriebssystemen befindet sich die Datei in der 32-Bit-Version (Windows on Windows) zusätzlich unter %windir%\SysWOW64.

Diese Anwendungen sind in der Automatisierung von systemnahen Abläufen wichtig. Daher gehört die rundll32.exe zu den durch Malware gefährdeten Angriffspunkten und ist so vielen Anwendern namentlich bekannt geworden.

Programmbibliotheken

Eine Programmbibliothek (DLL-Datei) dient dazu, anderen Programmen Funktionen als Programmmodul zur Verfügung zu stellen, kann jedoch normalerweise nicht direkt ausgeführt werden. Die RunDLL erlaubt das Aufrufen einzelner Funktionen einer solchen Schnittstelle beispielsweise an der Kommandozeile, aus Skripten oder als Verknüpfung. Die Ausführung erfolgt in einem eigenen Prozess, daher werden RunDLL-Aufrufe auch von anderen Programmen verwendet, die sich vor Fehlern im aufgerufenen DLL schützen wollen. Auf die gleiche Weise können auch Programmfunktionen in ausführbaren Systemdateien (EXE-Dateien) aufgerufen werden.

Beispiele:

  • rundll32 SHELL32.DLL,Control_RunDLL hotplug.dll[2]
    • öffnet die Funktion Hardware entfernen oder auswerfen, wie sie etwa für USB-Sticks gebraucht wird
  • rundll32 SHELL32.DLL,SHExitWindowsEx 2[3]
    rundll32 USER.EXE,ExitWindowsExec[3]
  • rundll32 URL.DLL,FileProtocolHandler "%1"[4]
    • öffnet die Datei Namens %1 mit der ihr zugeordneten Standardanwendung (automatische Dateierkennung)

Control Panels

Die Control Panels (CPL-Dateien), die normalerweise über den virtuellen Ordner Systemsteuerung aufgerufen werden, können mit der RunDLL alternativ auch direkt über die Kommandozeile zugänglich gemacht werden. Das erfolgt über den Aufruf der Shell32.dll:

Code:[2]

  • rundll32 SHELL32.DLL,Control_RunDLL filename.CPL,@n,t
    • filename.CPL.CPL-Datei der Systemsteuerung
    • n ...das Applet innerhalb der.CPL-Datei
    • t ...die Nummer des Tabs, wenn das Applet mehrere davon hat

Während die Applets der einzelnen Funktionen durchaus dokumentiert sind, ist man bei der Steuerung des passenden Reiters eher auf Probieren bzw. auf Tipps in der einschlägigen Literatur und Webressourcen angewiesen.

Beispiele:

  • rundll32 SHELL32.DLL,Control_RunDLL TIMEDATE.CPL,@0,1[2]
    • öffnet die Zeitzoneneinstellung der Datum/Uhrzeit-Funktion
  • rundll32 shell32.dll,Control_RunDLL access.cpl,,4[3]
    • Einstellung der Maus-Eingabehilfe für beeinträchtigte Nutzer

Anwendung

Diese Methode kann sowohl von der Kommandozeile bzw. der Batch-Verarbeitung, aus diversen Skriptsprachen wie auch mit einfachen Verknüpfungen (LNK-Dateien) ausgeführt werden. Da die Funktionen sehr nah am Betriebssystem laufen, wird in einschlägigen Kreisen bei Experimenten Vorsicht angeraten, und nur dem einigermaßen geübten Benutzer empfohlen.

Typische Fehlerquellen

Es wird erwartet, dass die von Rundll32.exe aufgerufenen Funktionen einer bestimmten Signatur entsprechen:[5]

void CALLBACK NameDerFunktion(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);

Üblicherweise wird diese Einschränkung allerdings missachtet[6] (auch von Beispielen auf dieser Seite). Das führt in jedem Fall zu einer Korruption des Stacks[7] und zu unvorhergesehenem Verhalten, beispielsweise Endlosschleifen.

Sicherheit

Aufgrund ihrer häufigen Verwendung durch Programme, durch die rundll32 in der Prozessliste häufig auftauchen kann, wird die rundll32 oft von Viren, Spyware und ähnlichem als „Namensgeber“ für deren Schädlingsprogramme genutzt.

Weiterhin ist eine Datei außerhalb von %windir% mit dem Namen rundll32.exe in den meisten Fällen ein Virus. Eine bösartig ersetzte Original-RunDLL wird aber von der Windows-Funktion Systemwiederherstellung abgesichert, die Systemdateien automatisch auf einen verlässlichen Zustand zurücksetzt.

Liste von Funktionen

Folgend eine Liste typischer Funktionen. Der erste Parameter ist durchwegs eine .dll- oder .exe-Datei, dass die Endung nicht angegeben ist, liegt daran, dass sie über die Path-Variable und den windowstypischen Ergänzungsschlüssel *.exe → *.dll → andere Dateien gefunden wird. Der zweite Parameter ist der Name der Routine, die weiteren Parameter sind Eingabewerte an diese Routine, z. B. bei einigen Dialogen mit mehreren Registerkarten die Nummer der Registerkarte als ,@1 oder ,,1.

Diese Aufrufe sind i. d. R. nicht offiziell dokumentiert, daher kann sich die Verfügbarkeit in Abhängigkeit von Betriebssystemsversion und Edition, u. U. auch von Service Pack, Update oder Software Dritter unterscheiden.

BefehlBeschreibung9x/MEXP / 2000VistaWindows 7
rundll32.exe User,tilechildwindowsAlle geöffneten Tasks automatisch nebeneinander anordnenjaneinneinnein
rundll32.exe User32.dll,LockWorkStationSperrt den Computerneinjajaja
rundll32.exe User,cascadechildwindowsAlle geöffneten Tasks automatisch hintereinander anordnenjaneinneinnein
rundll32.exe Msprint2.dll, RUNDLL_PrintTestPageTestseite auf einen Drucker ausgebenjaneinneinnein
rundll32.exe Sysdm.cpl,InstallDevice_RundllHardwareassistenten startenjaneinneinnein
rundll32.exe User,wnetcancelconnection <Servername>Trennen der Netzverbindung zum Netwareserverjaneinneinnein
rundll32.exe User,wnetconnectdialogNetzwerklaufwerke verbindenjaneinneinnein
rundll32.exe User,wnetdisconnectdialogNetzwerklaufwerke trennenjaneinneinnein
rundll32.exe User,repaintscreenBildschirminhalt aktualisierenjaneinneinnein
rundll32.exe User,setcursorposSetzt Mauscursor links oben in die Eckejaneinneinnein
rundll32.exe Diskopy,DiskCopyRunDllRuft Diskcopy aufjaneinneinnein
rundll32.exe powrprof.dll,SetSuspendStateVersetzt den Rechner in den Standby- oder (wenn aktiviert) den Ruhezustandneinjajaja
rundll32.exe printui.dll,PrintUIEntry /y /n <Druckername>Einen Standarddrucker festlegenneinjajaja
rundll32.exe Rnaui.dll, RnaWizardDFÜ-Netzwerk startenjaneinneinnein
rundll32.exe Rnaserv, CallerAccessDFÜ-Serverjaneinneinnein
rundll32.exe Shell, shellexecuteExplorer öffnenjaneinneinnein
rundll32.exe Shell32,OpenAs_RunDLLBox „Öffnen mit“ aufrufenjajajaja
rundll32.exe Shell32,SHFormatDriveDiskette formatierenjaneinneinnein
rundll32.exe Shell32,ShellAboutAInfobox (Winver)jajajaja
rundll32.exe Shell32,SHExitWindowsEx 0Windows neu startenAb Win98neinneinnein
rundll32.exe Shell32,SHExitWindowsEx 1Windows beendenAb Win98neinneinnein
rundll32.exe Shell32,SHExitWindowsEx 2Windows WarmstartAb Win98neinneinnein
rundll32.exe Shell32,SHExitWindowsExaktiven Benutzer abmeldenAb Win98neinneinnein
rundll32.exe Shell32,SHExitWindowsEx -1Windows Explorer neu startenAb Win98neinneinnein
rundll32.exe Shell32,Control_RunDLLSystemsteuerungjajajaja
rundll32.exe Shell32, Control_RunDLL desk.cplEinstellung „Anzeige“jajajaja
rundll32.exe Sysdm.cpl, InstallDevice_RundllSchnelle HardwareerkennungAb Win98neinneinnein
rundll32.exe shell32.dll,Control_RunDLL access.cplEingabehilfen (Übersicht)jaja
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1Eingabehilfen (Tastatur)jajaneinnein
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2Eingabehilfen (Sound)jajaneinnein
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3Eingabehilfen (Anzeige)jajaneinnein
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4Eingabehilfen (Maus)jajaneinnein
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5Eingabehilfen (Allgemein)jajaneinnein
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,0Software (Entfernen/Hinzufügen neuer Programme)jajajaja
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1Software (Neue Programme hinzufügen)jaja?ja (Programme vom Netzwerk installieren)
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2Software (Windows Komponenten hinzufügen oder entfernen)jajajaja
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0Eigenschaften von Anzeige (Hintergrund)jajaja (Desktop)ja
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1Eigenschaften von Anzeige (Bildschirmschoner)jajajaja
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2Eigenschaften von Anzeige (Darstellung)jajajaja
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0Ländereinstellungen (Allgemein)jajaja (Formate)ja (Formate)
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1Ländereinstellung (Zahlen)jajaja (Aufenthaltsort)ja (Aufenthaltsort)
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2Ländereinstellung (Währung)jajaja (Tastatur und Sprachen)ja (Tastatur und Sprachen)
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3Ländereinstellung (Uhrzeit)jajaja (Verwaltung)ja (Verwaltung)
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4Ländereinstellung (Datum)jajaja (Formate)ja (Formate)
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,5Ländereinstellung (Eingabe)jajaja (Formate)ja (Formate)
rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0Gamecontroller (Allgemein)jajajaja
rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1Gamecontroller (Erweitert)jajaja (Allgemein)ja (Allgemein)
rundll32.exe shell32.dll,Control_RunDLL main.cpl,@0Eigenschaften von Maus (Tasten)jajajaja
rundll32.exe shell32.dll,Control_RunDLL main.cpl,@1Eigenschaften von Tastatur (Geschwindigkeit)jajajaja
rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cplMail und FAXjaneinneinnein
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0Eigenschaften von Sounds und Multimedia (Sounds)jajaja (Wiedergabe)ja (Wiedergabe)
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1Eigenschaften von Sounds und Multimedia (Audio)jajaja (Aufnahme)ja (Aufnahme)
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2Eigenschaften von Sounds und Multimedia (Hardware)jajaja (Sounds)ja (Sounds)
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3Eigenschaften von Sounds und Multimedia (Kommunikation)--ja (Wiedergabe)ja
rundll32.exe shell32.dll,Control_RunDLL modem.cplTelefon- und Modemoptionen (Modems)jajajaja
rundll32.exe shell32.dll,Control_RunDLL ncpa.cplNetzwerkverbindungen?ja?ja
rundll32.exe shell32.dll,Control_RunDLL netcpl.cplNetzwerkeinstellungenjaneinneinnein
rundll32.exe shell32.dll,Control_RunDLL password.cplPassworteinstellungenjaneinneinnein
rundll32.exe shell32.dll,Control_RunDLL sysdm.cplSystemeigenschaften (Computername)??jaja
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0Systemeigenschaften (Allgemein)jajaneinnein
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1Systemeigenschaften (Netzwerkidentifikation)jajaja (Computername)ja (Computername)
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2Systemeigenschaften (Hardware)jajajaja
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3Systemeigenschaften (Benutzerprofile)jajaja (Erweitert)ja (Erweitert)
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,4Systemeigenschaften (Erweitert)jajaja (Computerschutz)ja (Computerschutz)
rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0Eigenschaften von Datum/Uhrzeit (Datum und Uhrzeit)jajajaja
rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1Eigenschaften von Datum/Uhrzeit (Zusätzliche Uhren)--jaja
rundll32.exe shell32.dll,Control_RunDLL powercfg.cplEnergieverwaltung-jajaja
rundll32.exe diskcopy.dll,DiskCopyRunDllDiskcopyjajaneinnein
rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL AddPrinterDrucker hinzufügenjajajaja
rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL PrintersFolderDrucker anzeigenjajajaja
rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL FontsFolderSchriftarten anzeigenjajajaja
rundll32.exe dwmApi.dll,#102Windows Vista Aero Glass Effekt anschaltenneinneinjanein
rundll32.exe dwmApi.dll,#104Windows Vista Aero Glass Effekt ausschaltenneinneinjanein

Weblinks

Einzelnachweise

  1. microsoft.com/kb/164787
  2. a b c nach Rob van der Woude
  3. a b c nach Dx21
  4. c't Hotline 17/2007, S. 178
  5. support.microsoft.com
  6. blogs.msdn.com
  7. blogs.msdn.com