Originariamente inviato da Fox82
Tieni conto che le istruzioni che trovi in memoria non sono istruzioni in linguaggio c ma in linguaggio macchina...

Quindi le cose che dovresti fare sarebbero:
[list=1][*]Prendere in input il codice dall'utente[*]Parsarlo (puoi farlo fare anche al compilatore)[*]Compilarlo[*]Caricare le istruzioni in memoria manualmente[/list=1]

Ammesso che questo sia possibile si tratta di programmazione di bassissimo livello, praticamente devi fare manualmente quello che il SO fa quando esegui un programma
Io non la vedrei così tragica la cosa...





Prova a guardare QUI': è un programma che spiega come funziona il buffer overflow e sembra che crei manualmente una funzione (per sfruttare appunto il buffer overflow)...
A prima vista (a vedere i commenti) mi sembra semplicemente assembler scritto in esadecimale... Quindi non dev essere impossibile da realizzare... E non c'è bisogno di compilarlo...
Inoltre se le funzioni da interpretare sono poche e semplici credo che non sia molto difficile da realizzare...

Nonostante ciò non so quanto possa essere utile la cosa... Penso che tu faccia prima a processare il programma istruzione per istruzione che non a processarlo per scriverlo in memoria sotto forma di funzione e poi eseguirlo...

La cosa comunque interessa anche a me, non per poter usare questo metodo (non ne ho mai avuto bisogno e non so se ne avrò mai, inoltre non so quanto sia sicuro), ma per saperne di più su come viene gestito il codice etc...
Se quindi scoprite qualcosa avvisatemi!