Ergebnis 1 bis 7 von 7
  1. #1
    Trojaner
    Registriert seit
    09.07.2008
    Beiträge
    57

    Standard [C++] Problem beim Trainer erstellen

    Moin,

    ich versuche mich momentan an einem Trainer für Empire Earth (ist zwar nicht das neuste, aber ich finds lustig^^).
    Das Spiel ist durch DMA geschützt also kann ich nicht einfach mittels "WriteProcessMemory" den wert ändern. Wenn ich in Cheat-Engine dann auf "Find out what writes to this address" klicke komm ich zum ASM code (denk ich ma^^). Dort steht : "sub [eax],ecx". In Cheat-Engine kann ich den Code zb. einfach auf "add [eax],ecx" ändern. jetzt die Frage : Wie kann ich das mittels C++ machen?
    Geht das auch mit WriteProcessMemory?

    Thx

  2. #2
    Wicked Wonderland Avatar von aL1ien
    Registriert seit
    08.07.2007
    Beiträge
    434

    Standard

    Zitat Zitat von Megagamer Beitrag anzeigen
    Geht das auch mit WriteProcessMemory?
    Warum probierst du es nicht einfach aus? Du wirst relativ schnell merken, dass dies nicht funktionieren sollte. Lese dich in "code" bzw "dll injection" ein und du wirst fündig werden.
    Geändert von aL1ien (10.03.2010 um 14:48 Uhr)
    Tu peut t'le mettre dans l'cul.

  3. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Megagamer (10.03.2010)

  4. #3
    Trojaner
    Registriert seit
    09.07.2008
    Beiträge
    57

    Standard

    Danke für die antwort
    Werd mal nach ein paar tutorials suchen ...

  5. #4
    OpCodeKiddy Avatar von EBFE
    Registriert seit
    30.03.2009
    Beiträge
    442

    Standard

    Du musst die sub [eax],ecx Anweisung überschreiben.

    Den Patch selbst kannst du z.B mit InlineASM oder Ollydbg erstellen:
    Code:
     0108          ADD DWORD PTR DS:[EAX],ECX
    das ist zum Beispiel Ollydbg Ergebnis für add [eax],ecx. Links der Opcode dafür und rechts die "menschenlesbare" Übersetzung. D.h um dein "sub [eax],ebx" (opcode 29 08) zu ändern brauchst du nur ein Byte zu patchen: 29 zu 01. Das macht man genauso wie "memorypatches" mit WriteProcessMemory

    PS:Normalerweise haben Code Bereiche eine "Execute,Read" Zugrifferlaubnis, so dass man nicht ohne weiteres etwas hineinschreiben kann. Kann man aber ändern mit VirtualProtectEx - patchen und dann wieder mit VirtualProtectEx den alten Zugriff setzen.
    TrueCrypt/RAR/Zip Passwort vergessen und das Bruten dauert ewig? Oder brauchst du fein abgestimmte Wortlisten? Hilf dir selbst mit WLML - Word List Markup Language
    Gib Stoned/Mebroot/Sinowal und anderen Bootkits keine Chance: Anti Bootkit v 0.8.5

  6. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    DoS (10.03.2010)

  7. #5
    NoClose Wurm
    Registriert seit
    21.03.2008
    Beiträge
    196

    Standard

    Zitat Zitat von Megagamer Beitrag anzeigen
    Das Spiel ist durch DMA geschützt also kann ich nicht einfach mittels "WriteProcessMemory" den wert ändern.
    Was soll den dieser Satz bedeuten? DMA = Direct Memory Access? oder dynamic memory allocation?
    Ganz egal was es ist, beides ist kein "Schutz" und an der Anwendbarkeit von WriteProcessMemory ändert sich auch nichts. Empire Earth ist nur mit einem System geschützt und das nennt sich SecuRom. SecuRom stört sich aber auch nicht an WriteProcessMemory.

    Code:
    Du wirst relativ schnell merken, dass dies nicht funktionieren sollte. Lese dich in "code" bzw "dll injection" ein und du wirst fündig werden.
    So ein quatsch. Rate mal was nötig ist um eine DLL zu injekten... oh richtig WriteProcessMemory, es sei den man benutzt eine sehr unübliche und schlechte Variante.

  8. #6
    Anfänger
    Registriert seit
    10.04.2009
    Beiträge
    16

    Standard

    Zitat Zitat von G36KV Beitrag anzeigen
    So ein quatsch. Rate mal was nötig ist um eine DLL zu injekten... oh richtig WriteProcessMemory, es sei den man benutzt eine sehr unübliche und schlechte Variante.
    An dieser Stelle sei mal erwähnt, dass es durchaus trotzdem möglich sein kann ein Spiel, welches mit Anti-Cheat-Software geschützt ist mit Hilfe von DLL-Injektion zu manipulieren auch wenn man dafür WriteProcessMemory benötigt. Meistens startet man nämlich zuerst das Spiel, welches dann wiederrum anschließend die Anti-Cheat-Software lädt. Genau dieses Laden der Software dauert meistens seine Zeit. Das heißt man kann einen Injector nutzen, welcher unmittelbar nachdem das Spiel gestartet ist eine Injektion durchführt. Kann sein, dass das nur in der Minderheit der Fälle funktioniert, jedoch hat es bisher bei allen Spielen funktioniert mit denen Ich experimentiert habe.
    Geändert von PHRoZeNCReW (13.03.2010 um 22:31 Uhr)

  9. #7
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Also DMA [Dynamic Memory Allocation oder wies geschrieben wird] heißt nichts anderes, als dass die Adressen von den Werten stets anders sein.
    Also musst du einen Pointer zu den Adressen finden.
    In etwa so
    [0x00464010] = 0x00203040
    [0x00203040 + 0x3A] = Gold
    Also musst du erstmal 0x00464010 auslesen, dem wert 0x3A hinzufügen und dann ahst du die adresse, wo dein Gold steht ;-)

    Das mit dem 0x3A (und alle andere Werte) sind erfunden.
    Ich kann dir nur mal empfehlen, das CheatEngine-Tutorial durchzu-"zocken". Bis zu den Multi-Pointers soltlestes eg locker packen^^

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  10. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Megagamer (13.03.2010)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •