Un decompilador es una herramienta que en principio, busca recuperar el código fuente de un programa o aplicación a partir del código binario que existe en el archivo ejecutable. En general, los decompiladores hacen la tarea a medias porque en muchas ocasiones no se sabe la estructura que el programador usó. Por ejemplo, si definió un área de memoria para datos y ésta se encuentra al principio del código con un brinco adonde debe ejecutarse el programa, puede confundir a este tipo de herramientas pensando que el área de datos tiene código ejecutable.
Desde luego, con el tiempo, los programadores involucrados en este tipo de herramientas, han hallado caminos para que sus sistemas entiendan cuando se habla de código o no. En cualquier caso yo siempre he sido de la opinión que un decompilador, o un desensamblador, no puede hacer la tarea inversa al 100% aunque sí, bien podría ayudarnos en algún momento a entender el código escrito por un tercero.
En lo que se refiere a virus y malware, muchos de estos programas están escritos en ensamblador, porque así corren más rápido y no cargan además con todo lo que llevan los sistemas que vienen de C o Pascal, por ejemplo. Y por ello, Avast, la empresa que hace antivirus, decidió liberar una herramienta para hacer ingeniería en reversa de los programas maliciosos, llamada RetDec. Esta es de código abierto y es un decompilador de código de máquina, que en realidad me parece que debería llamarse desensamblador, pero en fin. RetDec lleva ya 7 años de desarrollo y soporta una variedad de arquitecturas, desde las que se ven en máquinas de escritorio hasta MIPS, pasando por PIC32, ARM y PowerPC.
Quizás a más de uno lo le haga mucho sentido que esta herramienta también sirva para programas que se corren en procesadores Pic, de MicroChip, pero claramente, en la medida que el Internet de las Cosas empieza a cobrar fuerza e interés por parte de los consumidores, poco a poco habrá más dispositivos y evidentemente, no faltará el programador que decida escribir un programa malicioso en este tipo de plataformas.
El código fuente de RetDec, a todo esto, está en GitHub, pero también hay una versión que funciona como un servicio web. De nuevo, se vuelve a advertir que probablemente la herramienta no pueda regresar el código fuente de una aplicación, maliciosa o no, pero podrá dar mucha más luz sobre el código que se está ejecutando. Esta es una herramienta principalmente para aquellos que lidian con virus y peores bichos cibernéticos.