Nach dem Injizieren der DLL aus dem laufenden Prozess auswerfen

8

Ich schrieb diese Funktion, um DLL in laufenden Prozess zu injizieren:

%Vor%

Und es funktioniert großartig, aber als ich versuchte, die DLL auszustoßen, konnte ich keine Informationen über das Unhooking finden. Ich habe versucht, eine Funktion zu bauen, um das zu tun, und ich denke, ich bin nah dran Das ist, was ich bis jetzt habe:

ist das der richtige Weg? Wenn ja, welchen Parameter sollte ich in createRemoteThread instate von VirtualMem übergeben (Das wurde in der injizierenden Funktion verwendet) ...

%Vor%     
Dano 04.12.2011, 01:22
quelle

2 Antworten

10

Auf 32-Bit-Systemen enthält der Wert von ThreadTeminationStatus nach GetExitCodeThread den Rückgabewert von LoadLibraryA im Remote-Prozess. Dies ist das Modul-Handle der neu geladenen DLL. Sie können es als Parameter für FreeLibrary im Remote-Thread verwenden.

Wenn Sie den Code für 64-Bit-Windows verwenden möchten, wird der Thread-Exit-Code auf 32-Bit DWORD gekürzt, so dass er unbrauchbar ist. Sie müssen eine aufrufbare Routine im Remote-Prozess erstellen (wie von Necrolis vorgeschlagen) oder die Modulbasis der DLL über psapi oder die Toolhilfe API ( CreateToolhelp32Snapshot , Module32First , Module32Next ).

    
pezcode 04.12.2011, 01:40
quelle
6

Sie müssen ihm die HANDLE der DLL übergeben, die Sie injiziert haben, sonst können Sie ihm VirtualMem übergeben, aber dann müsste Ihre Remote-Thread-Routine lauten:

%Vor%

Im Allgemeinen sollte die dll, die Sie injizieren, sich selbst entladen (siehe DllMain funktioniert ), entweder manuell oder automatisch, wenn der Host geschlossen wird.

    
Necrolis 04.12.2011 01:33
quelle

Tags und Links