Interactive Disassembler
# Interactive Disassembler

En informática, Interactive Disassembler (Desensamblador Interactivo), más conocido por su acrónimo IDA, es un desensamblador empleado para ingeniería inversa. Soporta una variedad de formatos ejecutables para diferentes procesadores y sistemas operativos. También puede ser usado como un depurador para ejecutables Windows PE, Mac OS X, Mach-O y Linux ELF. Un plugin de decompilador para programas compilados con C/C++ está disponible a un costo extra. La última versión completa del IDA Pro es un software comercial; una versión anterior y menos capaz está disponible para descarga gratuita (la versión 7.0 de septiembre de 2017).

El IDA realiza mucho análisis automático del código, usando referencias cruzadas entre las secciones del código, conocimiento de parámetros de las llamadas del API, y otra información. Sin embargo, la naturaleza del desensamblado imposibilita una exactitud total, y una gran parte de intervención humana es necesariamente requerida; El IDA tiene funcionalidad interactiva para ayudar en la mejora del desensamblado. Un usuario típico del IDA comenzará con un listado de desensamblado automáticamente generado y después convertirá secciones de código a datos y viceversa, renombrará, anotará, y de otra manera agregará información al listado, hasta que se vuelve claro lo que lo hace.

Creado como shareware por Ilfak Guilfanov, IDA fue posteriormente vendido a DataRescue, una compañía belga, que lo mejoró y lo vendió bajo el nombre de IDA Pro. En 2007, Guilfanov fundó Hex-Rays para seguir el desarrollo de la extensión Hex-Rays Decompiler del IDA. En enero de 2008, Hex-Rays asumió el desarrollo y el soporte del IDA Pro de DataRescue.

Guilfanov es el autor principal del IDA (Interactive Disassembler Pro).

## Scripting

Los "scripts IDA" hacen posible extender la operación del desensamblador. Son proporcionados Algunos útiles scripts, que pueden servir como la base para scripts escritos por el usuario. Los más frecuentes scripts son usados para la modificación adicional del código generado. Por ejemplo, pueden ser cargadas tablas de símbolos externas de tal modo que se puedan usar los nombres de función del código fuente original. Hay sitios web dedicados a scripts IDA y ofrecen asistencia para problemas que surgen con frecuencia.

Los usuarios han creado plugins que permita que otros lenguajes de scripting comunes puedan ser usados o agregados al del IDC. IdaRUB soporta Ruby e IDAPython agrega soporte para Python. Desde la versión 5.4, IDAPython (dependiente del Python 2.5) viene preinstalado con el IDA Pro.

## Sistemas, procesadores y compiladores soportados

* Sistemas operativos
   * x86 GUI Windows
   * x86 Consola Windows
   * x86 GUI Linux
   * x86 Consola Linux
   * x86 GUI Mac OS X
   * x86 Consola Mac OS X
   * ARM Windows CE
* Formatos de archivos ejecutables
   * PE (Windows)
   * ELF (Linux, la mayoría de *BSD)
   * Mach-O (Mac OS X)
   * Formato .exe de Netware
   * Formato .exe de OS/2
   * Formato .exe de GEOS
   * DOS/Watcom ejecutable LE (sin DOS extender empotrado)
   * raw binary, como con una imagen ROM
* Procesadores
   * Familia Intel 80x86
   * ARM, incluyendo Thumb code
   * 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
   * Familia de 32 bits de Fujitsu FR
   * Hitachi SH3/SH3B/SH4/SH4B
   * Hitachi H8: h8300/h8300a/h8s300/h8500
   * Intel 196 series: 80196/80196NP
   * Intel 51 series: 8051/80251b/80251s/80930b/80930s
   * Intel i960 series
   * Intel Itanium (ia64) series
   * Java virtual machine
   * MIPS: mipsb/mipsl/mipsr/mipsrl/r5900b/r5900l
   * Microchip PIC: PIC12Cxx/PIC16Cxx/PIC18Cxx
   * MSIL
   * Familia Mitsubishi 7700: m7700/m7750
   * Mitsubishi m32/m32rx
   * Mitsubishi m740
   * Mitsubishi m7900
   * Familia Motorola DSP 5600x: dsp561xx/dsp5663xx/dsp566xx/dsp56k
   * Motorola ColdFire
   * Motorola HCS12
   * NEC 78K0/78K0S
   * PA-RISC
   * PowerPC
   * SGS-Thomson ST20/ST20c4/ST7
   * Familia SPARC
   * Samsung SAM8
   * Siemens C166 series
   * TMS320Cxxx series
* Compilador/Bibliotecas (para reconocimiento automático de funciones de biblioteca)
   * Borland C++ 5.x para DOS/Windows
   * Borland C++ 3.1
   * Borland C Builder v4 para DOS/Windows
   * GNU C++ para Cygwin
   * Microsoft C
   * Microsoft QuickC
   * Microsoft Visual C++
   * Watcom C++ (16/32 bit) para DOS/OS2
   * ARM C v1.2
   * GNU C++ para Unix/common
