ReverserAI - Du Reverse Engineering à base d'IA
ReverserAI est un projet de recherche assez avant-gardiste qui vise à automatiser et améliorer les tâches de reverse engineering grâce à l’utilisation de modèles de langage locaux (LLM).
Fonctionnant entièrement hors ligne, cette première version se distingue par sa capacité à suggérer automatiquement des noms de fonctions de haut niveau et sémantiquement significatifs à partir de la sortie du décompilateur. ReverserAI se présente également comme un plugin pour Binary Ninja, mais son architecture modulaire est conçue pour être étendue à d’autres plateformes comme IDA ou encore Ghidra.
Et bien que les LLM locaux n’égalent pas encore les performances de leurs concurrents basés sur le cloud comme ChatGPT4 ou Claude3, ils représentent une avancée majeure avec un bon équilibre entre les performances et la confidentialité.
Parmi les fonctionnalités clés de cet outil, on retrouve :
- Un fonctionnement totalement hors ligne, ce qui garantit la confidentialité et la sécurité des données
- La suggestion automatique de noms de fonctions sémantiquement significatifs à partir de la sortie du décompilateur
- Une intégration transparente avec Binary Ninja via un plugin dédié
- Une architecture modulaire permettant une extension facile vers d’autres outils d’ingénierie inverse
- Une compatibilité avec le matériel grand public, y compris les architectures Apple Silicon
Cependant, une configuration matérielle avec plusieurs cœurs CPU ou un GPU puissant est recommandée, car sur un système avec au moins 16 Go de RAM et de 12 cœurs CPU, les requêtes prennent environ 20 à 30 secondes. Grâce aux optimisations GPU, en particulier sur les appareils Apple Silicon, ce temps peut être réduit à 2 à 5 secondes par requête.
Ça s’installe à l’aide du gestionnaire de plugins de Binary Ninja et une fois lancé, l’outil téléchargera automatiquement le modèle de langage nécessaire (~5 Go). Les paramètres de configuration permettent également d’optimiser les performances en fonction de votre configuration matérielle, en répartissant la charge entre le CPU et le GPU.
Cet outil encore un peu jeune, est un excellent proof of concept qui illustre bien le potentiel des LLM locaux pour tout ce qui est reverse engineering. On verra évidemment ce que ça deviendra d’ici quelques années.
Le code source est disponible sur GitHub à l’adresse suivante alors n’hésitez pas à suggérer des améliorations.
Happy hacking à tous !