# 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. À ce jour IDA Pro est l'un des outils incontournables de la cybersécurité et du reverse engineering dans le milieu professionnel.

## 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, une version gratuite du logiciel (généralement une ancienne version) est maintenue.
Ilfak Guilfanov a quitté DataRescue et développe depuis août 2007 IDA pour sa société, Hex-Rays. En 2022, la société Hex-Rays a été achetée par un consortium belge dont fait partie Smartfin.
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'interopé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.
IDA 5 officialise l'arrivée du mode graphe, graphique des fonctions permettant à l'analyste de mieux voir, juger et suivre l'embranchement des fonctions analysées dans un logiciel. De plus il acte l'arrivée, durant le début du cycle de vie de cette version, le décompilateur HexRays, un plugin permettant de mieux lire le code assembleur en un pseudo langage ressemblant très fortement au langage C, dit de plus haut niveau et donc plus compréhensible.
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).
IDA 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 à outils multisport.
IDA 8 acte la fin de la compatibilité des plugins basée sur Python 2 pour ne fonctionner que sur Python 3. Avec cette nouvelle référence, l'entreprise a décidé de passer le logiciel dans un format exclusivement 64 bits, reléguant le mode 32 bits à l'intérieur de Ida64. Cependant, cette transition se fait par version mineure pour in fine n'avoir plus qu'un seul module boîte à outils dans leur solution.
IDA 9 marque un changement : l'ajout du support officiel de l'architecture RISC-V, l'ajout du désassembleur WASM, la refonte de FLIRT, un ajustement des licences (une license vaut pour tous les systèmes d'exploitations), une amélioration du scripting avec Python (ajout des environnements virtuels venv), la reconnaissance des exceptions en C++.
HexRays a aussi publié une version dite collaborative : IDA Teams. Cette version est intrinsèquement IDA Pro agrémentée d'une solution collaborative. En plus de fonctionnalités de partage centralisé avec un système de version, celle-ci permet à différents acteurs de travailler sur un même projet sans risquer de faire des conflits avec leurs collègues ni de perdre leur travail (corruption fichier .idb) On peut comparer IDA Teams à IDA Pro avec des inspirations de Git. (Fonction de merge, commit...). Bien entendu ce nouveau produit est dans un format PaaS : produit en tant que service c'est-à-dire soumis à un abonnement mensuel ou annuel obligatoire en contrepartie de l'ensemble des solutions vendues par l'éditeur (IDA Pro, serveur Lumina, Décompilateur, Service collaboratif)

## HexRays Decompiler

Depuis la version 5, Ilfak Guilfanov développe un plugin devenu la valeur ajoutée du logiciel : le décompilateur Hex-Rays. Celui-ci est officiellement en version beta avec la version 5.1 puis officiellement vendu en tant que produit à part entière par la société.
Le décompilateur 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 (FLIRT). Cela permet de gagner du temps et apporte des éclaircissements sur des routines d'assemblage obscurs.
Fruit d'une dizaine d'années de travail, le décompilateur est arrivé à une certaine maturité. Depuis la version 7.1, HexRays a publié le langage intermédiaire du décompilateur : le microcode.
Grâce à ce travail, l'analyse d'IDA peut se reposer sur ce microcode dans le but d'améliorer l'analyse, l'accélérer et le rendre plus poussé si bien sûr le décompilateur est acheté avec le logiciel...
La société propose une multitude de greffons par processeur supporté : Intel, ARM, MIPS, Power-PC , PowerPC et ARC.
Depuis la version 9 le support de Risv-V est prise en charge en 32 et 64 bits.
Vendu plus cher que le logiciel de base et ce, par architecture supportée, ce décompilateur devient la raison du piratage du logiciel. En effet, de nombreux témoignages d'analystes attestent d'un partage de fichier d'analyse issu d'une version officieuse.
Le prix est l'un des principaux freins à son adoption, étant donné qu'il est plus onéreux que le logiciel de base, vendu séparément par architecture (32 bits et 64 bits) et nécessite en plus des vérifications très strictes de vente. L'ensemble de ces paramètres rend le logiciel très difficile d'accès pour tout indépendant.

