Mehr aus Windows herausholen mit RunDLL32

RunDll32

Rundll32 ist ein Programm, das speziell präparierte Funktionen einer Dll ( Dynamic link library ) aufrufen kann. Auf Funktionen einer Dll kann ansonsten nur mit Programmierkenntnissen zugegriffen werden. Ursprünglich als internes Microsoft Test Tool entwickelt, wurde es später offiziell mit Windows ausgeliefert.

Um Rundll32 verstehen zu können, muss man jedoch zuerst eine Vorstellung davon haben, wie eine Dll funktioniert.

Ausführbare Dateien / Executables

Executables sind Dateien die ein ausführbares Programm beinhalten, sogenannten Programm Code. z.B.: Notepad. Klickt man dessen Icon an, so startet das Programm, ganz simple.

Windows kennt grundlegend zwei unterschiedliche Typen von Executables:

Programme ( z.B.: .exe )

executable

Programme sind direkt ausführbar und benötigen keine weiteren Hilfsmittel. Nach deren Start, z.B.: durch Doppelklick des Icons, wird direkt das Programm ( Main ) aufgerufen und verrichtet ab da seinen Dienst … bis es wieder geschlossen wird.

Bibliotheken ( z.B.: .dll )

dll

Bibliotheken sind hingegen nicht direkt ausführbar. Versucht man sie per Doppelklick zu starten so passiert entweder gar nichts, oder man erhält eine Fehlermeldung. DLL’s sind eine Ansammlung von nützlichen Funktionen, die von Programmen verwendet werden können. Will man Funktionen aus einer DLL benutzen, so benötigt es immer ein Programm.

Hier kommt nun rundll / rundll32 ins Spiel.

RunDLL

RunDll.exe können wir gleich streichen, da dies die uralte 16 Bit Version war. In aktuellen OS Versionen ist nur noch die 32 / 64 Bit Version enthalten.

RunDLL32

Mit RunDll32.exe können nun die Funktionen einer DLL für eigene Bedürfnisse aufgerufen werden.

Windows selbst verwendet rundll32.exe recht häufig und auch in der Windows Gemeinde ist rundll32 sicher kein Geheimtipp mehr.

Kann ich nun alle Windows API Funktionen mit rundll32 aufrufen ?!

Nein ! Leider funktioniert das nicht.

Der Grund liegt darin, dass eine DLL Funktion speziell für die Benutzung durch rundll32 präpariert sein muss. Ist sie nicht für rundll32 vorgesehen, funktioniert der Aufruf nicht. Noch schlimmer, ein falscher Aufruf kann sogar fatale Folgen haben.

Vergleichen könnte man dies mit einer fest sitzenden Schraube:

screw

Nur mit dem richtigen Werkzeug lässt sie sich unbeschadet lösen.

pliers

Verwendet man das falsche Werkzeug, so funktioniert es nicht, im schlimmsten Falle geht sie sogar kaputt.

Hat man eine Funktion in einer DLL gefunden, die von rundll32 verwendet werden kann, lässt sich die Funktion nach folgendem Schema aufrufen:

Beispiel:

Controls: RunDll32.exe shell32.dll,Control_RunDLLFolder
Optionen: RunDll32.exe shell32.dll,Options_RunDLL
Lock Computer: RunDll32.exe user32.dll,LockWorkStation
Network Mapping: Rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL Connect
IE Favoriten: Rundll32.exe shdocvw.dll,DoOrganizeFavDlg
Printers: Rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder
Cached Credentials: RunDll32.exe keymgr.dll,KRShowKeyMgr
Savely remove: Rundll32.exe shell32.dll,Control_RunDLL HotPlug.dll
Taskbar Properties: RunDll32.exe shell32.dll,Options_RunDLL 1
Windows About: RunDll32.exe shell32.dll,ShellAboutW
Fonts: Rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolderUser
Profile: Rundll32.exe sysdm.cpl,EditUserProfiles
Screen Saver: Rundll32.exe shell32.dll,Control_RunDLL desk.cpl,screensaver,@screensaver
Network Diagnostic: Rundll32.exe ndfapi,NdfRunDllDiagnoseIncident
Drucker hinzufügen: Rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL AddPrinter

Praxis: Nützliche rundll32 Aufrufe

Für Profis …

Jede Funktion einer DLL, die durch rundll32 benutzt werden soll, muss die folgende Funktions Signatur aufweisen:

Nur dann kann rundll32 die Funktion korrekt aufrufen. Versucht man eine Funktion auszuführen, die nicht dieser Signatur entspricht, kann es unter Umständen gefährlich werden, da der Stack korrupiert ist.

Beispiel eine DLL „testdll“ die eine Funktion „Hello“ exportiert.

Test bei einer Dll die nicht für rundll32 geschrieben wurde:

Passiert das …

rundll32 Fehler

oder das …

rundll32 Error

Erst wenn die Funktion der korrekten Signatur entspricht funktioniert der Aufruf:

rundll32 OK

Immer auf dem Laufenden !
Liken Sie uns jetzt auf Facebook
Keinen Artikel verpassen !
Folgen Sie uns jetzt auf Twitter

Fanden Sie den Artikel interessant ? Dann empfehlen Sie ihn doch gleich weiter !

Sagen Sie uns Ihre Meinung !

Happy new year 2016 !
Happy New Year 2016 !
Google Tips
Die besten Google Tipps, Hacks, Games und Easter Eggs !
Registry Quiz
Sind Sie ein Windows Registry Experte ?
Coder Myths
14 hartnäckige Programmier(er) Mythen und Irrtümer
Password Sünden / Password Sins
13 gefährliche Passwort Sünden
Passwort Generator / password generator
Online Passwort Generator
Password Hacker
Passwort Hacker – Wie kommen Hacker an Ihre Passwörter ?
Leet
Leet – die Hacker Sprache
Spy++ Title
Windows Fenster Spionage mit Spy++
Registry Quiz
Sind Sie ein Windows Registry Experte ?
Title ProcMon
Prozess Monitor – Programmen auf die Finger geschaut !
Windows Construct
Fenster im Eigenbau !
Coder Myths
14 hartnäckige Programmier(er) Mythen und Irrtümer
Windows Construct
Fenster im Eigenbau !
Debug Messages
Programmierer Geflüster abhorchen
Registry timestamp / Registry Zeitstempel
Registry Keys haben einen Zeitstempel ?!
Title ProcMon
Prozess Monitor – Programmen auf die Finger geschaut !
WMI Code Creator
WMI Code Creator – WMI ganz komfortabel
Environment Variables / Umgebungs Variablen
Windows konfigurieren mit Umgebungsvariablen
Passwort Generator / password generator
Online Passwort Generator