injectete .dlls wieder zu "uninjecten"

05/18/2006 00:06 Leonino#1
ist es möglich injectete .dlls wieder zu "uninjecten"
zb. bei cs wenn ich da einen cheat injectet hab kann ich ja keinen zweiten injecten und muessen die cheats direkt beim starten des spiel injectet werden oda kann man das auch noch spaeter machen
05/18/2006 08:47 neji#2
jenachdem welche Methode zum Hooken bzw Injecten verwendet wird, muss die Dll sofort injected werden, oder auch später.

Du musst aber unterscheiden, dass das alleinige Injecten der DLL nichts mit einem Cheat zu tun hat.

Als Beispiel : in der dll die du injectest stehen die Funktionen drin, die du verändern willst. Indem du die DLL in den Zielprocess (das Spiel) lädst, werden dessen Funktinoen auch in den Speicherbereich dieses Processes geschrieben und stehen ihm so zur verfügung.....so weit , so gut, aber benutzen wird es die trotzdem nicht, warum auch.

Erst wenn man jetzt die Funktion sucht, die geändert/ausgetauscht werden soll, und dort an den Anfang der Funktion einen Jump zum Speicherbereich deiner Funktion aus der DLL schreibt, wird diese statt der Originalfunktion benutzt..

Hier ist jetzt das Problem, wenn du die dll Uninjecten würdest, den Jump aber nicht entfernst und durch die Originalbytes austauschst, dann wird das Spiel beim Aufruf der Originalfunktion an eine Stelle springen, an der sich deine Funktion aber nichtmehr befindet, denn du hast ja über das uninjecten diesen Speicherplatz wieder für andere Dinge freigegeben und das Spiel wird mit 99%iger Wahrscheinlich abstürzen.

Außerdem gibt es viele verschiedene Methoden eine Funktion zu Hooken. z.b. durch das setzen des beschriebenen Jumps, oder auch durch das austauschen der exportadressen, etc

um einen cheat rückgängig zu machen muss man auf jeden Fall wissen, welche Methode zum Hooken benutzt worden ist. Handelt es sich z.b. um die Methode mit dem Jump ist es einfach den Chat rückgängig zu machen....dazu müsste man nämlich nur die Originaldatei ein zweites mal laden...dort die ersten 5 Bytes der entsprechenden Funktion raussuchen und im Spiel direkt überschreiben (es wird also quasi der Jump , der 5 Bytes groß ist, durch den Originalaufruf ersetzt). Nun wird die eigene Funktion nicht mehr angesprungen --> cheat ist weg.
05/18/2006 14:26 Leonino#3
ok omg musste das 2 mal lesen bevor ichs verstanden hab und bin zu dem schluss gekommen das ich doch lieber das spiel neu starte um nen anderen cheat zu laden :)