Rétro-ingénierie dans votre navigateur. Déposez un exécutable, obtenez un premier aperçu en quelques secondes. binkeep est un outil d'analyse binaire libre et open source pour PE, ELF et Mach-O : désassembleur, fonctions, références croisées, chaînes, imports, YARA et détection de packers. Le fichier n'est jamais téléversé, et après la première visite, il fonctionne hors ligne.
Essayez-le : https://kano92-dir.github.io/binkeep/

Ce n'est pas un remplacement de Ghidra. Il couvre la première partie de l'examen d'un binaire inconnu, sans rien installer : triage de malware, challenges CTF, vérification des imports d'un outil téléchargé, ou comparaison de deux builds.


Fonctionnalités
Formats
- PE32 / PE32+ (Windows), ELF32 / ELF64 (Linux, les deux endianness), Mach-O 32/64 et binaires universels (macOS, iOS)
- Tout autre format obtient quand même l'hexadécimal, les chaînes, l'entropie et YARA
Vue d'ensemble
- En-têtes, point d'entrée, date de compilation, bibliothèques liées, versions de plateforme et de SDK
- Atténuations de sécurité : ASLR, DEP, CFG (PE) ; PIE, NX, RELRO, canary, FORTIFY (ELF) ; PIE, canary, ARC, hardened runtime (Mach-O)
- Détection de packers : UPX, Themida, VMProtect, ASPack, MPRESS, PECompact, Enigma, obfuscateurs .NET et plus encore, par noms de sections et signatures d'octets, plus des heuristiques (entropie du code, nombre d'imports, emplacement du point d'entrée)
- Authenticode : signataire, émetteur, validité, horodatage, et le digest du fichier recalculé pour montrer si le fichier a changé après la signature
- Signature de code Mach-O : identifiant, team ID, ad-hoc ou développeur, hardened runtime
- Indices de chaîne d'outils : Go, Rust, Nim, PyInstaller, NSIS, Inno Setup, AutoIt, Electron, .NET, GCC
Code
- Liste des fonctions issue d'un balayage linéaire complet du code, plus
.pdata (x64 PE) et LC_FUNCTION_STARTS (Mach-O)
- Références croisées : qui appelle une fonction, quel code utilise un import, quel code lit une chaîne
- Désassemblage (x86, x64, ARM, ARM64 via Capstone en WebAssembly) avec les noms d'API via l'IAT, la GOT et les stubs Mach-O, les chaînes en ligne, les branches cliquables
- Graphe de flot de contrôle pour toute fonction : blocs de base avec arêtes prises / non prises / boucles, déplacement et zoom,
Space pour basculer entre le listing et le graphe
- Vos propres noms de fonctions et commentaires (
N, ;, X dans le désassemblage), enregistrés dans le navigateur par hash de fichier
Données
- Graphe d'entropie avec bandes de sections, sections avec drapeaux R/W/X
- Imports avec étiquettes heuristiques (injection, anti-debug, réseau, crypto, persistance, ...) et nombres d'appels
- Chaînes (ASCII et UTF-16) avec filtre regex, catégories, et un filtre « référencées par le code »
- Ressources PE : informations de version, manifeste (niveau d'exécution demandé), l'icône de l'application, et les exécutables ou archives embarqués
- Vue hexadécimale qui reste rapide sur les gros fichiers
Flux de travail
- YARA : le vrai libyara compilé en WebAssembly, avec les modules
pe, elf et math. Vos règles sont conservées dans le navigateur et exécutées sur chaque fichier que vous ouvrez
- Comparer deux fichiers : en-têtes, sections, imports, exports et chaînes modifiés
- Lien de partage : le rapport est compressé dans le fragment d'URL (
#r=...), que les navigateurs n'envoient jamais à un serveur. Le fichier lui-même n'est jamais inclus
- Exporter le rapport en Markdown ou JSON
- Palette de commandes (
Ctrl+K / Cmd+K) : accéder à n'importe quelle fonction, import, symbole, chaîne, adresse ou action
- Installable comme application, fonctionne hors ligne
Hébergez-le vous-même
C'est un site statique sans étape de build. GitHub Pages fonctionne tel quel : poussez le dépôt, puis dans Settings > Pages choisissez la branche main et le dossier racine.
Exécution locale
python serve.py
Ouvrez ensuite http://localhost:8765. N'importe quel serveur de fichiers statiques fonctionne, tant qu'il sert les fichiers .js en text/javascript et les fichiers .wasm en application/wasm.
Aucune étape de compilation. Capstone (capstone-wasm 1.0.3) et libyara (libyara-wasm 1.2.1) sont inclus dans vendor/.
Confidentialité
Toute l'analyse se déroule dans la page. Les seules requêtes réseau sont les fichiers de l'application et Google Fonts. Le lien de partage transporte le rapport, pas le fichier, et la partie après # n'est jamais envoyée à un serveur.
Limites
- La découverte de fonctions repose sur un balayage linéaire : les données situées dans le code peuvent être mal interprétées, et les fonctions accessibles uniquement via des pointeurs peuvent être manquées
- La chaîne de certificats Authenticode n'est pas vérifiée, seul le condensé du fichier l'est
- Pas encore de décompilateur (prévu)
- Les étiquettes d'API sont des indices. Tout logiciel légitime utilise chacune de ces API
Licence
binkeep est sous licence MIT, voir LICENSE.
Code tiers inclus, avec les textes de licence correspondants dans vendor/ :