Programm das sich selber verändert.
-
Hallo.
Ist es irgendwie möglich, ein Win32-Konsolen... zu schreiben, das sich selber verändert???
-
Eigentlich müsste das gehen, aber das solltest du am besten in asm machen. Weil SMC (Self Modifying Code (mein engl. ist MIEß)) ist eine SEHR hardware-nahe Sache, und gehört nicht zur "reinen Lehre" und ist in C auch nicht so gut zu kontrollieren.
Du kannst natürlich lustig mit Zeigern auf Funktionen hantieren.Allgemein würde ich davon abraten, ausser in einigen Sonderfällen, denn es ist eigentlich unmöglich das ohne ASM zu machen, und selbst dann wird dein Code schnell undurchschaubar und schwer zu debuggen.
mfg
-bg-
-
selbst modifizierender Code ist sehr schwer zu programmieren. Sehr gute Assembler Kentnisse + Maschinen Befehl (also keine ASM Opcodes, sondern die Hexzahlen) Kentnisse sind erforderlich.
Ich glaub nicht, dass sich der Aufwand lohnt. Was willst du den genau machen?
-
Ich wollte das, wenn man was eingibd, dass gleich in der exe bleibd. dfas man es nicht einfach so ausliest.
-
Da ist es aber leichter, es in einer verschlüsselten Textdatei zu speichern, oder?
MfG SideWinder
-
Es geht ums Prinzip. Das Programm soll hald nur aus einer Datei bestehen.
-
leg dir nen string an z.B.
char text[]="123456789012345678901234.. 890";dann wenn das programm startet kannst du die exe öffnen, dort irgendwo mitten in den string deine daten stecken und dann haste alles in der exe (nicht im aktuellen programm)...
aber so ganz einfach ist es nicht ne laufende exe zu öffnen (glaube ich)
rapso->greets();
-
Ist es überhaupt möglich eine *.exe zu ändern wärend sie läuft, ich dachte immer da gebs arge Probleme.
-
rapso: Bei Beendigung des Programms ist der String aber dann wieder weg...
MfG SideWinder
-
man kann aber während der laufzeit eine neue exe anlegen (mit dem geänderten String), dazu ne batch datei, die die aktuelle (veraltete)exe nach dem beenden löscht...
-
Für mich klingt das nach einem Virus, was da programmiert werden soll.
-
es ist prinzipiell möglich die Datei zu verändern. Man sollte hier zwei Sachen unterscheiden:
Das laufende Programm (RAM)
Die .exe Datei (HDD)Das Programm wird beim starten vom OS aus der .exe ins RAM kopiert und dann gestartet.
D.h. dein Programm könnte wie oben erwähnt über ne große datenstruktur verfügen, die dann sowohl in der .exe als auch im prog (RAM) vorhanden ist. Dein Prog könnte dann die eingelesenen Daten, in die Datei schreiben, und würde somit die Initialisierungswerte für deine große Struktur ändern.(smc ist etwas _KOMPLETT_ anderes)
mfg
-bg-