Вы находитесь на странице: 1из 4

Universidad Autónoma del Estado

de Hidalgo
Instituto de Ciencias Básicas e Ingeniería

Lic. Ciencias Computacionales

Autómatas y compiladores

“Descompiladores”

Profesor: Macedonio

Alumna: Angélica Hernández Barranco

05 de marzo de 2018
“Descompiladores”

Definición

Es un programa que realiza la operación inversa de un compilador: obtener el código fuente de un


programa compilado. Esto quiere decir, que pasa de un código máquina (programa de salida) al
equivalente escrito en el lenguaje que lo generó (programa fuente). Cada descompilador trabaja
con un lenguaje de alto nivel concreto.

Es necesario que exista un programa en lenguaje Máquina para que pueda ser ejecutado. Y es
necesario que exista un programa en lenguaje Fuente para que pueda ser modificado, mejorado o
depurado por el programador. Si el programa en lenguaje Máquina se pierde o es destruido, puede
generarse un nuevo programa procesando el correspondiente programa en lenguaje Fuente por
medio del Compilador. Pero si el Fuente ha sido destruido o perdido, el proceso será imposible. En
este caso será necesario el uso de un Descompilador, el cuál procesará el programa en lenguaje
Máquina para reproducir el programa en lenguaje Fuente. Realizando un proceso inverso al
Compilador. Dicho de otro modo, el Descompilador traduce y convierte programas Máquina
(Objetos) comprensibles por el AS400 en programas Fuente (Source) comprensibles por los
humanos (Programadores).

Utilización

Los descompiladores se utilizan especialmente cuando el código máquina ha sido generado con
opciones de depuración, y contiene información adicional de ayuda al descubrimiento de errores
(puntos de ruptura, seguimiento de trazas, opciones de visualización de variables, etc.).

También se emplean cuando el compilador no genera código máquina puro, sino pseudocódigo para
ser ejecutado a través de un pseudointérprete. En estos casos suele existir una relación biyectiva
entre las instrucciones del pseudocódigo y las construcciones sintácticas del lenguaje fuente, lo que
permite reconstruir un programa de alto nivel a partir del de un bloque de pseudocódigo.

¿Cuándo es necesario?
¿Por qué descompilar?

 Para arreglar bugs (errores)


 Para encontrar vulnerabilidades
 Para buscar malware
 Para aprender
 Por interoperabilidad
 Para optimizar el código
 Para mejorar el programa
 Por si has perdido el código

¿Cómo funciona?

1.- Averigua el compilador

2.- Encuentra el main()

3.- Define las funciones

4.- Agrupa el código en asignaciones,


condiciones, saltos y llamadas a funciones.

Realizar este proceso, generalmente nos permite entender la lógica a nivel superior, como lo son:
los bucles o declaraciones if-then.

Algunos descompiladores son:

 Ensamblador
 Delphi
 Visual Basic
 Java
 .NET
 Python
 Flash
 C/C++
Los compiladores de Java, .NET y Flash no generan código binario, si no bytecode, esto es, código
para ser ejecutable sobre sus máquinas virtuales. Por eso estos lenguajes son multiplataforma. En
cambio, los compiladores de C generan código optimizado en binario para un procesador
determinado (x86, AMD64, SPARC...) De esta manera, es mucho más difícil decompilar programas
en C. La única documentación hoy día que he podido encontrar es una tesis de Cristina Cifuentes
(Universidad de Queensland) dedicada exclusivamente a la decompilación en C en la arquitectura
i386. Los pocos decompiladores existentes para C no son automáticos, es decir, necesitan la
interacción del usuario y sólo funcionan con programas pequeños.

Conclusión

La descompilación suele ser una labor casi imposible, porque al código máquina generado casi
siempre se le aplica una optimización en una fase posterior, de manera que un mismo código
máquina ha podido ser generado a partir de varios códigos fuente. Por esto, sólo existen
descompiladores de aquellos lenguajes en los que existe una relación biyectiva entre el código
destino y el código fuente, como sucede con los desensambladores, en los que a cada instrucción
máquina le corresponde una y sólo una instrucción ensamblador.

Referencias

Sergio Gálvez Rojas, Miguel Ángel Mora Mata (2005). Compiladores. Universidad de Malaga. E.T.S
de Ingeniería Informática. Dpto. de Lenguajes y Ciencias de la Computación. España. Recuperado en
web de: http://www.lcc.uma.es/~galvez/ftp/libros/Compiladores.pdf

Manuel Martín Salvador (s.f.). Descompiladores. Universidad de Granada. ETSIIT. España.


Recuperado en web de: http://draxus.org/upload/decompiladores.pdf

ATT. American Top Tools (s.f.). Qué es un descompilador. ATT. España. Recuperado en web de:
http://www.gofaster.us/attnews/archivos/decom0805.pdf

Вам также может понравиться