ich habe es bereits geschafft eine selbstgeschriebene .dll zu injecten. Nun habe ich allerings das Problem, dass sich der erzeugt Thread nach dem automatischen Aufruf der Funktion
wieder schließt.
Ich möchte den Thread gerne so umprogrammieren, dass er jede Sekunde einmal ein paar Adressen aus dem injizierten Prozess ausliest (wie macht man das eigentlich? Mit Read & WriteProcessmemory?) und bei einer Veränderung dieser Adressen darauf reagiert. So möchte ich die Kommunikation meines Hauptprogramms, dass die Values der Adressen ändert, und dem Thread herstellen (bessere Vorschläge nehme ich natürlich gerne entgegen ).
Ein Versuch soetwas mit einer Dauerschleife hinzubekommen ist leider gescheitert, da sich dann der ganze injizierte Prozess aufhängt. Wie könnte ich soetwas also am besten bewerkstelligen?
Bitte verwendet in euren Antworten so viele code Beispiele wie möglich, da ich mich in c++ wirklich nicht auskenne, beim Schreiben der .dll allerdings nicht drumherum komme...
ich denke mal du meinst damit jetzt, wie ich Values aus dem Prozess auslesen kann, oder?
Mein Hauptproblem ist es aber immernoch den erstellten Thread aufrecht zu erhalten und mit ihm zu kommunizieren. Alle Möglchkeiten dies zu bewerkstelligen enden allerdings damit, dass der injizierte Prozess einfriert.
Da er Funktionen im injizierten Prozess aufrufen soll, muss ich him irgendwie die Funktionsnamen und Eingabeparameter "senden".
Hast du dir überhaupt die Funktionen angeguckt ?
CreateThread -->
In den neu erstellten Thread fügst du dann deine Schleife ein, dann wird
der Prozess nicht mehr eingefroren da dann dein Code in einem
anderen Thread läuft.
Hast du dir überhaupt die Funktionen angeguckt ?
CreateThread -->
In den neu erstellten Thread fügst du dann deine Schleife ein, dann wird
der Prozess nicht mehr eingefroren da dann dein Code in einem
anderen Thread läuft.
Wird nicht schon bei der Injektion, also beim injizieren der .dll, ein neuer Thread erzeugt? Mit OllyDbg kann man den sogar sehen, wie er kurz anspringt und wieder weg ist.
1. memcpy/memset ist nur notwendig, wenn es über int/float Größe hinaus geht, ansonsten, wenn es simple 4 Bytes Adressen sind, änderst du die einfach per Pointer.
2. Deine Idee ist Quatsch, man kommuniziert mit anderen Prozessen via. FileMappings, Pipes, Windows Messages oder auch mal Winsock
Wird nicht schon bei der Injektion, also beim injizieren der .dll, ein neuer Thread erzeugt? Mit OllyDbg kann man den sogar sehen, wie er kurz anspringt und wieder weg ist.
Ja es wird ein neuer Thread erzeugt, trotzdem sollte man diesen eigentlich wenig/nicht (oder nur zum Erzeugen eines eigenen Threads) verwenden.
Wenn du den Thread nämlich zu viel machen lässt, kann das zu Problemen führen(hab aber vergessen warum/welche Probleme :P ; glaubs mir einfach)
Zb. dass der Prozess anhält.
Injectoren pausieren den Prozess für gewöhnlich so lange, bis die DllMain returnt o.ô
Sieht man zb. wenn man ne Message Loop (zb. durch nen Dialog, den man erstellt) oder irgendne andere Schleife in der DllMain hat, geht das Spiel einfach nicht weiter, der Dialog zwar schon, aber es bringt nicht viel
Außerdem gehören in Einstiegspunkte wie WinMain, DllMain, main immer nur Initialisierungen, der restliche Code kommt raus da, guter Stil undso ;O
Quote:
Wird nicht schon bei der Injektion, also beim injizieren der .dll, ein neuer Thread erzeugt? Mit OllyDbg kann man den sogar sehen, wie er kurz anspringt und wieder weg ist.
Klar, aber wenn du keine Schleife in der DllMain hast (was ich dir auch nicht empfehle) ist doch klar, dass der Thread direkt wieder verschwindet.
Habe wohl beim post von 12345 einiges überlesen :> Das ist mir natürlich alles klar deswegen habe ich ihm ja auch die CreateThread funktion gepostet ^^
Wenn ich jetzt allerdings meine DLL injecte erscheint die Messagebox nicht und das injizierte Programm stürzt ab (schließt sich einfach). Wenn ich zudem in der DllMain eine Messagebox hinzufüge scheint die Funktion DllMain eine Art Dauerschleife zu produzieren, denn immer wenn ich auf OK klicke öffnet sich die Messagebox erneut.
Was könnte mein Problem sein?
ich benutze lieber
SuspendThread, GetThreadContext, SetThreadContext, ResumeThread!
mit SetThreadContext wird das EIP register auf eine neue adresse gelegt (EIP = InstructionPointer, (64 bit sollte RIP sein?))
ich benutze lieber
SuspendThread, GetThreadContext, SetThreadContext, ResumeThread!
mit SetThreadContext wird das EIP register auf eine neue adresse gelegt (EIP = InstructionPointer, (64 bit sollte RIP sein?))
Wie würde dafür denn ein Implementierungsbeispiel aussehen? Google will mir da nichts nützliches ausspucken...
[TIP] SQL Injection 02/11/2009 - RFO Hacks, Bots, Cheats, Exploits & Guides - 6 Replies This is for someone here that knows the basic use of SQL Injection...
You can edit the website's database and make tweaks on that particular page... i hope you get what I mean ^_^
This is very favorable to private servers. Already done it and hell it rocked the RF World!
Peace out and I know you guys can do what i meant.. ^_^
WTB sql injection 11/27/2008 - Trading - 0 Replies prove me that your coin hack work and i will buy it
uo injection 07/03/2008 - General Gaming Discussion - 3 Replies Hallo zusammen
Bin noch totaler Noob was UO injection betrifft. Ich brauche mal ein wenig Hilfe. Ich bin auf dem shard www.phantsmorgia.de. Die haben da einen eigenen pmclienten denn ich irgendwie nicht umgehen kann. Ich schaff es einfach nicht uo Injection auf diesem Shard zu nutzen. Kann mir vielleicht jemand helfen?
URL sql injection 06/24/2008 - RF Online - 2 Replies any one could give me hints or anything on what url should i put in sql injection for rf online.. im a bit confused.. thanks
generelle frage zur dll injection 01/13/2008 - General Coding - 15 Replies sooo mein zweiter Thread ;D
Diesmal würd ich gern wissen ob es möglich ist direkt auf den speicher des Prozesses zuzugreifen in den eine dll injected wurde und möglicherweise sogar dessen Funktionen auszuführen?
ist doch so oder? :)
gruß, reijin