# Interactive Disassembler

Interactive Disassembler, vaak kortweg IDA of IDA Pro genoemd, is een disassembler van software, dus een programma dat computerprogramma's vertaalt van de binaire machinetaal naar voor de programmeur leesbaardere assembleercode. Het programma is oorspronkelijk als shareware ontwikkeld door Ilfak Guilfanov, een Russische softwareontwikkelaar en beveiligingsexpert. Later werd het programma verkocht als commercieel product door DataRescue, een Belgisch bedrijf, dat er verbeteringen in aanbracht en het onder de naam IDA Pro verkocht. Nog altijd is er ook een gratis versie van de software beschikbaar, maar deze versie is beperkt qua functionaliteit.
In 2007 startte Guilfanov het bedrijf Hex-Rays, waarmee hij de ontwikkeling van een extensie voor IDA, de Hex-Rays Decompiler, verzorgde. Sinds januari 2008 verzorgt Hex-Rays de ontwikkeling en support van IDA Pro zelf ook.
IDA Pro ondersteunt diverse formaten van uitvoerbare bestanden voor verschillende processoren en besturingssystemen, zoals Microsoft Windows, Mac OS X en Linux. Verder zijn er verschillende commerciële plug-ins voor dit programma, zoals een plug-in die assembleercode kan omzetten in C-code, en een die programma's die zijn gecompileerd met een C/C++-compiler kan disassembleren. De laatste volledige versie van IDA Pro is een commercieel softwarepakket. Vroegere versies, die minder functionaliteit bezaten dan de huidige volledige versie, waren wel gratis.
In veel gevallen kan IDA variabelen en functies van een gecompileerd programma herkennen en aan de gebruiker tonen. Zelfs bibliotheken die door programma's worden gebruikt kunnen door IDA worden herkend. Dit gebeurt met behulp van de Fast Library Identification and Recognition Technology (FLIRT), dit is Engels voor "Technologie voor de snelle herkenning en identificatie van bibliotheken".
Een kenmerk van IDA is, dat het veel interactiviteit mogelijk maakt. De gebruiker van het programma kan bijvoorbeeld annotaties aanbrengen en aanpassingen maken aan de vertaalslagen, waarmee onvolkomenheden van automatische vertalingen van binaire code naar assembleercode handmatig verbeterd kunnen worden. De gebruiker kan tussentijdse resultaten ook opslaan in de IDA Pro-database, een gegevensbestand voor informatie van dit programma. Hierin kunnen aantekeningen worden opgeslagen, alsmede namen die de gebruiker zelf geeft aan ontdekte functies van code die geanalyseerd wordt.
De grafische gebruikersomgeving van IDA Pro toont informatie in verschillende vensters. Zo worden functies van een programma dat geanalyseerd wordt in een ander venster getoond dan namen, datastructuren en strings (reeksen van alfanumerieke tekens). IDA Pro kan ook grafische representaties van analyses tonen, zoals stroomdiagrammen.
In feite zijn er verschillende commerciële versies van IDA Pro beschikbaar. Een uitgebreidere versie van het programma heeft meer mogelijkheden, zoals de ondersteuning van meer soorten processoren. Binaire formaten van uitvoerbare bestanden die worden ondersteund, zijn onder meer Portable Executable (PE), Common Object File Format (COFF), Executable and Linking Format (ELF), en a.out.

## Scripts

De werking van IDA kan worden uitgebreid met zogenaamde "IDC-scripts". Deze scripts bevatten instructies die door de gebruiker van het programma kunnen worden geschreven. Enkele voorbeeldscripts worden met IDA meegeleverd, waarmee het eenvoudiger wordt IDC-scripts te schrijven. Er zijn websites die gespecialiseerd zijn in het schrijven van IDC-scripts en die hierbij hulp kunnen bieden.
Verder zijn er ook plug-ins ontwikkeld voor IDA, waarmee ook andere gebruikelijke scripttalen gebruikt kunnen worden met deze software. IdaRUB ondersteunt Ruby en IDAPython biedt de mogelijkheid python-scripts te gebruiken. Sinds versie 5.4 van Ida Pro wordt IDAPython standaard geïnstalleerd bij de installatie van IDA Pro. Hierdoor is het gebruik van IDC-scripts en python-scripts allebei standaard geworden bij IDA Pro. De scripts kunnen vanuit de grafische gebruikersomgeving van IDA eenvoudig worden aangeroepen met enkele muisklikken.

## Toepassingen

Met IDA kunnen programma's waarvan de broncode niet is vrijgegeven eenvoudiger geanalyseerd worden. Dit kan zowel voor legitieme als illegale doeleinden gedaan worden. Softwareontwikkelaars kunnen zien, hoe effectief hun software is en in hoeverre hun programma's waar zij de broncode niet van vrijgeven door anderen te doorgronden zijn. Door beveiligingsmedewerkers kan shellcode geanalyseerd worden, waarmee men zich kan verdedigen tegen aanvallen op computersystemen. Door computerkrakers kan IDA gebruikt worden om kwetsbaarheden in programma's op te sporen, of beveiligingen voor het kopiëren van programma's te omzeilen.