Stronghold Crusader 1.1 Trainer
Einführung:
Aufbauend auf dem
von UnlimitedPower, werden wir heute wieder einen Trainer programmieren. Und nein, diesmal nicht für Pinball, sondern für ein etwas komplexeres (und teureres) Spiel. Nämlich Stronghold Crusader in der Version 1.1. Das alles werden wir natürlich wieder in C++ realisieren, aber natürlich wäre dies auch in sämtlichen anderen Sprachen möglich, wie C# oder
VB.Net.
Was wir brauchen:
Also, für dieses Tutorial brauchen wir wieder einen sog. Memory Scanner. Soweit ich erinnere hat UnlimitedPower T-Search benutzt, aber ich werde euch hier nur den Umgang mit CheatEngine zeigen, das ein sehr mächtiges Tool, programmiert von Dark_Byte ist. Ihr könnt es auf der offiziellen Page downloaden.
Als zweitens brauchen wir noch natürlich einen C++ Compiler oder halt eine IDE. Aber darauf werde ich nicht weiter eingehen. Ich für meinen Teil benutze MS Visual C++ Express Edition mit dem msvc2008 Compiler.
CheatEngine:
Beim ersten Start von CE (werde CheatEngine ab jetzt immer mit CE abkürzen) kommt eigentlich sowieso ein Einführungstutorial. Ich würde empfehlen es auf jedenfall einmal kurz durchzuarbeiten. Dauert vielleich 10-30 Minuten. Für die, die dazu jetzt keine Lust haben, erkläre ich kurz wie CE aufgebaut ist.
- Bei eins sieht man die drei Bitmap Buttons. Mit dem linken (grüner Rand), kann man einen Prozess öffnen, mit dem zweiten und dritten Button, kann man CE Tables speichern und laden. Sodass man, wenn man entsprechende Adressen schon gefunden hat, diese nicht immer neu suchen muss.
- Bei zwei sieht man nachher die passenden Adressen, wenn man nach einem Wert gesucht hat.
- Unter drei sieht man die Buttons First Scan und Next Scan. Beim Adressensuchen, passt ja zB. der Wert 100 auf tausende Adressen, deswegen verändert man im Spiel eben diesem Wert 100. Dann macht man Next Scan, um den Wert einzugrenzen.
Beispiel: Du willst unendlich Lebenspunkte. Du hast im Spiel gerade 100, minimierst dieses. Suchst nach dem Wert 100, hast aber tausend Adressen gefunden. In welcher werden nun die Lebenspunkte gespeichert? Um das rauszufinden, maximierst du das Spiel wieder und lässt die HP abziehen, durch einen Treffer oder so. Jetzt hast du noch 93 HP. Jetzt minimierst du das Spiel wieder und suchst mit 'Next Scan', dass heißt nur noch die Adressen, vom vorigen Scan werden durchsucht, nach dem neuen Wert. Das machst du solange bis nur noch eine, die richtige Adresse übrigbleibt. Soviel zur Theorie... -_-
- Bei 4 kann man den Wert eingeben, nach dem man suchen will.
- Manchmal weiß man den Wert nicht genau, weiß nur das er seit dem letzten Scan größer geworden sein muss, o.ä.. Brauchen wir aber in diesem Tutorial nicht.
- Value Type. Es gibt verschiedene Variablengrößen im Speicher von 1 Byte (8 bits) bis zu 8 Byte (64 bit). Wir brauchen in diesem Tutorial aber nur die normalen 4 Bytes (32bit) Integer.
- Hier kannst du deine gefundenen Adressen speichern, anzeigen lassen und ggf. den Wert ändern o.ä. Man kann auch zB. Funktionen ausführen wie "What writes to this Adress", etc.
- Man kann auch Adressen manuell hinzufügen. Wenn ihr irgendwie die Adressen nicht finden solltet, wie ich es euch zeigen werde, könnte ihr diese manuell hinzufügen, da ich am Ende des Tutorials eine Liste mit allen Adressen posten werde.
Die erste Adresse:
Als erstes widmen wir uns der einfachsten Adresse, die relativ leicht zu finden ist. Bei den anderen muss man nämlich etwas anders herangehen als bei dieser. Also starten wir als erstes mal Stronghold. Dann starten wir ein eigenes Spiel. Nachdem wir kurz unsere Burg gegen etwaige Feinde gesichert haben -Ich spiel hier gerade nur gegen Ratte, damit uns auch keine AI beim Crackz0rn nervt- rücken wir zum praktischen Teil des Tutorials vor. Ihr habt euch jetzt bestimmt, was wir nun zu erst versuchen zu verändern. Und ja, es ist das Gold :P.
Also, so sieht STC (ab jetzt kürz ich Stronghold Crusader immer so ab), jetzt bei mir aus:
Wie ihr seht, habe ich zurzeit 7100 Gold, also suchen wir in CE nach dem Wert 7100. Dazu öffnen wir CE und öffnen wiederum in CE den Prozess Stronghold.
Dann geben wir bei Value den Wert 7100 ein und klicken auf First Scan. Jetzt zeigt uns CE links in der Listbox an, dass 10 Adressen gefunden wurden mit dem Wert 7100. (7100 ist ein exotischer Wert, deswegen findet er nur 10 Adressen :P, bei 1 oder 0 oder 100 o.ä. findet er schonmal 5000 Adressen). Aber mit 10 verschiedenen Adressen können wir ja nichts anfangen, also verändern wir in STC den Wert, indem wir einfach noch ein paar Soldaten kaufen.

So jetzt habe mir ein paar Soldaten gekauft, auf Pause gedrückt (Kürzel P in STC) und wieder CE geöffnet. Man sieht schon links in der Listbox welcher Wert es sein muss, da sich nur einer zu 6650 verändert hat, aber trotzdem will ich euch zeigen, wie man es richtig macht. Also gebt ihr jetzt bei Value den Wert 6650 ein und klickt auf Next Scan. Und siehe da, nur noch eine Adresse ist da. Jetzt könnte man STC nochmal maximieren und ein paar Soldaten kaufen, um zu testen, ob das auch wirklich der richtige Wert ist, aber das habe ich schon, und das ist der richtige Wert :P
So jetzt können wir den Wert aus der Listbox noch nach unten speichern, damit wir ihn besser 'bearbeiten' können. Dazu klicken wir eben einmal auf die Adresse und dann auf den Button mit dem roten Pfeil. Jetzt haben wir die Adresse unten drin. Zusätzlich können wir der jetzt noch eine ordentliche Beschreibung verpassen. Indem wir einen Rechtsklick draufmachen und dann auf "Change Record"->Description oder einfach ein Doppelklick auf "No Description". Ich habe es in meinem Beispiel in STC Money unbenannt.
So, jetzt wollen wir uns noch einmal kurz 99999 Gold geben, umzu beweisen, dass euer Gelerntes auch alles funktioniert.

. Doppelklickt dazu auf 6650 und gebt als neuen Wert 99999 ein und klickt auf OK. Jetzt öffnet STC und vóila.
Cheate Table sichern:
Ich würde die CT immer absichern, damit ihr beim nächsten Start von CE die Adresse nicht neu suchen müsst. Dazu klickt ihr einfach oben auf die Diskette und speichert die CT ab

.
Der Trainer:
Alles was ihr braucht um den Trainer nun zu erstellen, ist die Adresse die wir gefunden habt. Es müsste 0x00D61208 für Gold sein. Anhand von
könnt ihr nun den Trainer programmieren. Ich habe den komplette Sourcecode bei Rapidshare hochgeladen (sieh Ende des Posts), falls ihr Probleme haben solltet. Wenn es immer noch nicht funktionieren sollte, meldet euch einfach per PN oder Post.
Anmerkungen:
Ihr solltet das Spiel immer pausieren, damit der Wert nicht zufällig irgendwie geändert wird. Bei STC Gold ist das nicht das Problem, bei anderen Spielen oder bei STC Stein,Holz,etc. kann es aber zu einem werden. Die meisten Bilder habe ich als Thumbnail gepostet, bitte draufklicken, um sie in richtiger Größe zu sehen und die Links habe ich alle kursiv gemacht.
Dieser Post wurde vorgeschrieben mit dem
. Danke an AGU.
Adress List:
Gold - 00D61208
Source Code:
Der zweite Teil:
Im zweiten Teil, werden wir uns Holz, Stein, Gold, Nahrungsmitteln und allem anderen Kram widmen. Ihr könnt ja schonmal probieren, ob ihr es hinbekommt. Aber ich warne euch. Bei diesen gibt es eine andere Herangehensweise. Danke an alle die sich dies durchgelesen haben.