Hallo zusammen.
Ich möchte eine Datei welche mit einem Programm auf dem heimischen PC erstellt wurde auf einem Webserver verändern. Dazu benutze ich folgendes Script:
Das ist btw. nicht das gesamte Script, aber der "Drumherumcode" ist nicht weiter interessant, er prüft nur ob die Datei da ist, die neue erstellt wurde, etc. eben. Meines bescheidenen Verständnisses nach sollte das Script die Originaldatei ab Position 39 lesen (die gelesenen Werte stimmen soweit noch), die neue Datei bis zur while-Schleife schreiben und den Rest schlicht kopieren. Und beim kopieren hakts dann ins unendliche. Ich habe dazu mal 2 Screenshots gemacht damit man besser (oder überhaupt ) verstehen kann was ich meine:
Originaldatei im Hexeditor
Generierte Datei im Hexeditor
Wie man sieht werden aus den originalen Werten nur noch Nullen, bis hinter den Text stimmt es aber. Ich verstehe das nicht mehr, kann mir bitte jemand helfen?
Ich möchte eine Datei welche mit einem Programm auf dem heimischen PC erstellt wurde auf einem Webserver verändern. Dazu benutze ich folgendes Script:
PHP-Code:
fwrite($filenew_handle,"Savegame of Billy the Sheep Version 0.76 beta to 0.93 beta");
fwrite($filenew_handle,chr(13)); // Hexwerte in Datei schreiben
fwrite($filenew_handle,chr(10));
fwrite($filenew_handle,chr(13));
fwrite($filenew_handle,chr(10));
fseek($fileold_handle,39); // Dateizeiger auf Position Levelnummer schieben
$level=fread($fileold_handle,1);
$string_length=strlen($level_name[$level-1]);
fwrite($filenew_handle,chr($string_length)); // Im Testlevel 15
fwrite($filenew_handle,chr(0));
fwrite($filenew_handle,chr(0));
fwrite($filenew_handle,chr(0));
fwrite($filenew_handle,$level_name[$level-1]);
fwrite($filenew_handle,chr($level));
// Rest der Datei "kopieren"
//fseek($fileold_handle,60);
while(!feof($fileold_handle))
{
$byte=fread($fileold_handle,1); // Ein Byte lesen
fwrite($filenew_handle,chr($byte)); // Gelesenes Byte in gepatchte Datei schreiben
}
Originaldatei im Hexeditor
Generierte Datei im Hexeditor
Wie man sieht werden aus den originalen Werten nur noch Nullen, bis hinter den Text stimmt es aber. Ich verstehe das nicht mehr, kann mir bitte jemand helfen?
Kommentar