Entwickler-Ecke
Sonstiges (Delphi) - Hex --> Delphi
DeltaEx - Di 22.10.02 03:22
Titel: Hex --> Delphi
wir kann ich das in Delphi das ich die datei so ändern kann also eine Exe datei schreiben die die Hexwerte ändert:
Öffnet mit einem Hexadezimal-Editor die im Spieleordner befindliche "gamedll.rez" und ändert bei den Adressen die jeweiligen Werte.
Adresse 000E6FF2: den Wert 46 in 54 ändern
Adresse 000E6FF4: den Wert 41 in 52 ändern
Adresse 000E6FF6: den Wert 4C in 55 ändern
Adresse 000E6FF8: den Wert 53 in 45 ändern
Adresse 000E6FFA: den Wert 45 in 00 ändern
Im Editor sieht die Zeile etwa so aus:
000E6FF0 05 00 46 00 41 00 4C 00 53 00 45 00 00 00 00 00 ..F.A.L.S.E.....
Nach dem Editieren siehts dann so aus:
000E6FF0 05 00 54 00 52 00 55 00 45 00 00 00 00 00 00 00 ..T.R.U.E.......
Thx im voraus
Delete - Di 22.10.02 08:34
Na, das sieht man doch! Da zwischen deinen Werten immer eine Null steht, nimmst du eine Variable vom Typ WORD (die ist 2 Bytes groß), dann setzt du sie z.B. auf 54.
Halt! Natürlich nicht auf 54, das ist ja der Hex-Wert. Du setzt die Variable auf die ganz normale dezimale Entsprechung. Bin jetzt zu faul zum Umrechnen oder Tabelle rauskramen.
Dann springst du an die Adresse, die du brauchst -etwa 000E6FF2- und schreibst den Wert in die Datei. Gleich danach -ohne Positionsänderung!- schreibst du den nächsten Wert usw.
Weil es wie gesagt ein WORD-Typ ist, kannst du die Werte hintereinander schreiben. Der Inhalt der WORD-Variablen sieht nämlich so aus (am Beispiel des Wertes 32, da kenne ich den passenden Hex-Wert :wink:)
Beim Speichern wird aber -nur unter Windows?- das niederwertige Byte zuerst geschrieben, wodurch das gewünschte Format von
entsteht. Deswegen brauchst du die Position auch nicht ändern, denn durch das Schreiben der 2 Bytes bist du automatisch am Offset des nächsten Wertes, den du ändern willst.
Die Alternative wäre, den Wert als Unicode-String bzw. -Array zu behandeln. Wer sich bei einer 2000/XP-Text- oder Systemdatei im Textformat schon mal gewundert hat, warum zwischen den Buchstaben immer eine Stelle frei ist, hat so die Erklärung. :) (Ich hoffe, ich habe jetzt keinen zu großen Müll geredet.)
Und da es ja hier um "FALSE" und "TRUE" als Worte zu gehen scheint, wäre dies auch eine Möglichkeit.
Endlich mal einer, der auch in Spieldateien rumfummelt. :)
Habe ich schon ewig nicht mehr gemacht, aber ich erinnere mich noch an meine nächtelangen Sitzungen, weil ich die Savegame-Formate von DOOM, und Co. knacken wollte, und mir dann Savegame-Editoren geschrieben habe. 8)
Hex-Editor, wie umständlich ... wozu ist man denn Programmierer? :wink:
"gamedll.rez" - hört sich an wie ein Game mit Monolith-Engine?
NOLF? NOLF2?
LCS - Di 22.10.02 08:52
| MathiasSimmack hat folgendes geschrieben: |
Endlich mal einer, der auch in Spieldateien rumfummelt. :)
|
Das seit ihr nicht alleine 8)
| MathiasSimmack hat folgendes geschrieben: |
Habe ich schon ewig nicht mehr gemacht, aber ich erinnere mich noch an meine nächtelangen Sitzungen, weil ich die Savegame-Formate von DOOM, und Co. knacken wollte, und mir dann Savegame-Editoren geschrieben habe. 8) |
Hach das waren noch Zeiten (schwärm) :mrgreen:
Gruss Lothar
Delete - Di 22.10.02 10:07
Ach, bloß heute lohnt das nicht mehr. Die Cheats werden ja meist von den Spiele-Mags noch vor dem Release des Games veröffentlicht. Früher war das anders -
Da musste sich ein Mann (oder eine Frau) noch mit dem Hex-Editor hinsetzen, die Bytes raussuchen, manuell ändern, gucken ... jubeln ... und dann halt ein Programm schreiben, dass es automatisch macht, so dass man nur noch komfortabel -wie im Laden- auswählen brauchte:
"Ja, ich hätte gern die Kettensäge ... und die doppelläufige Schrotflinte ..."
Udontknow - Di 22.10.02 10:50
HAB ICH EUCH! IHR SINGLE-PLAYER-CHEATER!
Ne, mal im Ernst, cheaten nimmt doch jedem Spiel den Spass. Ein Kollege hat das auch immer gemacht, der hat Doom gekauft, an zwei Tagen durchgezockt und es dann in die Ecke geworfen.
So kann doch gar kein Spass aufkommen. Wer noch nie System Shock 2 ohne Cheats durchgezockt hat, hat eindeutig was verpasst.
Gut, es gibt schon manche Stellen in Spielen, wo man wirklich seine Zähne in die Tastatur schlagen könnte...
Von Multiplayer-Cheats wollen wir gar nicht erst reden...
Cu, :)
Udontknow
DeltaEx - Di 22.10.02 12:11
Das ist kein Cheat sondern das anmachen von Blut bei NOLF2:-)
Ich habe es leider nicht kapiert:-( da ich noch ein kleiner delphiNoob bin
kannst du ein Code reinschreiben?? ich weiss nicht wie ich anfangen soll
Delete - Di 22.10.02 12:18
Wenn auf der CD mehrere Sprachversionen drauf sind, dann probier den alten NOLF1-Trick -
Für die Installation die Ländereinstellung auf "English (US)" (z.B.) einstellen und das Game installieren. Dann konnte man wieder auf Deutsch umstellen und trotzdem ungeschnitten spielen.
Ansonsten (ungetestet, sollte aber gehen):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| const Magic : array[1..5]of word = ($54,$52,$55,$45,0); var f : file; acWrite : integer; begin {$I-} AssignFile(f,'gamedll.rez'); Reset(f,1); if(IoResult = 0) then begin Seek(f,$E6FF2); BlockWrite(f,Magic,sizeof(Magic),acWrite); CloseFile(f); end; {$I+} end; |
Udontknow - Di 22.10.02 13:24
Früher war ich für solche Anliegen immer bei
http://www.bloodpatches.de, aber da ist nun auch die BPjS eingeschritten. :cry:
Aber ein einfaches googeln wie z.B. "Mafia Bloodpatch" hilft mir meistens weiter.
Cu,
Udontknow
DeltaEx - Di 22.10.02 14:10
JO super das Funktioniert wunderbar!! nur habe ich ne Frage was die Befehle heissen will auch was dazulernen
Und warum die 0 an ende??
Magic : array[1..5]of word = ($54,$52,$55,$45,0);
Delete - Di 22.10.02 17:54
Die Null am Ende stammt aus deiner eigenen Beschreibung:
| DeltaEx hat folgendes geschrieben: |
Adresse 000E6FF2: den Wert 46 in 54 ändern
Adresse 000E6FF4: den Wert 41 in 52 ändern
Adresse 000E6FF6: den Wert 4C in 55 ändern
Adresse 000E6FF8: den Wert 53 in 45 ändern
Adresse 000E6FFA: den Wert 45 in 00 ändern |
:roll:
Außerdem ergibt es sich zwangsläufig, wenn man sich das entstehende Wort im ASCII-Teil des Hex-Editors ansieht:
Quelltext
1: 2:
| FALSE = 5 Buchstaben TRUE = 4 Buchstaben |
Du musst also die Null tatsächlich ergänzen, um das Wort
FALSE komplett zu überschreiben, sonst würde da
TRUEE stehen, und der "Patch" dürfte nicht mehr hinhauen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!