Eine
DLL-Injizierung ist wirklich nicht schwer. Du musst lediglich den Zielprozess veranlassen,
die
DLL zu laden.
Mit der
API CreateRemoteThread können wir einen Thread in einem Zielprozess starten.
Du musst also einen Thread für LoadLibraryA erstellen. Den Pfad zur
DLL Datei,
welchen ja LoadLibraryA braucht, musst du als Parameter beim Aufruf von CreateRemoteThread
übergeben. Du allozierst also einfach einen "zufälligen" Speicherbereich. In diesen
speicherst du den Pfad zur
DLL Datei. Den Zeiger zur Adresse des Speicherbereichs,
sowie die Addresse zu LoadLibraryA (einfach mit GetProcAddress die Adresse holen) übergibst
du dann an CreateRemoteThread.
Delphi-Quellcode:
CreateRemoteThread(
hProcess: Cardinal;
//Handle zum Zielprozess
lpThreadAttributes: Pointer;
dwStackSize: Cardinal;
lpStartAddress: Pointer;
//Adresse von LoadLibraryA
lpParameter: Pointer;
//Adresse zum allozierten Speicherbereich
dwCreationFlags: Cardinal;
var lpThreadId: Cardinal
);
stdcall;
1. Mit OpenProcess eine Verbindung zum Zielprozess erstellen.
2. Einen Speicherbereich im Kontext des Zielprozesses allozieren.
3. In den Speicherbereich den Pfad zur
DLL Datei mit WriteProcessMemory schreiben.
4. Per CreateRemoteThread einen Thread für LoadLibraryA erstellen.
5. Das
Handle zum Zielprozess mit CloseHandle wieder schliessen.
Ich hoffe, ich konnte dir helfen.
Postskriptum: Falls du eine ausführlichere Beschreibung lesen willst:
http://www.sk0r.pixeldraw.de/tutorials/hackloader.htm (Achtung: Dort sind Rechtschreibfehler enthalten, bei deinen einem schlecht werden kann)
MfG: sk0r