## IDA Free

L'éditeur d'IDA Pro a toujours mis à disposition de la communauté une version ancienne et bridée de son célèbre logiciel de référence. Celle ci ne dispose que du module de désassemblage des fichiers dit x86/x64 des environnements Windows, Linux, Mac.
Depuis la sortie de Ghidra par la NSA en 2019, nous avons pu voir un changement de ce modèle. En effet, la version gratuite suit désormais la même version que la version commerciale avec toujours des limitations. Cependant on a assisté, depuis la version gratuite 7.6, la présence d'un décompilateur en ligne facilitant grandement l'analyse. Peut-on y voir l'intérêt de l'éditeur à conserver sa communauté au risque de la voir migrer vers son concurrent Ghidra qui dispose de ces outils gratuitement même si moins performant...
En somme IDA Freeware apporte :
* Analyse des logiciels en 32-bits et en 64-bits
* Décompilateur en ligne (x86 et x64 Cloud-based decompiler)
* Un débogueur local x86/x64
* Support des processeurs à architecture Intel x86/x64
* Enregistrement de son analyse
* Licence d'utilisation sans limite de durée
La version gratuite d'IDA a les limitations suivantes :
* Aucune utilisation commerciale n'est possible avec cette version
* Manque toutes les fonctionnalités avancées de la version commerciale.
* Le décompilateur en ligne manque de fonctionnalités avancées.
* Manque les modules d'analyse de nombreux processeurs, de format de fichiers.
* Aucun support technique n'est fourni.
* Depuis la version 9, il est nécessaire d'avoir un compte et de requérir une demande de licence d'un an contrairement aux versions précédentes dites perpétuelles.

## Systèmes et processeurs supportés

* Système d'Exploitation (installation sur une plateforme x86 jusqu'à la version 6.95)
** x86 Windows GUI / console
** x86 Linux GUI / console
** x86 Linux console
** x86 Mac OS X GUI / console
** x86 Mac OS X console
** Architecture ARM Windows CE
* À 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
** RISC-V

## Piratage

Selon certains développeurs : une fois qu'une version fuite, il y a une chute des ventes de l'ordre de 70%. La société surveille activement les réseaux et ses revendeurs afin de dénicher et endiguer toute tentative de vol de son produit. Elle est pro-active et joue sa réputation sur cela : elle n'hésite pas à faire déréferencer très rapidement les liens des sites en question.
Au mois 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.
La société HexRays est connue pour délivrer des versions unique de son logiciel à chaque client grâce à un procédé dit de watermark ou traçabilité logicielle, sur ses fichiers. C'est pourquoi elle peut savoir de qui vient une version mise en ligne et ce faisant, bannir la société de ses clients commerciaux. Il fut un temps où elle tenait une page dédiée appelée hall of shame, littéralement mur de la honte, avec l'inscription de toutes les personnes et leur entreprise liée ayant fait fuiter une version d'IDA sur internet. Cette page a depuis été retirée mais gageons qu'elle conserve l'historique de toutes les fuites afin de prévenir toute nouvelle tentative de piratage. Ainsi, 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.
Une version piratée connue à ce jour est la version 7.7 sortie le 18 Janvier 2022. La version 8 était restée, jusqu'en Décembre 2023, vierge de toute fuite et de piratage. Cette version était très recherchée : l'engouement sur les réseaux underground à la suite de cet exploit a été fulgurant.
Un groupe chinois a réussi à pirater la version 8.3 et comptait la sortir pour le 1er Janvier 2024. Elle a été mise sur les réseaux en Décembre 2023 en avance par un membre. Celle-ci a été obtenue par un installateur officiel d'une société connue et par retro-ingénierie et comparaison avec un installeur d'une version 8.1, les pirates ont pu cracker l'installation, nettoyer le watermarking des fichiers et ainsi anonymiser la source de la fuite.