D.h., WENN er beim Start schon festgelegt wird, eher gesagt, schon beim Compilevorgang, dann kannst du ihn permanent ändern, ansonsten, wenn er zur Runtime erst erstellt wird, musst du ihn jedes Mal ändern oder einen etwas komplizierteren Codepatch durchführen.
Einen statischen Wert könnte man zb. recht einfach patchen:
Code:
mov eax, 5
mov [some_address], eax
zu
Code:
mov eax, dein_wert
mov [some_address], eax
Würde der Wert erst später berechnet werden, müsstest du genau den Teil finden (und das ist das schwierigere daran (es ist auch nichts extrem schweres, aber eben schwerer als das obere Beispiel)) und dann mit dem Code ersetzen.
Wenn da zb. irgendwo der Code
Code:
mov eax, [adresse_des_ergebnisses_irgendeiner_rechnung]
mov [some_address], eax
steht, müsste man es genau wie oben aussehen lassen:
Code:
mov eax, dein_wert
mov [some_address], eax
Die Patches kannst du übrigens mit einem Debugger (oder auch direkt einem Codepatcher) deiner Wahl durchführen, am einfachsten wäre es wohl, direkt den CE Debugger zu nehmen.
Da kannst du auch direkt Find out what writes to this Address auswählen, um den Code zu finden, der den Wert schreibt, falls er nicht statisch ist.