Bindiffhelper
Extension Ghidra qui utilise BindIff sur votre projet Ghidra pour trouver des fonctions de correspondance et les renommer automatiquement (BindIFF 6, 7, 8 pris en charge). Consultez le manuel BindIFF pour voir comment il fonctionne et comment il correspond aux fonctions / blocs de base. Cependant, avec cette extension, BindIff est automatisé à partir de Ghidrera, vous n'avez donc pas à diffuser vos binaires vous-même.
Veuillez signaler les bogues via la fonction de problème sur github
Ce qu'il fait / Changelog
v0.6
- Mettre à jour la bibliothèque SQLite Driver, devrait maintenant s'exécuter sur Apple Silicon
- Prise en charge des difficultés textuelles externes entre les fonctions décompilées (voir # 24)
- Mises à jour de l'interface utilisateur
v0.5
- Soutenir BindIff 8
- Libération pour Ghidra 11.1
v0.4.3
- Libération pour Ghidra 11.0
v0.4.2
- Ajouter une fonction pour importer toutes les fonctions (pas seulement celles vérifiées dans le tableau)
- Ajoutez de la fonction pour basculer la case à cocher pour plusieurs éléments du tableau
- Mise à jour pour prendre en charge Ghidra 10.3
v0.4.1
- Mise à jour pour prendre en charge Gradle 7.5 et Ghidra 10.1
v0.4.0
- Soutenir BindIff 7 et Ghidra 10
v0.3.2
- Correction d'un bogue où se diffuser avec un fichier différent du même projet n'a pas fonctionné
- Correction d'un bogue où les fichiers avec des noms courts (<3 caractères>) n'ont pas pu être diffusés
v0.3.1
- Correction d'un crash lors de l'ouverture d'un fichier via l'option "From Project"
v0.3
- Coloration Fonctions correspondantes dans la liste
- Ajouter des commentaires aux fonctions correspondantes dans la liste liant à l'autre binaire
- Correction d'un bogue où la bibliothèque Protobuf manquait dans certaines constructions
- Nouveau menu de chargement de fichiers
v0.2
- Correction d'un bogue où le fichier à importer nécessaire pour être vérifié.
- Augmenter la taille de la boîte de dialogue de sélection de fichiers de projet
v0.1
- BindIff le binaire ouvert à Ghidra avec un autre binaire du même projet Ghidra, afficher les résultats et les noms de fonctions d'importation
- Ouvrez un fichier bindiff, créé avec BindIff 6, à partir de deux fichiers .binexport et importez les noms de fonction correspondants dans Ghidra
Prochaine sorties
- Importer des noms de fonction et des paramètres de fonction (type et nom)
- Comparez le binaire ouvert à Ghidra avec un .binexport externe (d'Ida par exemple)
- Communication avec l'interface graphique BindIff 6 pour montrer les graphiques pour les différentes fonctions
Comment installer
Téléchargez le File .zip à partir de la version, s'il est compatible avec votre version Ghidra, sinon voir comment construire ci-dessous.
- Ghidra ouvert
- Dans la fenêtre principale : accédez à Fichier-> Installer les extensions ...
- Cliquez sur le + -button en haut à droite et sélectionnez le fichier zip BinFiffhelper
- Fermez le gestionnaire de plugin. Redémarrez Ghidra pour charger le nouveau plugin
- Voir l'utilisation ci-dessous
D'autres outils recommandés
- Binexport Plugin Binaires ou compilé à partir de la source pour votre version Ghidra spécifique
- Bindiff (https://zynamics.com/software.html)
Sans cela, vous ne pourrez importer que des fichiers .bindiff et ne pas exporter et diffuser automatiquement de votre projet Ghidra
Usage
Assurez-vous que le plugin est chargé dans l'explorateur de code en ouvrant un fichier dans Ghidra et dans l' explorateur de code, allez dans Fichier-> Configurer
Cliquez sur le petit plug-icon en haut à droite:
et assurez-vous que la case à côté de BindIFFHELPERPLUGIN est cochée.
Importer .bindiff externe
Les Files .Binexport correspondants doivent être dans le même dossier.
Ouvrez le fichier dans lequel vous souhaitez importer des noms dans le navigateur de code, puis accédez à Window-> bindIffhelper
Utilisez le bouton OUVERT à partir de BindIFF ou élément de menu et sélectionnez votre fichier .bindiff.
Sélectionnez tous les noms de fonction que vous souhaitez importer et cliquez sur le bouton Importer les noms de fonction en haut à droite ou l'élément de menu.
Comparez entre les fichiers dans le projet Ghidra
Accédez à Window-> bindIffhelper , assurez-vous qu'il n'y a pas d'avertissements concernant Binexport ou BindIFF, puis cliquez sur le bouton Ouvrir à partir du projet .
Sélectionnez l'autre fichier dans l'arborescence et cliquez sur OK.
Comment construire
Exigences:
- Installation de Ghidra (https://ghidra-sre.org) ou compilé à partir de la source
- Quelques jdk. Il peut y avoir certaines restrictions en fonction de la façon dont votre Ghidra a été construit et des autres plugins que vous utilisez. Je recommande d'utiliser TEMURIN 21 LTS, car cela semble actuellement fonctionner avec Binexport et BindIffhelper.
- gradle (testé avec 7,5, 8.10)
Cloner le référentiel
Cloner récursivement le référentiel, car il dépend de Binexport pour la définition du tampon de protocole respectif.
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
Construire
Vous devez définir la variable d'environnement GHIDRA_INSTALL_DIR sur le Dir d'installation Ghidra. Si vous avez installé des JDK différents, assurez-vous que la variable d'environnement JAVA_HOME pointe vers celle que votre installation Ghidra utilise.
L'extension sera conçue spécifiquement pour cette version Ghidra.
Puis allez le dossier bindiffhelper dans votre coquille et faites
Cela construira à la fois Binexport dans le sous-module respectif et BindIffhelper dans le répertoire parent. Il aurait dû y avoir un .zip-fichier créé dans le répertoire DIST. Utilisez ce fichier .zip à installer en fonction des instructions ci-dessus.
Configuration de développement / débogage
Parfois, il est utile de pouvoir déboguer l'extension avec Ghidra, voici quelques notes à ce sujet:
- Clone et construire Ghidra et laisser Gradle créer des projets d'éclipse selon le Devguide
- Importez les projets dans Eclipse (assurez-vous qu'il dispose de plugins pertinents pour le développement de l'extension)
- Construire et installer Ghidradev
- Déballer la construction de Ghidra et lier Ghidradev. Je dois peut-être définir la variable d'environnement
GHIDRA_INSTALL_DIR - Exécutez Ghidra à partir de l'éclipse et installez une extension Binexport
- Créer un projet d'éclipse BindIffhelper avec
gradle build eclipse - L'importez-le dans Eclipse et utilisez Ghidradev pour le relier à la build Ghidra
- Débogage as-> ghidra
Lors du débogage de Ghidra avec l'extension hors d'Eclipse, l'extension est chargée automatiquement dans Ghidra (ne passez pas l'installation de l'extension habituelle). Cependant, le plugin doit être activé dans l'explorateur de code.
Références
- https://github.com/google/bindiff/releases
- https://www.zynamics.com/bindiff/manual/
- https://github.com/google/binexport/
Icônes de: icônes libres de lacoche Fatcow