Frage

Ich habe durch ein Stück Code eines PC-Spiel suchen, ich versuche zu „verbessern“. (Ok vielleicht sauge ich auf dem Spiel, aber ich will es immer noch spielen). Könnten Sie bitte den folgenden Code aussehen in:

fld dword ptr[ebp+00007B1C]
fsub dword ptr[esp+64]
fst dword ptr[ebp+00007B1C]
call 004A2E48

Dieser Code wird jede Sekunde für den Pegel Countdown-Timer genannt. Ich brauche auf einer bestimmten Ebene für ein paar Minuten zu bleiben. Wenn ich den obigen Code ändern, so dass der Wert in der Adresse geschoben [ebp + 00007B1C] 0 ist, dann das Spiel Ebene wird immer noch Zeit und es wird mich retten diese verrückten „Überleben“ Mini-Spiele zu spielen.

Ich werde erklären, was ich von diesem Code zu verstehen. Keine Sorge, Sie nicht so tief in die gehen. In der ersten Zeile erhalten wir den Timer-Wert. wenn 97 Sekunden Zum Beispiel verbleiben dann ist es hier, dass dieser Wert geladen wird.
In der zweiten Zeile ein Wert (1 Sekunde) wird subtrahiert von 97
In der dritten Zeile 96 ist wieder in dem Speicher verschoben. Und schließlich haben wir den Funktionsaufruf, der eine andere Verarbeitung auf die Basis der Zeit tun bleibt.

Alles was ich jetzt tun muß, ist Patch dieses Stück Code irgendwie so, dass der Wert, der gedrückt wird, 0 ist (in der dritten Stufe).
Können Sie mir bitte helfen mit diesem aus?

War es hilfreich?

Lösung

Ersetzen

fld dword ptr[ebp+00007B1C]
fsub dword ptr[esp+64]

mit

fldz ; Push zero on to top of floating point stack
nop ; From the end of the fldz to the beginning of the store instruction

Andere Tipps

Ein weiterer Patch:
ersetzen

fld dword ptr[ebp+00007B1C]

mit

fld dword ptr[esp+64]
NOP
NOP

Sie einfach den zweiten Befehl nop aus. Das heißt, herauszufinden, wie viele Bytes die fsub Befehl nimmt und überschreibt sie mit, dass viele nicht-Betrieb Bytecode (0x90).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top