¿Cómo descopilo esto?

Iniciado por kaiserdj, 26 Marzo 2016, 10:58 AM

0 Miembros y 1 Visitante están viendo este tema.

kaiserdj

Buenas, llevo bastante tiempo intentando saber que diferencia hay entre 3 versiones distintas(de tres años distintos) de un exe, para poder crear una versión para este año.

Carpeta MEGA: https://mega.nz/#F!HYJwCAxB!DYyRulsk65iwlsJHmQOs1w

Me podríais ayudar? Muchas gracias

arget

#1
Podrías ir a la página del programa y ver el típico archivo changes.txt que explica los cambios que efectúa en cada versión. Claro que no siempre lo escriben... en ese caso lo lógico sería desensamblar y mirar el código en ensamblador, si no sabes ensamblador utiliza un descompilador, que lo que hace es primero desensamblar y este código traducirlo a las instrucciones más probables en el lenguaje para el que está diseñado el descompilador (si es un descompilador para C lo hará en C). El problema es que cada lenguaje se traduce a ensamblador de manera distinta, un código ensamblador proveniente de C no tiene el mismo método para por ejemplo entrar a una función o salir de ella que el que utiliza uno de (yo que sé) Lisp.
De modo que debes identificar en qué lenguaje puede estar hecho y descompilarlo, si utilizas un descompilador incorrecto el código será imposible de leer. Sin embargo te advierto que aun empleando el correcto esto no es perfecto, obtendrás un código muy enrevesado, aunque no será tan doloroso a la vista como con uno incorrecto.
Se me ocurre también que la mayor parte de los programas incluyen un texto como manual, si no lo incluye también puedes probar a ejecutarlo desde la terminal con el argumento "-h" o "--help", si no funciona puedes intentar hacerte una idea de su funcionamiento mediante la utilidad objdump en linux ejecutando:
objdump -s -j .data archivo.exe
Con esto volcarás todos los valores en la sección .data del ejecutable, ahí es donde más probablemente se almacenen las cadenas de caracteres.

EDITO: Qué casualidad, leyendo el blog de esta página he encontrado esto, que es seguramente lo que buscas ;)
http://blog.elhacker.net/2016/03/la-herramienta-bindiff-es-ahora-gratuita.html
La gestión manual de bloques de memoria en C es como hacer malabarismos con pastillas de jabón en la ducha de la prisión: todo diversión hasta que cometes un fallo.

kaiserdj

#2
Cita de: arget en 26 Marzo 2016, 14:02 PM
Podrías ir a la página del programa y ver el típico archivo changes.txt que explica los cambios que efectúa en cada versión. Claro que no siempre lo escriben... en ese caso lo lógico sería desensamblar y mirar el código en ensamblador, si no sabes ensamblador utiliza un descompilador, que lo que hace es primero desensamblar y este código traducirlo a las instrucciones más probables en el lenguaje para el que está diseñado el descompilador (si es un descompilador para C lo hará en C). El problema es que cada lenguaje se traduce a ensamblador de manera distinta, un código ensamblador proveniente de C no tiene el mismo método para por ejemplo entrar a una función o salir de ella que el que utiliza uno de (yo que sé) Lisp.
De modo que debes identificar en qué lenguaje puede estar hecho y descompilarlo, si utilizas un descompilador incorrecto el código será imposible de leer. Sin embargo te advierto que aun empleando el correcto esto no es perfecto, obtendrás un código muy enrevesado, aunque no será tan doloroso a la vista como con uno incorrecto.
Se me ocurre también que la mayor parte de los programas incluyen un texto como manual, si no lo incluye también puedes probar a ejecutarlo desde la terminal con el argumento "-h" o "--help", si no funciona puedes intentar hacerte una idea de su funcionamiento mediante la utilidad objdump en linux ejecutando:
objdump -s -j .data archivo.exe
Con esto volcarás todos los valores en la sección .data del ejecutable, ahí es donde más probablemente se almacenen las cadenas de caracteres.

EDITO: Qué casualidad, leyendo el blog de esta página he encontrado esto, que es seguramente lo que buscas ;)
http://blog.elhacker.net/2016/03/la-herramienta-bindiff-es-ahora-gratuita.html
Muchas gracias por contestar y por toda la información que me has dado, me pongo ahora con ello haber si lo consigo
Un saludo!




No consigo ejecutar el BinDiff,
e instalado la ultima versión de la web y cuando lo ejecuto no sale nada.
también e descargado la versión 4.1 y da problema con java
Un saludo




Ya lo e conseguido arreglar  ::)




[MOD] Esto no es un chat, para añadir comentarios se usa el botón "modificar".