selbst modifizierendes programm!?



  • hi,

    wir haben in der uni folgende aufgabe bekommen und zwar sollen wir ein programm entwickeln, was eine funktion addition() implementiert und eine funktion morph(int n). wenn man nun morph(1) aufruft, soll die funktion addition, die bisher 2 zahlen addiert hat, die 2 übergebenen zahlen subtrahieren und zwar für immer. also auch bei der nächsten programmausführung soll dies passieren, ohne das man noch jemals die funktion morph(1) vorher aufrufen muss. wie soll ich das machen, ich stehe da irgendwie auf dem schlauch gerade... 😕

    danke euch,
    theo



  • Im Code irgendwo einen String oder einen Variable definieren die das Zeichen
    '+' oder '-' enthält. Die Funktion wertet das dann aus.

    Das Teil so markieren, daß Du es in der exe finden und ändern kannst.

    Das Programm müsste sich selbst laden, modifizieren und dann sich selbst auf
    der Platte überschreiben. Das müßtest Du dem OS noch beibringen. Ein wenig
    tricksen muß man da vermutlich.

    char copcode = "MEINOPCODEIST+";
    
    addition( a, b) {
      // Lade die exe in den Speicher nach fbuf und
      // suche nach MEINOPCODEIST. Das nächste Byte 
      // wäre dann der Opcode.
      return opcode == '+' ? a+b : a-b;
    }
    

    Oder so. Wäre mal ein nettes Experiment ...



  • Am einfachsten ist es, den Quelltext zu verändern,
    wenn morph() aufgerufen wird; und dann neu zu übersetzen.

    Keine Ahnung, ob das als Lösung durchgeht.



  • na das einfachste wäre, ne .ini -datei zum programm mit abzuspeichern. und die liesst du dann vor progammstart aus und kannst sie leicht im programm ändern.

    wenn der prof das nicht explizit verboten hat, würd ich das so machen.
    rotzfrech. 😃



  • tenim schrieb:

    na das einfachste wäre, ne .ini -datei zum programm mit abzuspeichern. und die liesst du dann vor progammstart aus und kannst sie leicht im programm ändern.

    wenn der prof das nicht explizit verboten hat, würd ich das so machen.
    rotzfrech. 😃

    Ist immerhin gängie Praxis, nicht umsonst bedienen sich auch Branchengiganten wie Microsoft dieser Technik.


Anmelden zum Antworten