Persistente .exe -Datei?

Hallo,

vielleicht kommt es manchen schräg vor, aber fragen soll ja bekanntlich nicht schaden:
Gibt es die Möglichkeit, mit c++ ein Programm (für windows) zu schreiben, welches nur aus einer .exe -Datei besteht, und Daten persistent eben in dieser .exe selbst ablegt?
D.h. es müsste sich selbst modifizieren können. (und danach noch funktionieren :wink:

Was gibt es da für Möglichkeiten?
Gibt es für .exe -Programme so etwas wie Meta-Informationen?

Danke für eure Tips!

D.h. es müsste sich selbst modifizieren können. (und danach
noch funktionieren :wink:

Hi Peter,
Im großen und Ganzen funktioniert das schon, aber nicht zur Laufzeit, da du unter Windows dann nur Lese- und keinen Schreibzugriff darauf hast. Mit einem kleinen 2.Programm kannst du jedoch Änderungen vornehmen.

Dafür deklarierst du in denem Hauptprogramm eine große globale! Variable.
z.B. char[1000].
Diese Variable beschreibst du mit einem einmaligen Suchstring am Anfang. Der Rest bleibt leer. Jetzt kannst du mit dem 2. Prg die EXE öffnen, deinen String suchen und ab da den restlichen Bereich (der Var) mit deinen Werten überschreiben.
Auslesen kannst du die Werte zur Laufzeit einfach mit der reservierten Variablen (evtl. einfach casten).

vielleicht hilft dir das,
husky

Hallo,

Gibt es die Möglichkeit, mit c++ ein Programm (für windows) zu
schreiben, welches nur aus einer .exe -Datei besteht, und
Daten persistent eben in dieser .exe selbst ablegt?
D.h. es müsste sich selbst modifizieren können. (und danach
noch funktionieren :wink:

Ja, sowas ist möglich. Für gewöhnlich legst du in deinem Programm ja immer Ressourcen an (Dialoge, Icons, Bitmaps …), die sind mit API-Funktionen leicht zu ändern (wenn mir jetzt nur die Namen einfallen würden …) - also schreibst du entweder direkt was in deine Ressourcen oder du Erstellst dir eine Zip-Datei, die du als Ressource anhängst (vielleicht weniger gefährlich). Durch ändern der Ressourcen kannst du dein Programm auch ziemlich leicht kaputt machen, also aufpassen, dass es nichts mit selben Namen gibt :smile:

bye
Christoph

Mit einem kleinen 2.Programm
kannst du jedoch Änderungen vornehmen.

Hallo Husky,
danke für deine Anregung!
Aber mit einem 2ten Programm wäre ja der ‚monolithische‘ Ansatz zunichte gemacht.

Aber die Idee mit der ‚markierten‘ Variable werde ich mir für andere Probleme merken!

Gruß,
Peter

Ja, sowas ist möglich. Für gewöhnlich legst du in deinem
Programm ja immer Ressourcen an (Dialoge, Icons, Bitmaps …),
die sind mit API-Funktionen leicht zu ändern (wenn mir jetzt
nur die Namen einfallen würden …) - also schreibst du
entweder direkt was in deine Ressourcen …

Hallo Christoph!
Danke, das sollte mich auf die richtige Spur führen.
Mein Programm kann ja auch sein Icon speichern, hätte ich eigentlich selbst drauf kommen dürfen :wink:.
Jetzt muss ich nur noch irgendwie herausfinden, ob unter Windows eine Modifikation während der Laufzeit irgendwie drin ist … !

Gruß,
Peter

mir ist da mal eine pragma-Anweisung untergekommen, mit der man Platz in seinem Programm für eben solche Zwecke reservieren kann.
Hab mir den Namen nicht gemerkt :frowning:
Aber wenn du die Liste mit den Pragmas duchgehst, wirst du sie schon aufspüren.

Danke für den Tip!

Bin mal gespannt, ob ich das finde …

Gruß,
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]