Speicher manipulation



  • Wo war jetzt die Frage?



  • Meine Frage ist:
    Wie bekomme ich von der Funktionsaddresse raus auf welche Addresse(Variable) die Funktionsaddresse schreibt.

    Zum besseren verständniss:
    Funktionsaddresse:
    Damit meine ich die Addresse(im Speicher), die die Funktion enthält die zb. die Munitionvariable bei jedem schuß im eines runter setzt.

    Addresse(Variable):
    Ist zb. die Munitionvariable von dieser Addresse lesen andere Funtionen und zeigen dann auf dem bildschirm an wieviel schuß man noch im Magazien hat.



  • Disassemblieren und schauen wie der Befehl aussieht... abhängig davon kann es einfach oder etwas komplexer sein...



  • hmm und wie geh ich da vor?
    auser das Disassembler eine Maschinensprache ist weis ich jetzt nicht allzuviel darüber.



  • LowFly schrieb:

    hmm und wie geh ich da vor?
    auser das Disassembler eine Maschinensprache ist weis ich jetzt nicht allzuviel darüber.

    Ich will nicht böse sein - aber du weißt nix darüber.

    Disassemblieren ist der Vorgang MaschinenCode wieder in einigermaßen lesbaren AssemblerCode zu bringen.



  • Ich will nicht böse sein - aber du weißt nix darüber

    bist du aber weil ich schon von mir aus darauf hingeweisen hab

    Da ich dafon überhaupt keine ahnung habe/hatte. Hab ich mich in den letzten tagen via msdn / code-project & tutorials darüber etwas schlauer gemacht.

    und ich glaube nicht das es nötig ist es nochmal zu betohnen das ich darüber nix (o. nur sehr wenig) weis.

    ich bin ja gerne bereit mir helfen zu lassen, aber viel hilfe kam ja bis jetzt von dir nicht. 😉



  • LowFly schrieb:

    ich bin ja gerne bereit mir helfen zu lassen, aber viel hilfe kam ja bis jetzt von dir nicht. 😉

    3:0 für dich. Entschuldige mein Verhalten.



  • vergeben & vergessen 😉



  • Ok, jetzt mal wie man es machen könnte.
    Du musst den Code von dem Spiel dissassemblieren. (Wird schon schwer, wenn das auf verschiedene DLLs aufgeteilt wird.)
    Wenn sie die Symboltabelle rausgeschmissen haben -> Pech.
    Sonst -> Gut.

    Dann musste das Spiel eben mit einem Debugger starten und "spielen".
    Wenn du dann im Spiel ein Hausbaust und dafür 100Gold zahlen musst, dann wird vll. im Code ein call 0x2382347 stehen.
    Davor wird vll. ne -100 auf den Stack geschoben.
    Damit ruft das Spiel dann seine "aktualisiere Geldbestand"-Funktion auf.

    Wenn die Symboltabelle noch drin ist, dann könntest sogar einen Namen erwisschen.



  • hmm, ich hab jetzt mal was über disassembler gelesen und diesbezüglich etwas schlauer.

    ich bin über einen Artikel auf Code-Project gestollpert. Wenn ich das richtig verstanden hab, hat jede function einen Stack in dem die Werte stehen wohin was geschrieben wird.

    hab ich das richtig verstanden wenn ja dann wäre das ja schonmal eine Antwort.

    nur wirft das zugleich aber die frage auf wie kommt man an den Stack der Funktionsadresse?


Anmelden zum Antworten