Dll-Injektion. Ausführen CreateRemoteThread mit parameter
Ich schrieb dll-Injektion-Programm, das funktioniert gut. Lädt die dll in den remote-Prozess und ruft eine Funktion. Nun möchte ich weitergeben argument für diese Funktion. CreateRemoteThread hat lpParameter, aber wie bekommen die das übergebene argument innerhalb der dll, um es in Funktion?
Update:
dll Einstiegspunkt ist üblich:
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
Dll enthält nur eine Funktion mit folgendem Prototyp:
void TestFunction(const char* ua);
Den Code zum aufrufen der Funktion ist:
CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)((void*)codecaveExecAddr), (LPVOID)argumentAddress, 0, NULL);
Wie Sie sehen, kann ich versuchen, geben Sie "test" string im inneren TestFunction. Aber dann habe ich überprüfen ua argument innerhalb TestFunction es enthält einige trash.
Hier sind die ganzen Projekt-Dateien:
http://pastebin.com/gh4SnhmV
http://pastebin.com/Sq7hpSVx
http://pastebin.com/dvgXpUYz
UPDATE 2
Sollte TestFunction bestimmten propotype oder kann ich jede verwenden, solange es nur einen parameter von Typ LPVOID? Ich bin verwirrt. Kann mir jemand ein Beispiel nennen, injiziert dll-Funktion mit Argumente?
- Wirken, dereferenzieren, verwenden Sie es.
- SB tut mir Leid, ich verstehe nicht, was du meinst. cast, was?
- Sorry, ich war als Scherz gedacht. Sie stellte eine Frage mit null details oder code und erwartet uns zu wissen, was in deinem Geist, und so gab ich eine Antwort in dem gleichen Geist. Die wirkliche Antwort ist, "poste deinen code und spezifisch".
- SB gab ich alle Angaben um meine Frage zu beantworten. Es gibt keine post müssen ganzen dll-code hier ein, da der Algorithmus der passing argument dll mit CreateRemoteThread und extrahieren es in der dll bleibt das gleiche. Ihre Antwort war nicht schlau.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie ordnen die Daten im anderen Prozess-Speicher. Für, die, Nutzung der VirtualAllocEx Funktion zurückgeben wird, die Adresse in dem anderen Prozess den Speicher, dass Sie an CreateRemoteThread.
CreateRemoteThread funktioniert auf exakt die gleiche Weise wie CreateThread, außer, dass es schafft den thread in den remote-Prozess. Eine Sache im Auge zu behalten ist, dass, wenn Sie übergeben einen Zeiger auf ein Objekt in lpParameter der remote-thread, der läuft in eine andere virtuelle Adressraum wird versuchen, Zugriff auf die Adresse in , dass Adressraum.