cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 2013
-
5 août 2007 à 09:14
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 2013
-
5 août 2007 à 20:24
Salut, c'est un question que je repose parce que j'ai découvert un tilt.
Ma question de base était "comment fait-on pour executer un code qui se trouve dans un fichier texte?"
On m'avait répondu que sans le compiler, c'était pas possible. Mais voila le tilt, quand on regrade un fichier comme "form1.Design.vb" et que l'on trouve énormémant de chose comme "Me.ToolStripButton13.Text = "Options"", et la question, ici, qui est en rapport avec ma première question, est, Comment VS interprete ce code?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 5 août 2007 à 10:35
La réponse t'avait été donnée la prmeière fois de manière indirecte.
"...Comment VS interprete ce code?..." Il le compile.
En gros il utilise un compilateur capable de reconnaitre ces différentes informations et de les transformées en un code interprétable par la plateforme d'execution. Ensuite un linker passe derrière pour organiser et assembler les bouts de code générés par le compilateur et ainsi créer un executable.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 5 août 2007 à 13:38
veler, vu que tu insistes, je vais donc supposer que tu pratiques C et ASM.
addrBase = VirtualAlloc(....);
mettre MEM_COMMIT Or MEM_RESERVE au 1er param, PAGE_EXECUTE_READWRITE au dernier.
Avec les manuels Intel, tu auras les opcodes à écrire partant de addrBase en n'oubliant surtout pas d'empiler pour retour sur EIP. Mettre aussi l'opcode du 'ret xxx' en dernier dans le buffer.
Quand buffer rempli des opcodes et stack prête, faire un 'JMP addrBase' pour aller exécuter ce code dynamique.
VirtualFree(addrBase, 0, MEM_RELEASE); quand buffer ne sera plus utile.