On 9/19/23 14:40, ptilou wrote:
Slt,

Je me demande si il existe des lectures pour savoir comment manipuler des 
binaires et puis de les patchers ?

Je sais qu'il y a des personnes qui sont capable de lire le binnaire ( en plus 
de programmes qui font du reverse et modifie les fichiers encapsules !), et 
donc j'aimerai apprendre les fondements de la technique a optimiser le binaire, 
que dois je lire (?) , je n'ai pas vue de question a ce sujet, je l'ai vue en 
action a la St Olivetti (optimiser le binaire) ...

Je me demande si seulement vous ne savez pas le faire, et que le patche kernel 
ou autre ce fait par script et comparaison du binaires sortie de compile avec 
diff ?


Je comprends qu'il s'agit de patcher des executables binaires (au format ELF).

Si le binaire est propriétaire, il y a des cas où c'est illégal. A voir avec son employeur ou avocat et la licence logicielle du binaire.

Si modifier un binaire est légal, c'est en pratique très compliqué. Si on peut lancer le binaire (sous gdb) c'est mieux. Car en pratique un binaire a des dépendances (utiliser /usr/bin/ldd pour les découvrir, voir aussi les greffons chargés par https://man7.org/linux/man-pages/man3/dlopen.3.html ...).

Si on peut arrêter un processus exécutant ce binaire, voir aussi https://man7.org/linux/man-pages/man5/proc.5.html


Un binaire sous Linux peut aussi et légitimement modifier son propre code .... https://asmjit.com/ et https://gcc.gnu.org/onlinedocs/jit/ et https://en.wikipedia.org/wiki/Self-modifying_code etc

(un exemple réaliste est https://sbcl.org/ ou http://refpersys.org/ ....)

Des outils comme https://sourceware.org/binutils/docs/binutils/readelf.html et https://binsec.github.io/ et https://www.sourceware.org/gdb/ peuvent aider.

Ma préférence est pour le logiciel libre, et dans ce cas là, il est plus simple de recompiler le code source après l'avoir modifié.

--
Basile Starynkevitch<bas...@starynkevitch.net>
(only mine opinions / les opinions sont miennes uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/

Répondre à