Dogbolt, l’explorateur de décompilateurs
(dogbolt.org)- Dogbolt est un Decompiler Explorer qui permet d’envoyer un binaire et de comparer au même endroit les résultats de plusieurs décompilateurs
- Les fichiers envoyés sont limités à moins de 2 Mo, et il est indiqué que les binaires téléversés sont conservés
- Des exemples sont fournis pour permettre d’examiner le fonctionnement sans avoir à envoyer soi-même un fichier
- Les outils connectés incluent angr, BinaryNinja, Boomerang, dewolf, Ghidra, Hex-Rays, RetDec et Snowman
- Le nom de chaque outil renvoie vers son site web ou dépôt, ce qui permet de consulter immédiatement les informations sur l’outil tout en observant les résultats comparés
Conditions d’envoi des binaires
- Dogbolt propose un flux où l’utilisateur téléverse un fichier binaire pour consulter les résultats de décompilation
- La taille du fichier doit être inférieure à 2 Mo
- Une indication précise que les binaires téléversés sont conservés, avec un lien vers la FAQ
Vérification possible d’abord avec des exemples
- Il existe une liste d’exemples consultables sans avoir à téléverser directement un fichier
- Ces exemples sont conçus pour examiner côte à côte les résultats de plusieurs décompilateurs
1 commentaires
Avis sur Hacker News
Je tiens à remercier la personne qui l’a publié d’avoir attendu jusqu’à cette semaine. C’est probablement lié au récent épisode de C++ Weekly qui en a parlé, et c’est une bonne ressource : https://www.youtube.com/watch?v=h3F0Fw0R7ME
Jusqu’à la semaine dernière, il y avait de gros problèmes de performance, mais maintenant la file d’attente (https://dogbolt.org/queue) semble globalement correcte. À part quelques longs goulots d’étranglement sur certains décompilateurs, ça tourne assez bien, et Josh et Glenn ont fait un excellent travail d’amélioration : https://github.com/decompiler-explorer/decompiler-explorer/c...
Article lié : Decompiler Explorer - https://news.ycombinator.com/item?id=32079227 - juillet 2022, 82 commentaires
Pendant mon doctorat, surtout quand je travaillais sur le deep learning pour le code obfusqué, j’aurais vraiment eu besoin de ça.
Au début des expériences, Ghidra ne fonctionnait pas très bien avec le multiprocessing et j’avais beaucoup de données à traiter, donc je suis passé à angr. C’était peut-être faisable avec Ghidra aussi, mais c’était bien plus simple de faire la même chose avec angr. J’aime aussi le nom. Je tiens quand même à préciser que Compiler Explorer est le nom du projet et que Godbolt est le nom de famille de l’auteur, mais si on en est déjà à utiliser Godbolt comme verbe, le bateau est sans doute parti
Ce serait bien d’avoir un outil similaire pour explorer le lifting de binaires vers plusieurs représentations intermédiaires (IR), par exemple Ghidra p-code et sleigh, LLVM Machine IR, Qemu TCG, etc.
BNIL, l’ensemble de plusieurs niveaux de langage intermédiaire sur lequel s’appuie Binary Ninja, pourrait aussi être intéressant. On peut en voir une forme exposée dans l’interface cloud.binary.ninja ou dans la démo
Puisqu’on parle de décompilateurs, je me demande si choisir Binary Ninja est une option sûre. J’ai entendu dire qu’IDA était la référence, mais c’est aussi cher pour quelqu’un qui veut faire du reverse engineering en amateur
Personnellement, je trouve que le plus gros avantage de Binja est son langage intermédiaire (IL). Le high-level IL joue le rôle de décompilateur, mais il existe aussi des IL de bas et moyen niveau comme étapes entre l’assembleur et le source. Si le résultat du décompilateur est un peu étrange, regarder l’IL permet de mieux comprendre ce qui se passe, et l’IL lui-même est bien plus lisible que de l’assembleur pur, donc on finit par l’utiliser souvent. Il n’y a presque pas d’équivalent correct sur les autres plateformes. Ghidra et IDA ont chacun une forme d’IL, mais ils sont plutôt orientés lecture par machine, par rapport à l’IL de Binja qui est lisible par un humain
Ce qui manque, c’est le scripting Python, et c’est quand même une grosse différence. Mais pour un outil gratuit, difficile de se plaindre. IDA et Ghidra ont des forces, des faiblesses et des plugins communautaires différents, donc il vaut probablement mieux utiliser les deux
Très bien. Je travaille récemment sur un projet d’émulateur et j’implémente mon propre désassembleur, et je me demande sans cesse comment transformer des motifs de code machine en une forme généralisée, puis en pseudo-code proche du C.
Du coup, j’ai très envie de créer moi-même un décompilateur jouet ces temps-ci
[1] https://docs.binary.ninja/dev/bnil-overview.html
[2] https://riverloopsecurity.com/blog/2019/05/pcode/ exemple
Existe-t-il un bon tutoriel détaillé sur les décompilateurs accessible aux non-spécialistes ?
On devrait pouvoir mettre la sortie de dogbolt dans godbolt
En voyant ça, j’imagine qu’il n’a presque pas eu besoin de convaincre les autres entreprises. Elles ont dû comprendre qu’une petite taille de binaire et la comparaison avec les concurrents peuvent conduire à plus de business.
Ça ressemble à une petite solution idéale pour catégoriser les problèmes entre services et comparer les approches
Les coûts ne sont pas particulièrement faibles. Faire tourner des décompilateurs demande pas mal de ressources de calcul, et certains décompilateurs en particulier sont difficiles à qualifier d’efficaces
Dommage que je ne l’aie pas vu quand c’est passé l’an dernier. C’est vraiment génial et très pratique