
Un puissant outil de réécriture statique de binaires
E9Patch - Un puissant réécrivain statique de binaires
E9Patch est un outil puissant de réécriture statique de binaires pour les binaires ELF Linux x86_64.
E9Patch est :
La réécriture statique de binaires prend un binaire d'entrée (exécutable ELF ou objet partagé) et génère un binaire de sortie avec un correctif/modification qui lui est appliqué. Le binaire patché peut être utilisé comme un remplacement direct de l'original.
Les binaires E9Patch pré-construits peuvent être téléchargés ici :
Compiler E9Patch est très simple : exécutez simplement le script build.sh.
Cela va automatiquement compiler deux outils :
e9patch : le backend de réécriture de binaires ; ete9tool : un frontal de désassemblage linéaire pour E9Patch.E9Patch est utilisable via le frontal E9Tool.
Par exemple, pour ajouter une instrumentation d'impression d'instructions à toutes les instructions xor dans xterm, nous pouvons utiliser la commande suivante :
$ ./e9tool -M 'asm=/xor.*/' -P print xterm
Cela générera une version modifiée de xterm écrite dans le fichier a.out.
Le xterm modifié peut être exécuté normalement, mais il imprimera la chaîne assembleur de chaque instruction xor exécutée sur stderr :
$ ./a.out
xorl %ebp, %ebp
xorl %ebx, %ebx
xorl %eax, %eax
xorl %edx, %edx
xorl %edi, %edi
...
Pour une liste complète des options et modes pris en charge, consultez :
$ ./e9tool --help
Quelques autres projets qui utilisent E9Patch incluent :
libc.so.E9Patch est un outil de bas niveau conçu pour être intégrable dans d'autres projets. Pour en savoir plus, veuillez consulter la documentation suivante :
Les bogues peuvent être signalés ici :
La version actuelle d'E9Patch est considérablement améliorée par rapport au prototype original évalué dans l'article PLDI'2020. Plus précisément :
-O2 à E9Tool.Ce logiciel a été publié sous la licence publique GNU (GPL) version 3.
Certains fichiers spécifiques sont publiés sous la licence MIT (vérifiez le préambule du fichier).
Pour plus d'informations, veuillez consulter notre article PLDI'2020 :
Veuillez citer notre article comme suit :
@inproceedings{e9patch,
author = {Duck, Gregory J. and Gao, Xiang and Roychoudhury, Abhik},
title = {Binary rewriting without control flow recovery},
year = {2020},
publisher = {Association for Computing Machinery},
url = {https://doi.org/10.1145/3385412.3385972},
doi = {10.1145/3385412.3385972},
booktitle = {Programming Language Design and Implementation (PLDI)}
}
Ce travail a été partiellement soutenu par le National Satellite of Excellence in Trustworthy Software Systems, financé par la National Research Foundation (NRF) de Singapour dans le cadre du programme national de R&D en cybersécurité (NCR).