Speedhack programmieren

01/17/2011 17:44 DNA-Trainer#16
Achso ^^

Ja, Float-Adressen enden mit 0,4,8 oder C
4-Byte-Adressen natürlich auch
da beide Adresstypen 4 Bytes lang sind ... es steckt nur ein anderer
Hexadezimalwert dahinter.
01/18/2011 08:11 -AmA-#17
Genau aber warum kanst du das nicht zu 100% gewährleisten?
01/18/2011 15:59 DNA-Trainer#18
Die Adressen richten sich nach der Imagebase ...
Gehen wir jetzt einfach mal von einer fiktiven Imagebase von 0x400001
aus, so könnte man nicht mehr nach diesen Adressen ausschau halten ;)

Klar ist die Imagebase nur fiktiv und gesehen habe ich sowas auch noch nie,
aber dennoch wollte ich das erwähnt haben ;)
01/25/2011 22:38 Mi4uric3#19
[Only registered and activated users can see links. Click Here To Register...]
Cheat Engine ist Opensource, das hat einen integrierten Speedhack.

Vielleicht kannst du dich da orientieren. (Ist zwar in Delphi geschrieben, aber dürfte eigentlich kein Problem sein)

Liebe Grüße
01/26/2011 19:41 MrSm!th#20
Quote:
Originally Posted by 0rc View Post
Hallo wie wird generell vorgegangen wenn man einen Speedhack programmieren will ?

Sucht man sich mit einem Debugger die Stelle raus wo im Programm festgellegt wird wie schnell die Spielfigur laufen soll und verändert dann einfach den Wert ?

Pseudocode:
set_speed ( 200 );


Oder wie läuft das würde mich echt mal interessieren.

Ich würde so etwas mal gerne für einen alten Einzelspieler Shooter programmieren.

Programmierkenntnisse hab ich in: C , C++ und Assembler naja und etwas Reverse Engineering Erfahrung.
Einmal kann man es so machen, ja, aber es geht auch, indem man die Funktion timeGetTime hookt und eine verfälschte Zeit zurückgibt, so läuft allerdings das gesamte Spiel schneller und nicht nur deine Figur.
Quote:
Ja, Float-Adressen enden mit 0,4,8 oder C
4-Byte-Adressen natürlich auch
da beide Adresstypen 4 Bytes lang sind ... es steckt nur ein anderer
Hexadezimalwert dahinter.
Was ein Schwachsinn, Float Adressen können enden wie sie wollen, da es keine "float Adressen" gibt.
Es sind einfach Adressen, die auf einen Speicherbereich zeigen, was sich da verbirgt, liegt in der Hand des Programmierers und float ist auch nur eine andere Interpretation der Bytes, die da stehen.
Streng genommen sind es alles Einsen und Nullen und das Programm/Spiel interepretiert sie eben, zb. als float (was natürlich auf andere Weise interpretiert wird als int, deshalb kann zb. float 2 in int 39930323 sein) oder als int oder whatever.

Quote:
* Es kommen "eigentlich" nur adressen in frage, welche mit 0,4,8 oder C enden!
("eigentlich" heißt hier, dass man zu 99% davon ausgehen kann, dass die Addis mit 0,4,8 oder C enden. Dies ist aber nicht zu 100% gewährleistet!)
Woher hast du den Blödsinn? Oder geht es hier um ein spezielles Spiel, denn allgemein gesagt ist das einfach nur Quatsch.
Quote:
Nein!
Doch, Cheat Engine macht es nur für jeden möglich, natürlich geht es auch durch Reverse Engineering.
01/26/2011 20:23 DNA-Trainer#21
Natürlich gibt es keine Float-Adressen, damit meinte ich
lediglich die Adressen, bei denen ein Float wert interpretiert werden.

Aber meinst du der Fragesteller, bzw. Leute die neu auf dem Gebiet
sind hätten das verstanden, wenn ich es so umschrieben hätte wie du?
Ich denke das fast jeder wusste, was ich mit "Float-Adressen" meinte.

Quote:
Woher hast du den Blödsinn? Oder geht es hier um ein spezielles Spiel, denn allgemein gesagt ist das einfach nur Quatsch.
Nun, ich habe schon sehr oft Spielerkoordinaten gesucht und komischerweise
enden diese Adressen IMMER mit 0,4,8 oder C,
außer vllt bei GTA2, aber das weiß ich nicht mehr.
01/26/2011 21:24 MrSm!th#22
Das hat vielleicht damit zutun, dass generell SEHR viele Variablen im Spiel die Größe 4 Bytes haben, von daher ist klar, dass die Adressen meist bei 0, 4, 8 und C liegen, falls du rechnen kannst.
Das ist aber keine Aussage über Koordinaten, das ist bei vielen Werten so und wenn mal ein Byte davor für was anderes genutzt wird stimmts auch schon nicht mehr.

Ich habe es nicht kompliziert o.Ä. beschrieben, sondern einfach nur richtig. Von "float Adressen die immer mit 0, 4, 8 oder C enden" zu sprechen, ist nun wirklich nicht gerade das, was ich als korrekt bezeichne und so verwirrst du Anfänger mehr, als dass du ihnen hilfst.
Wenn, dann sollten sie es auch direkt richtig lernen.

Außerdem war es ja nicht nur ein simpler ungeschickter Ausdruck, du hast ja wirklich ne Regel daraus gemacht, dass Float Adressen immer so enden.
Quote:
Ja, Float-Adressen enden mit 0,4,8 oder C
Das solltest du auch mal näher erläutern, das klingt nämlich auch sehr seltsam:
Quote:
* Werte die am Ende ein Exx haben, können ignoriert werden! (xx steht hier für eine zahl)
01/26/2011 22:21 DNA-Trainer#23
Hast du dir die Beiträge überhaupt durchgelesen, oder nur überflogen?
Falls es dir aufgefallen ist, bezieht sich das mit den Adressen auf das finden
der Spielerkoordinaten. Es sind also kleine "Hinweise" die das finden der richtigen
Adressen erleichtern sollen.
Natürlich können auch andere Adressen mit 0,4,8 oder C enden, wie z.B. Munni, Life, usw...
Ich habe auch nie behauptet, dass die nur die Adressen mit 0,4,8 oder C, in
denen die Koordinaten stehen.

Quote:
Außerdem war es ja nicht nur ein simpler ungeschickter Ausdruck, du hast ja wirklich ne Regel daraus gemacht, dass Float Adressen immer so enden.
Eigentlich hätte ich jetzt gesagt "Beweis mir das Gegenteil", allerdings bezweifel
ich, dass diese Diskussion hier zu einem "vernünftigen" Ergebnis führt und
weitere Beiträge eher Kontraproduktiv ausfallen werden.

Da die von mir genannten "Merkmale", welche sich NUR auf das finden von
Koordinaten beziehen, deiner Meinung nach falsch sind, würde ich gerne
wissen, wie du solche Koordinaten findest und worauf du dabei achtest.