Descompiladores

  • Posted on: 12 December 2018
  • By: ReYDeS

La descompilación es quizá el santo grial de la auditoria binaria. Con una verdadera descompilación, la noción de un producto de fuente cerrada se desvanece, y la auditoría binaria revierte hacia el código fuente. Sin embargo, la verdadera descompilación es una tarea excepcionalmente difícil. Algunos lenguajes se prestan muy bien para la descompilación, mientras otros no. Los lenguajes ofreciendo mejor esta oportunidad, son por lo general lenguajes híbridos compilados / interpretados, como Java o Python. Ambos ejemplos de lenguajes los cuales son compilados hacia una forma intermedia independiente de la máquina, generalmente llamado “código byte”. Este código byte es luego ejecutado por una interprete independiente de la máquina. En el caso de Java a este interprete se le denomina Java Virtual Machine (JVM).

Dos características del código byte de Java lo hacen particularmente fácil para descompilar. Primero, los archivos de código byte Java, llamados archivos clases, contiene una significativa cantidad de información descriptiva. Segundo, el modelo de programación para JVM es bastante simple, y su conjunto de instrucciones es bastante pequeño. Ambas propiedades son verdaderas para archivos compilados en Python (.pyx), así también el interprete de Python.

Diversos descompiladores Java de fuente abierta hacen un excelente trabajo recuperando el código fuente Java, incluyendo al “proyecto Decompilador de Java” (JDP). Para los archivos “pyc” de Python, se tienen por ejemplo a los proyectos “Decompyle++” o “uncompyled6”, los cuales ofrecen la posibilidad de recuperar el código fuente.

Fuentes:

https://www.javaworld.com/article/3272244/core-java/what-is-the-jvm-intr...
http://jd.benow.ca/
https://github.com/zrax/pycdc
https://pypi.org/project/uncompyle6/
https://en.wikipedia.org/wiki/Decompiler

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1