28.11.2013, 20:01
(Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2013, 20:11 von iNvIcTUs oRCuS.)
Naja...
Ich behaupte ja nicht das es immer so schwierig ist. Im Gegenteil... Es ist relativ häufig das solch ein Trainer für mehrere Versionen funktioniert.
"Van Helsing" ist eher auch ein krasses Beispiel dafür das solch ein Trainer höchstens für 3 oder 4 Updates funktioniert.
Liegt aber wohl auch daran das bei dem Spiel eine hohe Updatefrequenz herrscht.
Aber ich sage mal so, solange wie Du deinen Trainercode variabel aufbaust hast Du's auch mit Updates leichter.
Ich z.B. habe von sämtlichen Trainer Sourcecodes ein Backup auf der Platte. Wenn jetzt z.B. nach nem halben Jahr wieder mal ein Update zu einem Spiel rauskommt dann nehme ich den Sourcode des Trainer zur vorherigen Version des Spiels und passe innerhalb des Sourcodes nur die Offsets an und das wars dann auch schon. Das is im Endeffekt ne Sache von nicht mal 5 Minuten + Testen des fertigen Trainers zur neuen Version. Sagen wir mal alles in allem ca. 15 Minuten. Probleme oder Bugs durch den Trainer die nach stundenlangem spielen auftreten/können werden eh hauptsächlich nur durch die Community identifiziert.
Meinen ersten Trainer hab ich so geschrieben das ich jedes Offset explizit benannt/verwendet hab (im Sourcecode). Aber mittlerweile hab ich im Trainercode ne Sektion für die Initialisierung von Variablen angelegt. Somit brauch ich eben die Offsets nur einmal eintragen und alles weitere findet seine Bestimmung - Wie, wo und welche Variable Verwendung findet eben.
EDIT//
Ja und was Acubra meint...
Häufig sind ja die Befehle so aufgebaut das zu einem Wert eines Registers ein anderer Wert hinzuaddiert wird. Und dieser entgültige Wert stellt dann den Pointer auf einen Speicherberich dar der dann letztenendes ausgelesen/beschrieben wird.
Z.B. die Bytefolge "D9 9E 2C 03 00 00"
[code=ASM]fstp dword ptr [esi+32C][/code]
Wenn nun also nach einem Update aus dieser Bytefolge beispielsweise "D9 9E FF 00 00 00" wird...
[code=ASM]fstp dword ptr [esi+ff][/code]
dann ist der Witz schon wieder weg wenn man eben explizit nach der Bytefolge "D9 9E 2C 03 00 00" suchen würde.
Ich behaupte ja nicht das es immer so schwierig ist. Im Gegenteil... Es ist relativ häufig das solch ein Trainer für mehrere Versionen funktioniert.
"Van Helsing" ist eher auch ein krasses Beispiel dafür das solch ein Trainer höchstens für 3 oder 4 Updates funktioniert.
Liegt aber wohl auch daran das bei dem Spiel eine hohe Updatefrequenz herrscht.
Aber ich sage mal so, solange wie Du deinen Trainercode variabel aufbaust hast Du's auch mit Updates leichter.
Ich z.B. habe von sämtlichen Trainer Sourcecodes ein Backup auf der Platte. Wenn jetzt z.B. nach nem halben Jahr wieder mal ein Update zu einem Spiel rauskommt dann nehme ich den Sourcode des Trainer zur vorherigen Version des Spiels und passe innerhalb des Sourcodes nur die Offsets an und das wars dann auch schon. Das is im Endeffekt ne Sache von nicht mal 5 Minuten + Testen des fertigen Trainers zur neuen Version. Sagen wir mal alles in allem ca. 15 Minuten. Probleme oder Bugs durch den Trainer die nach stundenlangem spielen auftreten/können werden eh hauptsächlich nur durch die Community identifiziert.
Meinen ersten Trainer hab ich so geschrieben das ich jedes Offset explizit benannt/verwendet hab (im Sourcecode). Aber mittlerweile hab ich im Trainercode ne Sektion für die Initialisierung von Variablen angelegt. Somit brauch ich eben die Offsets nur einmal eintragen und alles weitere findet seine Bestimmung - Wie, wo und welche Variable Verwendung findet eben.
EDIT//
Ja und was Acubra meint...
Häufig sind ja die Befehle so aufgebaut das zu einem Wert eines Registers ein anderer Wert hinzuaddiert wird. Und dieser entgültige Wert stellt dann den Pointer auf einen Speicherberich dar der dann letztenendes ausgelesen/beschrieben wird.
Z.B. die Bytefolge "D9 9E 2C 03 00 00"
[code=ASM]fstp dword ptr [esi+32C][/code]
Wenn nun also nach einem Update aus dieser Bytefolge beispielsweise "D9 9E FF 00 00 00" wird...
[code=ASM]fstp dword ptr [esi+ff][/code]
dann ist der Witz schon wieder weg wenn man eben explizit nach der Bytefolge "D9 9E 2C 03 00 00" suchen würde.
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!
Traineranfragen per PM werden prinzipiell gelöscht...
Traineranfragen per PM werden prinzipiell gelöscht...