Investigación Decompiladores.docx

download Investigación Decompiladores.docx

of 17

Transcript of Investigación Decompiladores.docx

DECOMPILADORES

INDICE:

1.-Introduccin 21.-Dis # 42.-DotPeek 63.-Telerik JustDecompile 84.-Salamander 105.-Spices Decompiler .NET 126.- .NET Reflector 147.- Ilspy 16

INTRODUCCIN

Qu es un decompilador?Un decompilador es un programa que toma un archivo ejecutable, una librera o cualquier archivo que tenga cdigo de bajo nivel diseado para ser ledo por un ordenador y lo traduce a un lenguaje de programacin de alto nivel, normalmente diseado para ser ledo por una persona.El xito de la decompilacin depende de la cantidad de informacin presente en el cdigo que est siendo decompilado y en la sofisticacin del anlisis realizado sobre l. Los formatos de cdigo utilizados por muchas mquinas virtuales (como una mquina virtual de java o el lenguaje .NET) en ocasiones incluyen metadatos de alto nivel que hacen que la decompilacin sea ms flexible. Los lenguajes mquina normalmente tienen mucho menos metadatos, y son por lo tanto mucho ms difciles de compilar.

Cmo funciona un decompilador? Los decompiladores pueden ser pensados como un conjunto de fases, en las que cada una de ellas contribuye de una forma especfica en el proceso de decompilacin.La primera fase de decompilacin sera el cargado, que recibe el cdigo mquina o el archivo binario de un lenguaje intermedio. En esta fase el programa decompilador debera ser capaz de descubrir datos bsicos sobre el programa, como por ejemplo la arquitectura (Pentium, PowerPC, etc.), y el punto de entrada.En muchos casos, en esta fase el decompilador debera ser capaz de encontrar la funcin main de un programa en C, que es el comienzo del cdigo escrito por el usuario. Esto excluye el cdigo de inicializacin de la ejecucin, que no debera ser decompilado si es posible.La siguiente fase lgica es el desensamblado del cdigo mquina, en esta fase el cdigo pasa a un lenguaje maquina intermedio (IR).En la siguiente fase se traducen las secuencias de cdigo idiomticas a lenguaje intermedio (IR). Estas secuencias idiomticas son un conjunto de secuencias de cdigo cuya semntica no aparenta instrucciones semnticamente individuales. En la siguiente fase se procede a hacer un anlisis del programa en cdigo intermedio (IR) y un anlisis de los tipos de datos utilizados.La penltima fase es el estructurado. En esta se estructura el cdigo intermedio (IR) en construcciones de alto nivel como ciclos while y estructuras condicionales if/then/else.

La fase final es la generacin de cdigo de alto nivel. Tal como un compilador puede tener varios lenguajes destinos para generar cdigo mquina de diferentes arquitecturas, un decompilador puede tener varios destinos de generacin de cdigo en diferentes lenguajes de alto nivel.

Aspectos legalesPor lo general los programas de software estn protegidos por leyes de copyright, sin embargo estas leyes varan de pas a pas. La ley de copyright generalmente provee al creador del programa de una coleccin exclusiva de derechos sobre el mismo. Estos derechos incluyen la posibilidad de realizar copias, incluyendo copias realizadas sobre la memoria RAM del ordenador. Como el proceso de decompilacin implica la realizacin de mltiples copias, ha sido prohibido generalmente el hacer copias sin autorizacin del propietario de los derechos. Sin embargo, la decompilacin es en ocasiones necesaria a la hora de buscar interoperatividad; las leyes de copyright en Europa y Estados Unidos permiten en este caso la decompilacin hasta un cierto lmite.La decompilacion para un programa que fue escrito hace mucho tiempo y ya no es compatible con los sistemas actuales por lo general es permitida solo si es para hacerlo funcionar en sistemas actuales.

