17/12/2017

Avast libère son décompilateur

L’éditeur Avast vient de publier en open source son décompilateur, résultat de sept années de développement. L’ outil qui se révèle très flexible pourra ainsi profiter à toute la communauté de la cybersécurité.

RetDec, c’est ainsi que l’on nomme le décompilateur publié par Avast permettant l’analyse de fichiers exécutables.Annoncé au début de ce mois lors de la conférence Botconf à Montpellier, RetDec proposé sous licence MIT et basé sur LLVM. L’outil est d’ores et déjà disponible sur GitHub. Avast explique dans un billet de blog que sa démarche vise à « fournir un outil générique pour transformer le code spécifique à une plateforme, comme les fichiers x86/PE, dans une représentation de plus haut niveau, comme le C ».

La communauté pour dépasser les limitations actuelles

Certains reprochent à RetDec d’être aujourd’hui limité aux architectures 32 bits, notamment. Bien que la critique soit justifiée,cela ne l’empêche pas de supporter plusieurs d’entre elles et d’envisager le support des architectures 64 bits dans le futur. En cela, la publication en open source est un appel du pied à la communauté des développeurs qui pourraient contribuer à ces améliorations. Avast ne cache ces ambitions sur le sujet, arguant que l’outil a vocation à faire plus, à supporter tout un éventail « de plateformes, dont différentes architectures, formats de fichiers, et compilateurs ».

Les qualités de RetDec

En attendant les évolutions futures, l’outil peut être testé simplement via un service Web ou une API Rest. Il arbore des propriétés non négligeables, parmi lesquelles :

  • Le support des formats de fichier : ELF, PE, Mach-O, COFF, AR (archive), Intel HEX, et le code machine brut,
  • Le support des architectures : Intel x86, ARM, MIPS, PIC32, et PowerPC (32 bits uniquement),
  • L’analyse statique des fichiers exécutables avec des informations détaillées,
  • Détection du compilateur et packer,
  • chargement décodage des instructions de décodage,
  • récupération des librairies liées au code avec les signatures,
  • extraction et utilisation des informations de débogage (DWARF, PDB),
  • reconstruction des idiomes d’instruction,
  • reconstruction des idiomes d’instruction des hierarchies de classe C++ (RTTI, vtables),
  • Demangling des symboles depuis les binaires C++ (GCC, MSVC, Borland),
  • Reconstruction des fonctions, types et constructions de haut-niveau,
  • désassembleur intégré,
  • sortie dans deux langages de haut-niveau : C et python,
  • génération de graphes d’appel, de flux de control et de statistique variées.

Source : blog.avast.com

Actualités