Hi Leute,
ich habe eine Frage für die ich etwas weiter ausholen muss.
Ich fang einfach mal an ...
Ich habe mir etwas in den Kopf gesetzt was mich nicht mehr los lässt. Ich benutze häufig ein Programm X (keine Schleichwerbung^^). Zur Laufzeit von X hat der Prozess sämtliche Kontrolle über den Fenster-Focus. Es setzt seine eigene Form nach ganz oben, eine Art Exlusive-Top-Level-Mode.
X ist, ganz allgemein gesagt, ein Client eines großen Datennetzwerkes und ist mit einem eingebauten Chatsystem ausgestattet. Die gesamte Oberfläche von X besteht aus Controls, die alle Marke-Eigenbau sind, also nicht von Windows(API) gestellt werden (ähnlich der ITunes Oberflächenemulierung).
Das häufige switchen zwischen Prozessen stört die wenigsten Programme. Jedoch gibt es immer wieder "schwarze Schafe", die mit Warnhinweisen anmerken, dass häufiges Prozesswechseln zu einem instabilen Laufzeitprozess führt. Zu dieser Sorte von Programmen gehört auch X. Ich kann also X nur dann den Top-Level Status nehmen, wenn ich einen instabilen Fortlauf in betracht ziehe (nicht akzeptabel).
Mein Ziel ist es an Informationen zugelangen, die von Programmen im Hintergrund erstellt wurden. Diese Informationen sollen genannten eingebauten Chatsystem von X ausgegeben werde. Ich möchte also eigene Chatnachrichten in meinem Client ausgeben.
Dabei ist es nicht möglich, diese Nachrichten über das TCP/IP Protokoll durch einen Sniffer oder Paket-Injection zuübertrage, da X eine Verschlüsselung verwendet, die nicht ohne größeren Aufwand zu knacken ist (letzte Möglichkeit, nur bedingt akzeptabel).
Ich erinnere mich an eine Möglichkeit von der ich früher einmal gehört habe, die mir an logischten erscheint.
1998~2001 spielte ich ein Computerspiel, welches große Beliebtheit genoss. Viele Spieler bedeutet auch viele "Cheater". Ich erinner mich an eine Art Tool, welches mit einem "Loader" durch DLL-Injection eigenen Code in den Spielprozess injektierte. Dieser Code enthielt "Function Pointer", welche auf vorhandene Prozeduren im Spiel pointernten. Mit diesen "Function Pointern" war es möglich eigene Chatnachrichten (Chat-Bots) zuerzeugen.
Diese Möglichkeit sollte auch bei X funktionieren.
--------------------------------------------------------------------------
Ich habe also einen eigenen Loader entworfen, der eine beliebige DLL in den Laufzeitprozess von X injektiert.
Mein Ziel ist es also nun die Speicher-Adressen der "Functions" zu finden, die Chatzeilen in das Chatsystem von X hinzufügen.
Fragen:
1. Wie finde diese Speicher-Adressen?
2. Gibt es bekannte oder gute Tools, Debugg-Tools, die mir dabei helfen könnten?
3. Wenn ich die Adressen habe, wie finde ich die dazugehörogen Parameter der Functionen?
4. Gibt es einen Fachbegriff, der das beschreibt, was ich machen möchte und
unter dem ich mich informieren könnte?
PS: Ich bin für jede Antwort oder Idee dankbar.
Mit freundlichen Grüßen
Tobi