viernes, 24 de febrero de 2012
Decompiladores
Un decompilador es un programa de ordenador que realiza la operación inversa a un compilador. Esto es, traducir código o información de bajo nivel de abstracción (sólo diseñado para ser leído por un ordenador, ej código máquina) a un lenguaje o medio de mayor nivel de abstracción (usualmente diseñado para ser leído por un humano, ej cualquier lenguaje de programación de alto nivel).
El término "decompilar" es más comúnmente aplicado a programas cuya función es la de traducir un ejecutable (la salida de un compilador) a código fuente en un lenguaje de alto nivel, que, cuando compile, volverá a producir un ejecutable cuyo comportamiento es el mismo que el del ejecutable original. En comparación, un desensamblador traduce un ejecutable a lenguaje ensamblador (y este código puede volver a ser ensamblado en un programa ejecutable). Decompilar es el acto de utilizar un decompilador, aunque si es usado como nombre, puede referirse a la salida de un decompilador.
Puede ser usado para recuperar código fuente, y es muy útil en casos de seguridad del ordenador, interoperatividad y corrección de errores.1 El éxito de la decompilación depende de la cantidad de información presente en el código que está siendo decompilado y en la sofisticación del análisis realizado sobre él.
Los formatos de bytecode utilizados por muchas máquinas virtuales (como la Java Virtual Machine o el lenguaje .NET (.NET Framework Common Language Runtime)) en ocasiones incluyen metadatos en el alto nivel que hacen que la decompilación se más flexible. Los lenguajes máquina normalmente tienen mucha menos metadata, y son por lo tanto mucho más difíciles de compilar. Algunos compiladores y herramientas de post-compilación producen código ofuscado (esto quiere decir que intentan producir una salida que es muy difícil de decompilar). Esto hace que sea más difícil revertir el código del ejecutable.
Los decompiladores pueden ser pensados como un conjunto de fases, en las que cada una de ellas contribuye de una forma específica en el proceso de decompilación.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario