IDA Pro

Le désassembleur, les décompilateurs et le débogueur réunis dans un seul outil

Né dans les années 1990, IDA est l’outil de référence de la rétro-ingénierie : il rend lisible un programme dont on n’a pas le code source.

IDA Pro réunit désassemblage, décompilation et débogage, de l’analyse de logiciels malveillants à la recherche de vulnérabilités.


Description

L’interface d’IDA Pro ouverte sur un binaire : liste des fonctions et vue désassemblée

IDA Pro est édité par Hex-Rays, société belge fondée en 2005 par Ilfak Guilfanov, l’auteur du premier désassembleur multi-architecture dont IDA est issu. L’outil sert aux laboratoires d’investigation numérique et aux équipes de réponse aux incidents, aux chercheurs en vulnérabilités, à la sécurité automobile et aux éditeurs qui protègent leur propriété intellectuelle.

IDA Pro charge un exécutable, quel qu’en soit le format ou le processeur, le désassemble puis le décompile en un pseudo-code proche du C. Son débogueur complète cette analyse statique par l’observation du programme en cours d’exécution, en local ou à distance.

IDA Pro décompile aussi les binaires Swift, approfondit l’analyse du code Rust et Go, et fonctionne en natif sous Windows sur ARM.


Désassembleur originel

Désassemble presque tout

La fenêtre de chargement d’un fichier dans IDA, avec la liste des processeurs

Le désassembleur d’IDA se distingue par l’étendue des processeurs et des formats de fichiers qu’il prend en charge : plus de soixante familles de processeurs. Cette polyvalence en fait l’outil tout indiqué pour analyser des systèmes embarqués, des applications mobiles ou des logiciels complexes multiplateformes.

Un désassemblage de qualité, sans effort

La fenêtre de renommage d’une adresse dans IDA

IDA produit automatiquement un désassemblage de grande qualité, sans qu’il soit nécessaire de recourir à ses fonctions de retouche : définition de structures de haut niveau, nommage, typage, commentaires, etc.


Douze décompilateurs

Un pseudo-code lisible et maintenable

Le pseudo-code d’une fonction décompilée par IDA, à côté de la liste des fonctions

Les décompilateurs d’IDA produisent un code lisible, maintenable et fidèle au sens du code source d’origine, grâce aux abstractions de haut niveau, à l’inférence de types, à la reconstitution des structures et bien plus encore. Le pseudo-code se génère en quelques secondes, et les noms et types de variables se modifient à la volée.

Douze décompilateurs couvrent autant d’architectures : x86 et x86-64, ARM 32 et 64 bits, MIPS 32 bits (nanoMIPS compris) et 64 bits, PowerPC 32 et 64 bits, ARC, RISC-V 32 et 64 bits, V850.

Les métadonnées des fonctions connues, à portée de main

Le menu Lumina d’IDA au-dessus de la liste des fonctions

Le serveur public Lumina, tenu par Hex-Rays, recense les métadonnées des fonctions bien connues, comme leurs noms ou les types de leurs opérandes. IDA n’échange avec lui que des valeurs de hachage et des métadonnées : aucun motif binaire sensible ne transite par le réseau.

Pour garder la main sur ces métadonnées, le module Private Lumina permet d’héberger son propre serveur Lumina.

Les bibliothèques reconnues par FLIRT

Le désassemblage d’un binaire dans IDA, avec les fonctions de bibliothèque reconnues par FLIRT

La technologie FLIRT (Fast Library Identification and Recognition Technology) rapproche le code du binaire des bibliothèques connues et nomme les fonctions qui en proviennent : l’analyste ne relit pas du code standard, et le désassemblage gagne en lisibilité.


Déobfuscation

Comprendre les binaires obfusqués avec gooMBA

La simplification d’une expression obfusquée par gooMBA dans le pseudo-code d’IDA

