Eigene Binary wärend Laufzeit verändern
-
Moin,
Ich möchte in meinem Programm wärend es läuft binar Blödsinn antexten. Nur wird mir (logischerweise) zur Laufzeit der "ab"-Modus verweigert und ich habe keine Ahnung, wie ich das lösen könnte. Ich ahbe gerade versucht, das ganze als Kind-Prozess (nachdem der Vater gestorben ist) zu machen, aber auch das klappt nicht. Hat einer ne Idee, was ich machen könnte?
Danke schonmal im voraus
Edit: Wieso wurde mir mein voraus weg zensiert?
-
Weil du es falsch geschrieben hast.
EDIT: Und "geht nicht" ist keine zufriedenstellende Problembeschreibung.
-
Ringding schrieb:
EDIT: Und "geht nicht" ist keine zufriedenstellende Problembeschreibung.
er meint das Öffnen zum Schreiben der Binary geht nicht. Text file busy....
-
Jo, FILE *file bleibt jedenfalls null.
Ich habe mir überlegt, ich könnte eine temporäre binary erzeugen, die gestartet wird, aber das Orignal-File verändert, und dann nach getaner Arbeit wieder die veränderte Original-Datei ausführt. Das müsste gehen, gefällt mir persönlich aber immer noch nicht. Wenn einer noch eine bessere Idee hat, bin ich offen...
-
was soll'n das werden wenns fertig ist?
datei kopieren, reinschreiben und zurückverschieben geht natürlich... notfalls über ein shellscript.
-
Jedenfalls kein Wurm, um das ma klar zu stellen
Eher eine Art "Lebender Organismus"
-
Habe ich das also richtig verstanden, dass du eine Binary waerend der Laufzeit umaendern willst/darin rumschreiben moechtest? Falls ja, vergisst du vllt. dass Linux ELFs aehnlich aufgebaut sind wie COMs (Copy Of Memory). D.h: Es wuerde dir so oder so nichts nutzen in der Binary rumzupfuschen, da der effekt sowieso nur nach dem Neustart des Programms aktiviert werden wuerde.
Eine andere Moeglichkeit waere, ueber ein selbstgeschriebenes Kernel-Modul das Code-Segment des Programms waehrend seiner Laufzeit zu veraendern. Hirnrissige Idee.
Wenn du zusaetzlichen Code anbringen willst, dann kannst du dies im Stack tun. Pushe deinen Code in den Stack und wenn der Hardware check nicht rumzickt kannst du ihn dort ausfuehren.