Thema: Delphi dll-injection

Einzelnen Beitrag anzeigen

sk0r

Registriert seit: 1. Mai 2007
181 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: dll-injection

  Alt 3. Okt 2007, 07:24
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
  Mit Zitat antworten Zitat