Io non la vedrei così tragica la cosa...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
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!
![]()

Rispondi quotando