- Mise en place d'un GIT
- Ajout d'explications pour l'installation
Salut les gens!
Mon dernier article commence déjà à remonter :).
Introduction
Aujourd'hui j'ai le plaisir de vous présenter un tool de ma conception.
Il est encore extremement buggué, pas pour rien que je considère ça comme une alpha ^^.
C'est un tool de ropping tout ce qu'il y a de plus classique.
So let's ROPit!
Ce tool va juste construire une liste de gadgets à partir d'un exécutable PE ou d'un fichier raw (assemblé directement avec nasm par exemple).
Il génère un peu plus de gadgets que pvefindaddr, à voir si c'est utile.
La génération des gadgets se déroule en plusieurs étapes:
- recherches de toutes les instructions "utiles" avec un algorithme itératif de backtracking de 32 instructions en arrière maximum
- construction des gadgets avec les instructions trouvées
Les gadgets sont limités à 8 instructions volontairement.
J'ai codé ce tool pour la simple raison que je trouvais les tools disponibles assez lents vu que codés en python (ROPme, pvefindaddr et DEPlib). Et puis c'est assez marrant à coder :).
Par ailleurs, si quelqu'un a une bibliothèque de SAT/SMT solver, ça pourrait être utile ;).
Installation
Pour compiler et installer le tool vous aurez besoin des dépendances suivantes:
sudo apt-get install libdisasm-dev libpcre3-dev libtool
A partir du repository GIT:
La première fois:
git clone https://github.com/m101/ropit cd ropit git submodule init git submodule update --recursive make
Les fois suivantes:
cd ropit git pull git submodule update --recursive make
Bugs connus
FIXED (GIT):
Testé uniquement sur architecture 64 bits pour l'instant, je testerais sur 32 bits une fois les fonctions de bases implémentées correctement.
Le tool crash lorsqu'on essaie de chercher des gadgets dans un fichier ELF 32 bits sur une architecture 64 bits (fonctionne parfaitement sous architecture 32 bits).
La version 0.1 alpha 2 sortira un peu plus tard, le temps que j'implémente les différents formats de fichiers visés et que je teste sous 32 bits :).
Si jamais vous trouvez un crash ou un bug d'une quelconque nature, vous pouvez toujours contribuer en soumettant des rapports de crashs comme décrit ici: Debugging Program Crash.
Conclusion
Bon ok cool on a des tools de ropping ... mais vous les trouvez pas trop limités? :)
Si vous voulez contribuer, vous savez où me joindre :).
Cheers,
m_101
- link: ROPit v0.1 alpha 1
- repos GIT: https://github.com/m101/ropit