IDA Pro (logiciel)

Un article de Wikipédia, l'encyclopédie libre.
IDA Pro
Description de l'image Ida6-logo.png.

Informations
Développé par Hex-Rays
Dernière version 7.6 SP1 ()
Écrit en C++Voir et modifier les données sur Wikidata
Environnement Linux, Mac OS X, Microsoft Windows
Formats lus ELF-COFF, COM-PE
Formats écrits IDA Type Information List (d) et IDA Signatures (d)Voir et modifier les données sur Wikidata
Langues Anglais
Type Désassembleur
Licence Logiciel propriétaire
Site web www.hex-rays.com

Le désassembleur interactif (Interactive Disassembler), plus connu sous le nom d'IDA Pro, est un désassembleur commercial très utilisé en rétro-ingénierie. Il supporte une grande variété de formats exécutables pour différents processeurs et systèmes d'exploitation.

Description[modifier | modifier le code]

Bien qu'IDA Pro soit capable d'accomplir, dans une large mesure, une analyse de code automatique (améliorant notamment la reconnaissance des références croisées à l'intérieur des sections de code, la connaissance des paramètres des appels aux APIs et d'autres informations), le code assembleur obtenu à partir du binaire peut ne pas être parfait. Une intervention humaine est nécessaire pour mener à bien une analyse binaire. Son avantage principal par rapport à d'autres désassembleurs comme objdump ou ndisasm (par exemple) est d'être interactif. En effet, nous avons ici la possibilité de naviguer dans le code ASM obtenu et de l'annoter ou de l'améliorer (un désassembleur quel qu'il soit peut confondre code et données par exemple).

Une utilisation typique d'IDA Pro serait l'analyse de logiciels malicieux. Pour cela, un utilisateur voulant mener à bien une analyse de code binaire avec IDA Pro va commencer par ouvrir le fichier à étudier. IDA Pro se chargera ensuite d'effectuer son analyse automatique, elle débute par la conversion du langage machine (du binaire) en langage assembleur. Au fur et à mesure du désassemblage des instructions, celui-ci annotera, renommera et ajoutera des informations qu'il jugera nécessaire. Cette analyse automatique permet à l'analyste d'avoir une meilleure vision du binaire désassemblé, il aura le rôle d'améliorer la base de données IDA Pro. D'autres utilisations d'IDA Pro existent bien évidemment, c'est après tout un logiciel de rétro-ingénierie avancée. Il est utilisé notamment à des fins légales comme la recherche de vulnérabilités (failles de sécurité) ou encore à analyser des protocoles fermés dans le but de les ré-implémenter et ce à des fins d'inter-opérabilité. En effet, des protocoles fermés tel que le .doc ont par exemple dû être désassemblés afin d'être supportés par LibreOffice. L'analyse des mises à jour des éditeurs est aussi importante à analyser vu leur tendance à faire des "silent fix" ou modification de leur programme sans en avertir l'utilisateur dans le journal de modifications. Il est aussi utilisé à des fins moins nobles comme pirater du logiciel.

On notera par ailleurs qu'IDA Pro se double aussi d'un débogueur en plus du module de désassemblage. En effet, plusieurs moteurs de débogage sont supportés par IDA Pro : GDB, Microsoft WinDBG, Bochs x86 et bien d'autres. Une particularité est de disposer de modules de debugging à distance Cela permet de déboguer un programme Linux à partir de Windows par exemple par simple transfert du fichier adapté sur le système distant et de lancer à partir d'Ida le paramétrage et l'exécution du mode debugging distant.

Créé sous le statut de partagiciel par Ilfak Guilfanov, IDA Pro est devenu par la suite un logiciel commercial produit par DataRescue, une entreprise belge, qui maintient et supporte une version améliorée nommée IDA Pro. À côté de la version commerciale, DataRescue a toujours maintenu une version gratuite du logiciel (généralement une ancienne version).

Ilfak Guilfanov a quitté DataRescue et développe depuis IDA pour sa société, Hex-Rays.

Depuis la version 6.0, une nouvelle interface développée en Qt uniformise les versions Windows, Linux et MacOS du logiciel. A la sortie de cette version, Hex-Rays publie en Freeware la version 5 de son logiciel phare avec beaucoup de fonctionnalités en moins (version Windows uniquement, scripting , choix du debugger, utilisation commerciale interdite).

La version 7 apporte un logiciel entièrement écrit en 64 bits rendant le support des systèmes d'exploitation 32 bits obsolète. Cependant le logiciel conserve toujours une application pour la rétrocompatibilité avec l'héritage applicatif en 32 bits. De plus l'API interne a été entièrement retravaillé et s'est mise à niveau avec en parallèle l'abandon de Python 2.7 pour se mettre à Python 3.0

La version 7.6 améliore le désassemblage intelligent du langage Go ainsi que le support de l'architecture RISC-V de plus en plus populaire auprès de l'industrie, complétant ainsi son statut de boîte à outil multisport.


Depuis la version 5, Ilfak Guilfanov développe un plugin devenu la valeur ajoutée du logiciel : le décompilateur Hex-Rays. Celui-ci transpose et traduit grâce à son algorithme de plus en plus perfectionné le langage Assembleur en pseudo langage C avec la reconnaissance des bibliothèques reconnues par l'analyse du logiciel. Cela permet de gagner du temps et apporte des éclaircissements sur des routines d'assemblage obscurs. Vendu plus cher que le logiciel de base et ce par architecture supporté, ce décompilateur devient la raison du piratage du logiciel. Selon certains développeurs : une fois qu'une version fuite, il y a une chute des ventes de l'ordre de 70%. C'est pourquoi, il est de plus en plus difficile de trouver une version officieuse du logiciel grâce à une vigilance et une réactivité de la société pour lutter contre cette menace. Au moins de Novembre 2021, la société de cybersecurité ESET aurait trouvé un Trojan dans une version pirate. Le groupe pirate Lazarus aurait modifié des fichiers .dll pour : voler des fichiers, faire des captures d'écran, enregistrer les entrées clavier etc...

À ce jour IDA Pro est l'un des outils incontournable de la cybersecurité et du reverse engineering dans le milieu professionnel.

Systèmes/processeurs/compilateurs supportés[modifier | modifier le code]

  • Processeurs
    • Famille Intel 80x86
    • ARM, y compris jeu d'instructions Thumb
    • ARM64 (AArch64)
    • Motorola 68xxx/h8
    • Zilog Z80
    • MOS Technology 6502
    • Intel i860
    • DEC Alpha
    • Analog Devices ADSP218x
    • Angstrem KR1878
    • Atmel AVR series
    • DEC series PDP11
    • Fujitsu F2MC16L/F2MC16LX
    • Fujitsu FR 32-bit Family
    • Hitachi SH3/SH3B/SH4/SH4B
    • Hitachi H8: h8300/h8300a/h8s300/h8500
    • Série Intel 196 : 80196/80196NP
    • Série Intel 51 : 8051/80251b/80251s/80930b/80930s
    • Série Intel i960
    • Série Intel Itanium (ia64)
    • Machine virtuelle Java
    • MIPS: mipsb/mipsl/mipsr/mipsrl/r5900b/r5900l
    • Microchip PIC: PIC12Cxx/PIC16Cxx/PIC18Cxx
    • MSIL
    • Famille Mitsubishi 7700 : m7700/m7750
    • Mitsubishi m32/m32rx
    • Mitsubishi m740
    • Mitsubishi m7900
    • Famille DSP 5600x : dsp561xx/dsp5663xx/dsp566xx/dsp56k
    • Motorola ColdFire
    • Motorola HCS12
    • NEC 78K0/78K0S
    • PA-RISC
    • PowerPC
    • SGS-Thomson ST20/ST20c4/ST7
    • Famille SPARC
    • Samsung SAM8
    • Siemens C166 series
    • TMS320Cxxx series
  • Compilateurs/bibliothèques (pour la reconnaissance automatique des fonctions)[1]
    • Borland C++ 5.x for DOS/Windows
    • Borland C++ 3.1
    • Borland C Builder v4 for DOS/Windows
    • GNU C++ for Cygwin
    • Microsoft C
    • Microsoft QuickC
    • Microsoft Visual C++
    • Watcom C++ (16/32 bit) for DOS/OS2
    • ARM C v1.2
    • GNU C++ for Unix/common

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

Liens externes[modifier | modifier le code]