Addresse einer Funktion verwenden



  • Hallo, ich habe eine Frage undzwar gibt es ja die offsets einiger funktionen von mw3. Nun die Frage wie verwendet man die Addresse einer funktion?

    z.B. habe ich eine funktion void SayHello();

    und die addresse der funktion ist z.B. 0x00123456 wie benutze ich jetzt die Funktion mit dieser Addresse?

    mfg ^^



  • Fawkes1234 schrieb:

    gibt es ja die offsets einiger funktionen

    Was verstehst du unter offsets?

    von mw3.

    Was ist mw3? Ist im Umfeld von Standard-C++ nicht so allgemein bekannt.

    Nun die Frage wie verwendet man die Addresse einer funktion?

    z.B. habe ich eine funktion void SayHello();

    und die addresse der funktion ist z.B. 0x00123456 wie benutze ich jetzt die Funktion mit dieser Addresse?

    Die FUnktion "benutzt" du unabhängig von der ADresse, indem du sie einfach aufrufst. Die Adresse selbst speichert man normalerweise nur in Funktionspointern. Meinst du das?



  • MW3 ist Modern Warefare 3, muss natürlich jeder C++ Programmierer wissen 🤡

    gruß
    syntax



  • ein möchtegern hacker ...



  • Was willst du tun? Mit einer einfachen Adresse ist noch nichts erreicht; du wirst das Ding nicht mal aufrufen können. Modifizieren ist noch viel schwieriger und im übrigen illegal (Annahme: Es geht wirklich um Modern Warfare).

    Aber grundsätzlich:

    (reinterpret_cast<void (*)()>(0x00123456))();
    

    MfG


  • Mod

    /rant/ schrieb:

    und im übrigen illegal (Annahme: Es geht wirklich um Modern Warfare).

    Es verstößt gegen die AGB von MW3, aber es ist nicht illegal im rechtlichen Sinne (außer er benutzt es zum Beispiel, um sich einen geldwerten Vorteil in einem Turnier zu verschaffen). Auf deinem Rechner darfst du Software modifizieren wie du lustig bist.



  • Allerdings wird der Codeschnippsel ihm nicht viel weiterhelfen. Zum einen muss der Code erstmal in den Prozess eingeschleust werden, zum anderen handelt es sich im Zweifel um ein Offset von einer DLL-Basisadresse, nicht um eine absolute Speicheradresse -- und wo neuere Windowse die Module im Speicher ablegen, muss man erstmal raussuchen -- und zum dritten sind massig Race-Conditions zu erwarten.

    Das sind wohl alles lösbare Probleme, aber mir wär das zu viel Arbeit für so Kinderkram.



  • Ahoi !

    [/quote]Nun die Frage wie verwendet man die Addresse einer funktion?[quote="Fawkes1234"]
    Was genau willst du machen? 😮

    Da ich kp hab was du genau willst geb ich dir einfach mal ein paar Suchbegriffe.
    Wenn du dich ernsthaft mit dem Thema beschäftigen willst dann solltest du folgendes auf jedenfall kennen:

    - DLL-Injection
    - Function Hooking
    - Speichermanipulation ( WriteProcessMemory, ReadProcessMemory )
    - DLL´s (Base addresse einer DLL finden )
    - Virtual Address Space
    - Statische/Dynamische Speicheradressen (Pointer)
    - Und arbeite mal alle Cheat Engine (www.cheatengine.org) Tutorials durch.

    Die Basis Adresse einer DLL findest du z.b. mithilfe von:
    CreateToolhelp32Snapshot
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms682489(v=vs.85).aspx

    Am Anfang ist das Thema eigentlich noch ganz interessant weil man halt vieles neues Lernt. Aber spätestens wenn man sich halbwegs mit dem Kram auskennt ist es dann nocht nicht mehr so spannend. ^^


Anmelden zum Antworten