DLL Uninjection möglich?

08/28/2011 23:20 uragan#1
Hallo
Hab eine dll injected mit autoit, nun möchte ich dies wieder deaktivieren.

Es das ganze möglich ohne Process zu beenden oder in der DLL die möglichen funktionen einzubauen?

Fall ja, bitte ein Tipp :)

Danke
08/29/2011 07:47 buFFy!#2
wenn die dll was am speicher verändert, sollten diese veränderungen in der DllMain im 'DLL_PROCESS_DETACH' block stehen. (zummindest wenn hooks gesetzt werden).

ansonsten gibts da 'FreeLibrary'. musst du natürlich im target prozess aufrufen, aber dafür hast du ja GetProcAddress. also eigentlich der gleiche trick den man bei der injektion mit createremotethread verwendet, nur eben ein bisschen an die ejektion angepasst.
08/29/2011 14:51 uragan#3
d.h. wenn in DllMain kein DLL_PROCESS_DETACH eintrag ist, und man FreeLibrary benutzt, dann Crash der Anwendung?
08/29/2011 16:33 buFFy!#4
nein, aber wenn eine dll einen hook setzt der zum code in der dll springt, die dll aber nicht mehr geladen ist, wird die anwendung abstürzen.

mittlerweile entfernen die wenigsten ihre hooks in der detach methode. du musst halt schauen ob das funktioniert. aber wie gesagt, sobald erwartet wird das die dll im addressraum des prozesses ist, dies aber nicht ist weil du sie ejeziert hast, wird die anwendung crashen.
08/29/2011 18:24 uragan#5
Quote:
nein, aber wenn eine dll einen hook setzt der zum code in der dll springt, die dll aber nicht mehr geladen ist, wird die anwendung abstürzen.
Das hatte ich auch gemeint mit CRASH :)

ok, ich sehe es ist besser die dll drin zu lassen, und eine Abfrage mit bool "enable" zu machen. und nen enabler z.b. per tastendruck

Danke buFFy!
08/29/2011 20:01 buFFy!#6
nicht jede dll setzt zwangsläufig einen hook. wenn du dein problem schilderst gibts sicher alternativen.
08/29/2011 20:14 Che#7
wie wärs, die geladene dll mit ner leeren dll zu überschreiben? so kriegste keine aufruffehler
08/29/2011 20:16 buFFy!#8
blödsinn. wenn eine vorher geladene dll nen hook setzt dann wird, nach dem überschreiben, ins leere gesprungen.

so kann dann natürlich auch kein code exekutiert werden mit dem wir zurück zum ursprung kommen und unser programm .. stürzt ab!
08/29/2011 21:53 uragan#9
ich schaue mal was sich machen lässt, wenn ich keine möglichkeit finde weiter, dann setzen wir das ganze fort :)