Ho un puntatore a una funzione (che ottengo da un vtable) e voglio modificare la funzione cambiando il codice assembler (cambiando alcuni byte) in fase di esecuzione. Ho provato a usare memset e ho anche provato ad assegnare direttamente il nuovo valore (qualcosa come mPtr [0] = X, mPtr [1] = Y ecc.) Ma continuo ad avere un errore di segmentazione. Come posso modificare il codice?Modifica del codice al runtime
(sto usando C++)
sistema operativo è Windows.
Quale sistema operativo? – elcuco
Perché stai provando a farlo? sicuramente l'unica ragione è di ridurre la quantità di memoria di lavoro in quanto è possibile caricare sezioni di codice dal disco. Se spieghi cosa stai cercando di fare, forse possiamo aiutarti. – thecoshman
Il codice auto-modificante è difficile. Questo sistema operativo è stato scritto completamente in assembly perché nessun linguaggio di livello intermedio ha la sintassi per consentire il codice auto-modificante: http://valerieaurora.org/synthesis/SynthesisOS/abs.html. –