ann ein C-Programm seine ausführbare Datei änder

Ich hatte etwas zu viel Zeit und fragte mich, ob ich ein selbstmodifizierendes Programm schreiben könnte. Zu diesem Zweck habe ich in C ein "Hello World" geschrieben und dann mit einem Hex-Editor die Position der Zeichenfolge "Hello World" in der kompilierten ausführbaren Datei ermittelt. Ist es möglich, dieses Programm so zu ändern, dass es sich selbst öffnet und die Zeichenfolge "Hello World" überschreibt?

char* str = "Hello World\n";

int main(int argc, char* argv) {

  printf(str);

  FILE * file = fopen(argv, "r+");

  fseek(file, 0x1000, SEEK_SET);
  fputs("Goodbyewrld\n", file);      
  fclose(file);    

  return 0;
}

Das funktioniert nicht, ich gehe davon aus, dass es etwas gibt, das verhindert, dass es sich selbst öffnet, da ich es in zwei separate Programme aufteilen kann (A "Hello World" und etwas, das es modifiziert) und es funktioniert.

EDIT: Nach meinem Verständnis wird das Programm beim Ausführen vollständig in den RAM geladen. Die ausführbare Datei auf der Festplatte ist also in jeder Hinsicht eine Kopie. Warum sollte es ein Problem sein, sich selbst zu ändern?

ibt es eine Problemumgehun

Vielen Dan

Antworten auf die Frage(18)

Ihre Antwort auf die Frage