Codecave setzen und die Base darüber auslesen. Die Offsets bleiben ja in der Regel über einen längeren Zeitraum gleich und verschieben sich dann auch meistens nur um ein paar Byte wenn Änderungen an dieser spezifischen Stelle vorgenommen werden.
Die Antwort darauf ist ganz klar jein.
Bei größeren Updates, bei denen sich viel ändert, kommt man um das Neufinden der Daten (u.a. Pointer) nicht herum. Um gegen kleinere Updates zu bestehen, können Techniken, wie ein Patternscan, um nach den Daten, oder nach Code, der direkt auf die Daten (bspw. einen statischen Pointer) zugreift, zu suchen, helfen (entschuldige die Satzstruktur). Oder, wenn du beispielsweise weißt, das irgendetwas wichtiges durch eine öffentliche Funktion (bspw. von der WinApi) geht, kannst du diese hooken / breakpointen, um an dein Zeug zu kommen. Gegebenenfalls kannst du auch Code des Ziels hooken, aber der wird sich vermutlich durch ein update eher verändern.
Eine 100%ig sichere Variante gibt es nicht.
Mit freundlichen Grüßen
Jeoni
Codecave setzen und die Base darüber auslesen. Die Offsets bleiben ja in der Regel über einen längeren Zeitraum gleich und verschieben sich dann auch meistens nur um ein paar Byte wenn Änderungen an dieser spezifischen Stelle vorgenommen werden.
Aber die Base wurde doch durch das update geändert, wie kann ich die dann auslesen?
Mhm ein update ändert gewöhnlicher weise nicht die base. Entweder ändert sich die base bei jedem start oder garnicht. Nutz einfach patterns. Hat Jeoni dir ja auch schon geraten.
Aber die Base wurde doch durch das update geändert, wie kann ich die dann auslesen?
Schau dir mal an, was eine Codecave ist. Du leitest den Code in eine von dir deklarierte (und definierte) Funktion um, die über Inline Assembler den Inhalt eines Registers in eine von dir definierte Variable schiebt um die Adresse der Base zu erhalten. Der Vorteil daran ist, das du hier nicht mit statischen Adressen und Offsets arbeiten musst.
Irgendwo wird deine Base ja verwendet, da setzt du deine Codecave einfach rein.
Und diese Stelle kann übrigens mit einem Pattern Scan (Bytescan, Opcodescan) sinnvoll aufgesucht werden. So lange man in dieser Region den Code nicht ändert, bleibt die nämlich immer gleich.
Quote:
Originally Posted by omitma
Mhm ein update ändert gewöhnlicher weise nicht die base. Entweder ändert sich die base bei jedem start oder garnicht. Nutz einfach patterns. Hat Jeoni dir ja auch schon geraten.
Doch, die kann sich auch mal schnell ändern. Statische Adressen ändern sich nach dem kompilieren.
Dennoch ist die Baseaddress Linkerabhängig bzw. wird die vom Linker festgelegt.
Ich gehe nicht davon aus, dass jedes mal, wenn der kram gelinkt wird auch eine andere Imagebase angegeben wird.
Um an die Imagebase zu kommen nutzt man GetModuleHandleA/GetModuleHandleW aus der WinAPI und übergibt dieser entweder einen nullptr (um an die Executable zu kommen) oder eben den jeweiligen Namen des Moduls.
@Schmitt: warum bist du einfach so schneller? :<
Dürfte der teil nicht nur relevant sein, wenn man wirklich den Anfang einer Funktion sucht und nicht nur einen Teil innerhalb einer Funktion?
Brauche hife für die suche nach Pointer für theHunter Hack 05/23/2013 - C/C++ - 21 Replies 1. Das ist mein erster Beitrag und bitte deshalb um etwas Verständnis
2. Sollte ich in der falschen Kategorie sein bitte helfen xD
3.
Hallo Leute ich bin dabei ein Hack für theHunter zu machen ich bräuchte nur ein bischen hilfe beim Pointer suchen...
Bis jetzt hab ich dies Pointer gefunden.
Coordinaten des Players:
Pointer Ändert sich nach Neustart? 04/07/2011 - General Coding - 7 Replies Hey ich wette diesen Thread gabs schon öfter aber ich hab nichts gefunden was mich weiter gebracht hat.
Ich habe nun bei einem game Einen Pointer für erstellt der auch soweit so gut funktioniert also dürfte es somit auch der richtige sein =3
Doch immer wenn ich das Spiel Verlasse ("zur Lobby") Oder das spiel beende Is der Pointer zunichte "p->????????"
Ich benutzte Atm Cheate engine.
Ich bin mal so vorgegangen
[DE] Pointer update. 12/02/2008 - Nostale - 6 Replies Hi @ all,
da die meisten es nicht hin bekommen hier mal meine Pointer file für den RedBOT.
Funktioniert super, bin noch am überlegen ob ich en bot in c++ umsetze (der eh mit postmessage arbeiten würde). Aber denke ist nicht nötig da der RedBot eigtl alles macht was man braucht.
@ Kopiert das in die Pointer.ini
LiveAddress=0x0076D890