Voir mon post dans le topic sur la DLL pour les chaines de caractère ->
https://www.jeuxvideo.com/forums/1-31-8289409-1-0-1-0-0.htm
" ah bon ? l´insertion d´octets dans un éditeur d´hexa marche très bien . . . vu que la plupart du temps les programmes affichent les chaines jusqu´au caractère null. Le problème que cela peut poser c´est si jamais le programme stocke la chaine dans un buffer de taille fixe et que la chaine stockée se retrouve plus longue que le buffer. Mais c´est tout à fait possible."
Non! Non, impossible de rajouter de nouveaux bytes, dans les exécutables PE et ELF, les adresses sont déjà relocalisées, fixes. Tu peux rien modifier sans tout faire sauter. Si tu entend par " buffer de taille fixe" une section dans l´exécutable, c´est toujours le cas ; toutes les constantes ( attention à ne pas confondre avec immediate) sont dans une section de taille fixe et immuable sans faire sauter le tout, pour s,en sortir faudrait TOUT relocaliser ce qui suiverait le byte modifié, un boulot monstre. Faudrait qu´il reconnaisse chaque instruction utilisant une adresse relocalisble, la relocaliser, ect... Il te faudrait faire un prog juste pour ça...
Cepandant, Yoda, concernant ton point, non, les jumps conditionnels sont relatifs, en général. Cepandant, certains très longs ne le sont pas, tous les appels de fonctions utilisent des adresses absolues et l´utilisation de données globales et constantes se base sur des adresses absolues.
Ça se passe comme ça sur la grande majorité des formats d´exécutables, quoique moi je connais surtout le PE ( leuh format Microsoft).
Kelios
----------