IDA Pro simplifie considérablement le travail de l’analyste face aux binaires obfusqués, en particulier ceux qui reposent sur des expressions MBA (Mixed Boolean-Arithmetic). Le plugin gooMBA, livré avec IDA Pro, combine des techniques algébriques et de synthèse de programmes à des heuristiques, pour une déobfuscation de premier ordre. Il s’intègre directement aux décompilateurs Hex-Rays et s’appuie sur un solveur SMT capable de prouver l’exactitude des simplifications.


Débogueur intégré

L’analyse dynamique avec le débogueur d’IDA

Le débogueur d’IDA : graphe de flot de contrôle, registres et modules chargés

IDA n’est pas seulement un désassembleur : c’est aussi un débogueur polyvalent. Il aide à détecter et à corriger les erreurs d’autres programmes, prend en charge plusieurs cibles de débogage et pilote des applications distantes.

Sous Windows et Linux, il travaille en local comme à distance ; les cibles macOS se déboguent à distance. Il suit les programmes x86, x64 et ARM sous Linux et Android et les cibles RISC-V par le serveur GDB.


API, SDK et bibliothèques

Automatiser l’analyse, ajouter ses propres fonctions

Schéma : l’API, les bibliothèques, la documentation et le SDK d’IDA

IDA Pro est livré avec un ensemble d’outils de développement :

  • le SDK C++ d’IDA, pour développer ses propres fonctions d’interface graphique, modules de processeur, chargeurs et plugins ;
  • l’API IDAPython, pour écrire scripts d’automatisation et plugins ;
  • IDAT, pour exécuter les fonctions d’IDA en ligne de commande ;
  • idalib, pour faire fonctionner IDA Pro comme une bibliothèque, sans interface graphique ;
  • IDA MCP, pour piloter IDA depuis un assistant d’intelligence artificielle par le protocole MCP (Model Context Protocol).

Avec la licence IDA Pro OEM, idalib sert aussi à créer des œuvres dérivées : l’intégrer à un logiciel commercial ou bâtir des applications serveur.

Plus de 200 plugins de la communauté

Le dépôt des plugins de la communauté IDA

Au-delà de ses fonctions natives, IDA s’étend par les plugins : chacun peut développer les siens ou puiser dans le dépôt ouvert de la communauté, qui en compte plus de 200. Hex-Rays organise chaque année un concours de plugins.


Éditions et licences

IDA Pro se vend par abonnement annuel, en licence nominative ou attachée à un poste, la licence flottante étant proposée en option. Les éditions se distinguent par le nombre de décompilateurs et par l’endroit où ils s’exécutent.

IDA PRO ESSENTIAL
Deux décompilateurs d’une même famille, au choix, exécutés dans le cloud de Hex-Rays.

IDA PRO EXPERT 2, 4 ET 6
Deux, quatre ou six décompilateurs au choix, exécutés en local : le poste peut rester isolé du réseau.

IDA PRO ULTIMATE
Tous les décompilateurs, en local, y compris ceux que Hex-Rays publie pendant l’abonnement. Les modules Teams et Private Lumina sont inclus.

IDA PRO OEM
L’intégration d’IDA à un serveur ou à un produit, sous une licence dédiée.

MODULE TEAMS
L’analyse d’un même binaire à plusieurs, en ligne ou hors ligne. Le partage peut aussi passer par un serveur Git : GitHub, GitLab, Bitbucket ou auto-hébergé.

MODULE PRIVATE LUMINA
Un serveur Lumina propre à l’organisation, pour reconnaître rapidement les fonctions déjà analysées sans que leurs métadonnées sortent de ses murs.

SYSTÈMES
Windows 10 (1607) ou 11, macOS 12 ou ultérieur (x64 ou ARM64), Linux x86-64 ou ARM64 à partir de glibc 2.28 (Debian 10, Ubuntu 18.10, RHEL 8, Fedora 28).

FORMATION
Hex-Rays assure des formations de haut niveau aux techniques avancées de rétro-ingénierie, données par des spécialistes d’IDA.