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% 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
).
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:
Im Allgemeinen sollte die dll, die Sie injizieren, sich selbst entladen (siehe DllMain
funktioniert ), entweder manuell oder automatisch, wenn der Host geschlossen wird.
Tags und Links c++ dll-injection