Code der sich selbst modifiziert/neukompiliert



  • Hallo Leute in php soll es laut einem meiner Freunde ja möglich sein sich selbst neu zu erstellen also der code.
    sprich ich will was im code geändert haben und diese änderung schreibt das aktuelle programm in code der dann neu interpretiert/(in anderen sprachen) kompiliert werden kann.

    Geht sowas auch in c++? bzw c?

    ich weiss blöde frage aba will sichagehen und wehnn nicht kennt jmd ne sprache wo das möglich is?

    thx



  • das geht in c/c++ nicht, da diese kompiliert werden...
    soetwas was du beschreibst geht nur bei interpretierten sprachen.



  • Alsoo wenn du den Binärcode direkt veränderst, gehts schon, aaber das könnte auch ne Zugriffsverletzung geben und macht auch selten sinn..

    Ich denke, du willst auf genetische Algorithmen hinaus. Hier sollte es eigentlich auch ausreichen, die einzelnen Genome in Textdateien zu speichern, da du ja eigentlich keine neuen Algorithmen entwickelst, sondern nur vorhandene teilschritte aneinander reihst.



  • @Moh: schade, gibts da viell über umwege ne Möglichkeit?

    dass das progg den code in ne txt datei schreibt und die dann über die konsole kompiliert wird und neu ausgeführt??

    Muss doch gehen oda?

    Vermutlich wäre das mit dem codeändern aba schwer also das neu beschreiben.



  • muhi schrieb:

    @Moh: schade, gibts da viell über umwege ne Möglichkeit?

    dass das progg den code in ne txt datei schreibt und die dann über die konsole kompiliert wird und neu ausgeführt??

    Muss doch gehen oda?

    Vermutlich wäre das mit dem codeändern aba schwer also das neu beschreiben.

    Ich kann dir nicht direkt helfen, aber such mal nach den sourcen eines polymorphen Computervirus (sofern es legal ist). AFAIK können polymorphe Viren sich selber mit der Zeit verändern. Vllt hilft dir dies.



  • muhi schrieb:

    @Moh: schade, gibts da viell über umwege ne Möglichkeit?

    dass das progg den code in ne txt datei schreibt und die dann über die konsole kompiliert wird und neu ausgeführt??

    Muss doch gehen oda?

    Vermutlich wäre das mit dem codeändern aba schwer also das neu beschreiben.

    Keine Ahnung ob und wie das geht. Theoretisch müsstest du nen vom Haupt-Programm unabhängiges Programm haben, das könnte das Kompilieren der veränderten Text-Datei übernehmen, überschreibt die .exe vom Haupt-Programm und startet es wieder.



  • hmm das überschreiben wär noch nicht mal so wichtig, bloß das neukompilieren.



  • Dein Programm könnte eine Minimalvariante eines Compilers beinhalten...

    Im Endeffekt würde es anhand der gegebenen Daten die Quelldatei neu erzeugen, sich mit einem Parameter -compile neu kompilieren, anschließend eine neue Instanz starten und dann selber absterben..



  • das wäre perfekt aba einfach denk ich ist es wenn man einfach über system oda was weiss ich zb gcc den befehl gibt den und die txt datei zu kompilieren oda?



  • muhi schrieb:

    das wäre perfekt aba einfach denk ich ist es wenn man einfach über system oda was weiss ich zb gcc den befehl gibt den und die txt datei zu kompilieren oda?

    Bitte, bevor du deinen Text abschickst, einmal mit

    sed -e "s/a\b/er/g"
    

    drübergehen. Auch wenn dadurch einige neue Fehler eingefügt werden könnten, dein Post wird trotzdem lesbarer sein ...

    Klar kannst du das mit system machen, aber das ist ziemlich unschön. Wofür brauchst du das überhaupt?!



  • Was hast du eigentlich genau vor?

    Früher war das ein beliebter Trick, die Binäranweisungen während der Laufzeit zu verändern, um Speicher zu sparen. Nur wirst du kaum Speicher sparen, wenn du einen Compiler mitlieferst, geschweige denn das so etwas heute noch nötig ist (µC mal ausgenommen :))

    Wenn es dich einfach so mal interessiert, Programme zur Laufzeit zu manipulieren, weil du zB einen JIT-Compiler schreiben willst, dann befasse dich mit Assembler.



  • Hallo,

    Es geht schon, aber das wird eine Lebensaufgabe.

    MFG winexec*



  • .filmor schrieb:

    Bitte, bevor du deinen Text abschickst, einmal mit

    sed -e "s/a\b/er/g"
    

    drübergehen. Auch wenn dadurch einige neue Fehler eingefügt werden könnten, dein Post wird trotzdem lesbarer sein ...

    :D:D:D


Anmelden zum Antworten