EXE nachträglich ändern
-
Ich würd den String in eine Ressource-Datei packen, dann muss man nur neu linken, nachdem die Datei verändert wurde
-
Vorallem, wenn der String größer ist, als vorgesehen, also wenn du 250 Bytes für den String reserviert hast und einen 251 byte größen sting hineinschreiben willst könntest du das Datensegment Zerstören.
Und wenn du den String einfach größer machst, also das Datensegment verschiebst, stimmen die Offsets nicht mehr !
-
Hilft dir das hier weiter?
-
Ja ich habe das offset, aber wie schreibe ich dann genau an die stelle des offsets?
Die Idee mit dem neucompilieren ist nicht so gut, da ich für das programm zum ersten keinen compiler oder andere extra Programme vorraussetzten möchte und zum zweiten nicht möchte dass jemand den Quelltext sieht. Außerdem soll es ja automatisch ablaufen.
mfg
Dr.ChAoS
-
Warum holst du dir den String nicht einfach als Programmeingabe über cin?
-
Weil Ich den string nur einmal ändern will und der soll dann IMMER so bleiben.
Also auch nach dem programm neustart.
mfg
-
Oder es ginge auch anders, wenn das ganze wirklich nur einmal geändert werden soll, dann übergib es als Argument an main (main kann zwei Argumente haben, s. hier http://www.it-academy.cc/menu/80/C++.html und dann dem Link "Standard-Parameter der Funktion main()" folgen).
Erstelle dann eine Batch-Datei über die das eigentliche Programm aufgerufen werden soll. In der Batch Datei übergibst du den String als Argument, damit brauchst du die Batch datei auch nur einmal verändern, wenn der String nachträglich nicht mehr verändert werden soll.
-
Ne, das ist auch nicht das was ich will, es soll eine standalone exe werden, ohne
zusätzliche Dateien oder ähnlichem.
Die Idee mit dem Offset ist super, aber wie schreibe ich genau an die Stelle eines offsets?
mfg
-
Indem du einen fstream auf diese Datei öffnest, an das Offset seek-st und dann den String schreibst. Allerdings würde ich an deiner Stelle dann nicht std::string sondern ein char-Array verwenden.
-
ok danke, ich weiß zwar noch nicht was seek-st ist^^ aber ich versuche es mal
gn8
mfg
Dr.ChAoS//edit: ok jetzt weiß ich was seek ist.