UsosSe puede utilizar un decompilador para comprobar la seguridad del ofuscamiento, para aprender a programar o ampliar nuestros conocimientos de programacin, tambin para buscar vulnerabilidades en el cdigo, para la interoperabilidad, para recuperar cdigo fuente y para corregir posibles errores que el autor del cdigo original no puede corregir.

DIS#Costo: -Versin demo gratuita.-Versin completa cuesta $399 Dlares.Soporta C#, Visual Basic.NET, Delphi.NET y Chrome.Requiere framework 2.0.Navegacin a miembros de clases.Genera archivos de proyecto para diferentes lenguajes que pueden ser cargados en Visual Studio.Puede extraer y/o crear archivos de recursos de formas .NETPuede crear archivos AssemblyInfo con los atributos necesarios del ensamblado.Puede extraer la documentacin XML del ensamblado.Puede extraer el icono de archivos ejecutables (.exe).Tiene una herramienta desofuscadora. Funciona para archivos ofuscados con Confuser, archivos ofuscados con Dotfuscator se mostraron con algunos errores. Peso del instalador 1.08 MBSitio: http://www.netdecompiler.com/Ejemplo de cdigo decompilado y des ofuscado con Dis #:

Cdigo original:

Cdigo decompilado y des ofuscado:

dotPeekCosto: Gratis.Decompila ensamblados en Framework 1.0 al 4.5 a cdigo C#.Puede exportar el cdigo decompilado a proyectos de Visual Studio.Soporta libreras (.dll), ejecutables (.exe) y archivos de metadatos de Windows 8 (.winmd).Se puede navegar a las declaraciones de variables, implementaciones, etc.Indexa todos los ensamblados a una lista de ensamblados, as como los ensamblados a los que se hace referencia.Tiene mltiples atajos con el teclado.Peso: 27.8 MB.Sitio: http://www.jetbrains.com/decompiler/No tiene herramienta ofuscadora. Con archivos ofuscados con la herramienta Confuser mostro caracteres extraos. Con archivos ofuscados con Dotfuscator no muestra caracteres extraos pero algunas funciones no las muestra. Con Dlls no ofuscadas no muestra problemas.

Ejemplo de cdigo decompilado con dotPeek, se muestra ofuscado:

Codigo original:

Cdigo decompilado:

Telerik JustDecompileCosto: Gratis, pero cobran el soporte.Pide registrarse en la pgina de Telerik.Es de cdigo abierto.Permite elegir mostrar el cdigo en VB, C# e IL (cdigo intermedio).Decompila ensamblados en Framework .NET 2, .NET 3.5, .NET 4, .NET 4.5, meta datos WinRT y Silverlight.Da la posibilidad de escoger un framework especfico para decompilar.Puede crear proyectos de Visual Studio con el cdigo desensamblado.Tiene opcin para expandir u ocultar todos los miembros de la clase que se est explorando.Tiene opcin para mostrar u ocultar la documentacin XML en caso de que el archivo tenga alguna.Tiene la opcin de aadir plugins de Telerik, entre esos plugins se encuentran:-De4Dot Deobfuscator: un desofuscador.-JustDecompile Power Tools: aade un men para saltar a los ensamblados, referencias, clases, etc.-Assembly Editor: permite editar los ensamblados que fueron decompilados, aadirles clases y actualizar referencias.Peso: 4.84 MB Del instalador, despus pide bajar 57 MB de archivos de los servidores de Telerik. Sitio: http://www.telerik.com/products/decompiler.aspxAl igual que con dotPeek, no incluye una herramienta desofuscadora, pero se puede bajar el plugin para desofuscar; con archivos sin ofuscar no tuvo ningn problema. El plugin para desofuscar funciono con archivos ofuscados con Dotfuscator y Confuser.

Ejemplo de cdigo decompilado con JustDecompile y des ofuscado con el plugin Deobfuscator:

Cdigo original:

Cdigo des ofuscado y decompilado:

