IDA Pro (logiciel)

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.

Pour les articles homonymes, voir IDA.

IDA Pro

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

Description

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.


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.


Depuis la version 6.0, une nouvelle interface développée en Qt uniformise les versions Windows, Linux et MacOS du logiciel. À 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

  • Système d'Exploitation (installation sur une plateforme x86 jusqu'à la version 6.95)
  • À partir de la version 7 : installation exclusive sur une plateforme x64 avec support des fichiers x86 :
    • Windows x64 GUI / console
    • Linux x64 GUI / console
    • MacOS x64 / M1 ARM (à partir de la version 7.6)
  • Fichiers exécutables
    • PE (Windows)
    • ELF (Linux, most *BSD)
    • Mach-O (Mac OS X)
    • Netware .exe
    • OS/2 .exe
    • Geos .exe
    • Dos/Watcom LE exécutable (sans le DOS étendu)
    • Fichiers binaires bruts, comme des images ROM
  • Processeurs
    • Famille Intel 80x86 et x64
    • 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
    • RISC-V (RV32GC + RV64GC)
    • RL78
  • 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
    • LLVM Clang

Notes et références

Voir aussi

Bibliographie

  • (en) Eldad Eilam, Reversing : Secrets of Reverse Engineering, Indianapolis, Wiley Publishing, , 624 p., poche (ISBN 978-0-7645-7481-8, LCCN 2005921595, lire en ligne), p. 595
  • (en) Chris Eagle, The IDA Pro Book : The Unofficial Guide to the World's Most Popular Disassembler, San Francisco, No Starch Press, , 2e éd., 672 p. (ISBN 978-1-59327-289-0, LCCN 2011293604, lire en ligne)

Liens externes


  • Portail de la programmation informatique
  • Portail du logiciel
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.