Wie schreibt man einen Trainer?



  • Ein Trainer muß ja irgendwie mit dem Spiel interagieren, wie wird das gemacht?

    Früher gab es Programme die den Speicher überwachen konnten und dann hat man im Spiel einen Wert verändert, z.B. die Lebenspunkte.
    Das Programm hat das dann registriert und wenn man das ein paar mal gemacht hat, dann konnte man so die Speicherstelle eingrenzen, bis man die gefunden hatte, die die Lebenspunkte enthielten und dann konnte man mit dem Trainer einstellen, daß diese sich nie veränderten. Damit hatte man praktisch unbegrenzt Lebenspunkte.

    Bei modernen Spielen ist das aber schwierig, weil sich hier fast alles ändert. Schon ein Schwenk in der 3d Welt ändert unzählige Werte.
    Dann hat man bei modernen Spielen oft keine konkreten Zahlen, mit denen man im Trainer suchen könnte, sondern einfach nur farbige Balken die die Lebensenergie whatever anzeigten.

    Einige an das Spiel angepaßte Trainer sind dabei noch fortschrittlicher, denn die ändern nicht nur Speicheradressen, sondern können auch mit der Spielwerlt interagieren. Z.B. die Kollisionserkennung ausschalten.

    Meine Frage ist daher, wie programmiert man so etwas?
    Gut mit C/C++ usw. das ist klar, nein ich meine wie hijacked man den Prozess des Spieles bei einem modernen OS wie Win7, so daß man überhaupt an den Speicher des SPieles herankommt und wie geht's dann weiter?



  • Üblicherweise beschreiben Trainer nicht die Speicherstelle, an der z.B. die Lebenspunkte stehen, sondern überschreiben den Teil des Programmcodes, der Leben abzieht, mit NOP. Schreiben in anderen Prozessen kannst du mit WriteProcessMemory, die Adressen bekommst du mit CheatEngine. Dazu gibts auch viele Tutorials.
    Die fortgeschrittenen Trainer überschreiben dann eben den Programmcode, der für Kollisionserkennung zuständig ist. Dafür gibts keine Tutorials, da musst du dich mal intensiv mit Assembler und Disassemblieren beschäftigen.



  • OK, danke für die Antwort.

    Aber jetzt habe ich doch noch eine Frage.
    Viele fertige Trainer werden von Antivirensoftware als Schadecode gemeldet, sind das falsche Alarme, also kann das daran liegen, daß ein Trainer den Programmcode eines Prozesses ändert, daß die Virensoftware darauf anschlägt?

    Wenn ja, dann könnte man sich doch nie sicher sein, ob man ein Trainer dessen Quellcode man nicht hat virenfrei ist.



  • Nun ja, Rumschreiben im Speicher anderer Prozesse ist durchaus eine Funktion, die man vermehrt bei Malware findet, "übliche" Software macht sowas normalerweise nicht. Gut möglich, dass die Heuristik mancher Antivirenprogramme darauf anspringt.
    Glücklicherweise zeigen diese ja aber auch an, was sie genau gefunden haben. Daran kann man sehen, ob die Heuristik oder die Signaturerkennung zugeschlagen hat.



  • Trainer schrieb:

    Wenn ja, dann könnte man sich doch nie sicher sein, ob man ein Trainer dessen Quellcode man nicht hat virenfrei ist.

    Natürlich, wie könnte man sich da denn je sicher sein? Auch wenn der Virenscanner nicht anschlägt ist das keine Garantie. Und es muss ja garnichtmal ein Virus sein, so ein Trainer ist natürlich der perfekte Weg für jemanden z.B. deine Accountdaten zu stehlen...


Log in to reply