SalamanderCosto: $1099 Dolares.Puede usarse online (versin demo).Requiere mquina virtual de java para funcionar.Trae opcin de remover encriptaciones hechas por ofuscadores.Soporta desde el framework 2.0Reconoce diferentes compiladores y puede generar el cdigo para ensamblados en C#, C++, Visual Basic .NETPuede guardar el cdigo generado a proyectos de Visual Studio .NET.Sitio: http://www.remotesoft.com/salamander/La versin online desofusco archivos ofuscados con Confuser y con Dotfuscator, pero se mostraron con muchos errores.Ejemplo de cdigo decompilado y des ofuscado con Salamander (versin online):Cdigo original:

Cdigo decompilado y des ofuscado:

Spices Decompiler .NETDescompila ensamblados .NET desde formatos binarios MSIL (MS Intermediate Languaje) a cdigo.Incluye integracin con Visual Studio (2005, 2008, 2010, 2012)Soporta MSIL, C#, VB.NET, Delphi.Net, J# y C++.Incluye herramienta ofuscadora ( Spices Obfuscator Console).Incluye herramienta que desofusca solo los nombres de los ensamblados.Decompila todo el archivo y muestra los resultados en un nico visor en lugar de mostrar cada clase por separado, sin embargo tiene a la izquierda la lista con las clases y al presionar el nombre de una clase manda a los resultados decompilados de esa clase dentro del visor con el cdigo generado.Peso: 7.22 MBCosto: -Versin demo gratuita.-Licencia nica: $299.90 Dolares.-Licencia mltiple (incluye 5 equipos): $939.90 DolaresSitio: http://www.9rays.net/Category/54-spicesnet-decompiler.aspxAl descompilar no quita el ofuscamiento.Ejemplo de cdigo decompilado con Spices Decompiler, se muestra sin ofuscar:

Cdigo original:

Cdigo decompilado, se muestra sin des ofuscar:

.NET ReflectorPeso: 9.22 MB.Requiere proporcionar cuenta de correo para poder descargarse.Permite depurar aplicaciones, libreras y componentes de terceros, incluso ensamblados de Share Point.Permite poner puntos de interrupcin en el archivo decompilado al momento de depurarlo.Tiene componente para integrarse con Visual Studio.El componente integrado a Visual Studio tambin permite depurar aplicaciones, libreras y componentes de terceros.Muestra dependencias y libreras que usa el archivo a decompilar.Permite elegir mostrar el cdigo decompilado a C#, VB.net e IL.Soporta desde el framework 1.0.Marca las variables seleccionadas dentro del cdigo para observar donde se utilizan y como se utilizan.No tiene herramienta des ofuscadora.Precio:-Versin demo gratuita, expira en 14 das.-Versin Bsica: $ 99 Dlares.-Versin VSPro: $199 Dlares, incluye el componente para integrarse con Visual Studio, depurar el cdigo decompilado con Visual Studio y los puntos de interrupcin dentro del archivo a decompilar.Sitio: http://www.red-gate.com/products/dotnet-development/reflector/ Ejemplo de cdigo decompilado con .NET Reflector, se muestra sin des ofuscar:

Cdigo original:

Cdigo decompilado, se muestra sin des ofuscar:

ILSpyPrecio: gratuito.Requiere framework 4.0.Decompila los resultados a C#, VB .NET o IL.Muestra la documentacin XML en caso de tener.Es de cdigo abierto.No requiere instalacin.Puede guardar el cdigo decompilado a proyectos que pueden abrirse con Visual Studio.Opcin de editar el ensamblado descompilado.Se le pueden incorporar mltiples plugins, todos gratis debido a que son de cdigo abierto.Tiene comunidad en lnea para resolver dudas acerca del decompilador o como modificarlo.Peso: 6.25 MB.Sitio: http://ilspy.net/Ejemplo de cdigo decompilado con ILSpy:Codigo original:

Cdigo decompilado:

Decompiladores17