Binabsinspector (inspecteur abstrait binaire) est un analyseur statique pour les vulnérabilités automatisées de l'ingénierie et de la numérisation dans les binaires, qui est un projet de recherche à long terme incubé chez KeenLab. Il est basé sur l'interprétation abstraite avec le soutien de Ghidra. Il fonctionne sur le pcode de Ghidra au lieu de l'assemblage. Actuellement, il prend en charge les binaires sur X86, X64, ARMV7 et AARCH64.
z3-${version}-win/binz3-${version}-glibc-${version}/bin/*.so TO /usr/local/lib/Construisez l'extension par vous-même, si vous souhaitez développer une nouvelle fonctionnalité, veuillez vous référer au Guide de développement.
gradle buildExtension sous la racine du référentieldist/${GhidraVersion}_${date}_BinAbsInspector.zipVous pouvez exécuter BinabsInspector en mode sans tête, en mode GUI ou avec Docker.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> - PATH PROJET GHIDRA.
<projectName> - Nom du projet Ghidra.
<scriptParams> - L'argument pour notre analyseur fournit les options suivantes:
| Paramètre | Description |
|---|---|
[-K <kElement>] | Kset taille limite k |
[-callStringK <callStringMaxLen>] | String d'appel Longueur maximale k |
[-Z3Timeout <timeout>] | Timeout Z3 |
[-timeout <timeout>] | Timeout d'analyse |
[-entry <address>] | Adresse d'entrée |
[-externalMap <file>] | Configuration du modèle de fonction externe |
[-json] | Sortie au format JSON |
[-disableZ3] | Désactiver Z3 |
[-all] | Activer tous les vérificateurs |
[-debug] | Activer la sortie du journal de débogage |
[-check "<cweNo1>[;<cweNo2>...]"] | Activer les vérificateurs spécifiques |
Avec Ghidra Gui
Window -> Script Manager et trouvez BinAbsInspector.javaBinAbsInspector.java Entrée, définissez les paramètres dans la fenêtre de configuration et cliquez sur OKAvec Docker
git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $( pwd ) :/data/workspace bai " @@<script parameters> " -import < file >Jusqu'à présent, BinabsInspector prend en charge les vérificateurs suivants:
La structure de ce projet est la suivante, veuillez vous référer aux détails techniques ou à l'article de la version chinoise pour plus de détails.
├── main
│ ├── java
│ │ └── com
│ │ └── bai
│ │ ├── checkers checker implementatiom
│ │ ├── env
│ │ │ ├── funcs function modeling
│ │ │ │ ├── externalfuncs external function modeling
│ │ │ │ └── stdfuncs cpp std modeling
│ │ │ └── region memory modeling
│ │ ├── solver analyze core and grpah module
│ │ └── util utilities
│ └── resources
└── test
Vous pouvez également construire le Javadoc avec gradle javadoc , la documentation de l'API sera générée dans ./build/docs/javadoc .
Nous employons Ghidrera comme fondation et tirons fréquemment des collections jimmutables pour de meilleures performances.
Ici, nous tenons à les remercier pour leur grande aide!