D
Hallo Proc!
Ich habe mich auch schon viel mit DLL-Injektion beschäftigt, weil ich das Thema einfach unglaublich interessant finde - der Gedanke, ein anderes Programm dein eigenen Code ausführen zu lassen.
Jedenfalls hatte auch ich am Anfang einige Probleme:
proc schrieb:
Und es funktioniert alles ohne Probleme ich hatte mich nur erst gewundert warum es nicht ging (keine Fehlermeldungen oder so es funktionierte einfach nicht GetLastError hatte sich auch nich beschwert) bis ich auf die Idee kam mal den Windows Taschenrechner in den Ordner zu kopieren wo der Injector liegt danach ging es.
Du musst den Pfad der DLL absolut angeben, also, wenn zum Beispiel deine Bibliothek im Order C:\Programmierung\C++\DllInjektion\ liegt, musst du alle Ordner auch angeben.
char *DLL_NAME = "C:\\Programmierung\\C++\\DllInjektion\\myDll.dll"
Wichtig: Denk an die doppelten '\'. Das sind Escape-Characters und wenn du sie nicht doppelt schreibst, weiß Windows nicht was Du meinst bzw. versteht Dich falsch.
CreateRemoteThread bewirkt, dass ein Thread - ich hoffe mal Du weißt was das ist . - in dem Zielprozess erstellt. Dafür musst du nur die nötigen Rechte für den Process haben, nämlich
http://msdn.microsoft.com/ schrieb:
PROCESS_CREATE_THREAD, PROCESS_QUERY_INFORMATION, PROCESS_VM_OPERATION, PROCESS_VM_WRITE, and PROCESS_VM_READ
. Da der Thread in dem virtuellen Speicherraum des Zielprozesses gestartet wird, hat er auch Zugriff auf mit VirtualAllocEx-allokierten Speicher, womit letztendlich Deine DLL-Injektion funktioniert.
Ich hoffe ich konnte Dir helfen!
LG DerCoder