
Une interface PyQt5 pour le plugin binjatron de Binary Ninja qui inclut des fonctionnalités de surlignage conçues pour faciliter l'apprentissage de la rétro-ingénierie aux débutants.
La capacité à faire de la rétro-ingénierie sur des binaires x86 est une compétence importante, même en dehors du secteur de la sécurité de l'information. Cependant, même avec l'abondance de supports de formation disponibles, c'est une compétence difficile à acquérir. De nombreux étudiants ont exprimé leur frustration face à la quantité de connaissances préalables requises pour progresser ne serait-ce que modestement sur des binaires simples.
Binary Ninja est souvent commercialisé auprès des étudiants en raison de son coût relativement faible, de son interface épurée et de sa facilité d'utilisation. Les langages intermédiaires de bas niveau et de niveau moyen offrent également un moyen simple de comprendre ce que font les instructions. Ce projet vise à faire de Binary Ninja un outil encore meilleur pour les débutants en facilitant la visualisation de l'exécution d'un binaire.
Ce projet est le fruit du programme de stage d'été 2017 de NCC Group. Les composants de débogage visuel peuvent être considérés comme le successeur spirituel de Microcorruption, un CTF de sécurité embarquée produit par Matasano Security. Les mises à jour ultérieures seront suivies sur https://github.com/ehennenfent/binja_dynamics. NCC Group n'est pas responsable des modifications apportées au dépôt après le 18 août 2017.
Dans votre dossier de plugins Binary Ninja, exécutez :
git clone https://github.com/ehennenfent/binja_dynamics.git
cd binja_dynamics
./install.sh
Après avoir chargé un binaire, cliquez sur l'élément Enable Dynamic Analysis Tools dans le menu Outils. Une fenêtre de débogueur apparaîtra, que vous pourrez contrôler via les boutons de la barre d'outils. À mesure que vous avancez pas à pas dans l'exécution, l'interface se met à jour en temps réel pour refléter l'état du programme. Grâce à Binjatron, l'instruction courante et les éventuels points d'arrêt sont surlignés dans la vue du binaire. Pour chaque adresse mémoire et pour chaque registre, la valeur est surlignée en orange dès qu'elle a changé à la suite de l'instruction précédente. De la même manière, le haut et le bas du cadre de pile courant (ainsi que l'emplacement prédit de l'adresse de retour) sont surlignés afin de permettre aux débutants d'identifier plus facilement les portions de mémoire importantes à examiner. La visionneuse de backtrace affiche une backtrace des cadres de pile courants et fournit un bouton qui fait naviguer automatiquement la vue du binaire vers l'emplacement correspondant à l'adresse mémoire où le plugin s'attend à trouver l'adresse de retour. Dans certaines fonctions, le cadre de pile n'est pas dépilé de la manière attendue par le plugin, cette adresse de retour prédite peut donc ne pas toujours être correcte.

(Dans la capture d'écran ci-dessus, le pointeur de base est affiché en vert olive)
Il peut parfois être nécessaire de consulter le code source pour comprendre le comportement exact des interfaces. En prévision de cela, bon nombre des décisions de conception et des détails d'implémentation sont expliqués dans des commentaires en ligne.
Le wiki est encore relativement sommaire, mais des contenus tels que la liste des obstacles rencontrés et le journal de développement peuvent s'avérer utiles pour le dépannage.
Envisagez de consulter le dépôt binja_sensei pour des exemples qui pourraient vous aider à démarrer.
Hormis Binary Ninja, install.sh gérera ces dépendances pour vous.