...ich halte das für keine gute Idee - es sei denn, du sprichst perfekt die Maschinensprache der Plattform, auf der der Kram laufen soll (nein, asm reicht da nicht) und kennst das Binärformat des Betriebssystems in- und auswändig. Plattformunabhängigkeit kannste damit natürlich knicken. Was willst du denn konkret machen? -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe DijkstraDieser Post wurde am 18.02.2005 um 23:27 Uhr von 0xdeadbeef editiert.
Das Prog soll den eigenen Code modifizieren und danach in die Originaldatei schreiben. Oder kann man auf Umwegen die ausgeführte Programmdatei löschen?
Vergiß es: So ganz direkt geht das nicht, weil Windows die Datei zum Schreibenj sperrt, während sie ausgeführt wird. Überdenke einfach Dein Design, IMHO gibt es keine guteartigen Gründe, Programme selfmodifying zu schreiben. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
Gibt es nicht eine Möglichkeit beim Linken? Das Codesegment kann man doch so auch im Arbeitsspeicher überschreiben. Oder kann man wenigstens sein eigenes Programm wieder löschen?
du kannst dein eigenes programm natürlich löschen, durch ein anderes programm ,hehe.
spaß beiseite, für mich hört sich das ganze an als würdest du versuchen einen polymorphen wurm/virus oder eben 'nur' einen virus zu schreiben (der sich danach wieder selbst von der platte entfernt).
dein 'code-segment' im arbeitsspeicher kannst du mit sicherheit überschreiben, mußt nur rausfinden wo es liegt und wie es dein betriebssystem dort verteilt hat. dann solltest du auch wissen was für zeichen dort im ram liegen, kannste nämlich mit deinem ascii-source-code nicht vergleichen. -- ...um etwas zu verstehen muß man wissen wie es funktioniert...
Im Moment versuche ich erstmal eine Art Installationsprogramm zu schreiben, welches sich anschließend selbst löscht. Danach kommt dann ein Laufzeitpacker.
Das Codesegment kann man übrigens nur überschreiben, wenn man es entsprechend gelinkt hat.