Registrarse    Identificarse    Foro    FAQ

Índice general » General » CEZ Retrocompo 2007 (Español & English)




Nuevo tema Responder al tema  [ 11 mensajes ] 
Autor Mensaje
 Asunto: Como enfrentarse al desensamblado
 Nota Publicado: 14 Feb 2007 18:30 
Desconectado
8 bits
8 bits

Registrado: 05 Feb 2007 08:06
Mensajes: 20
Ubicación: Barcelona
para Spectrum (by Slàinte)
Como parece que hay gente que no tiene mucha mano en como enfocar el proceso artesanal del desensamblado os dejo un poco el sistema que yo uso para ello con el soft de spectrum:

Herramientas:
ZXPreview (http://home.arcor.de/clausjahn/spectrum/)
EmuZWin
IDA (yo concretamente uso el 4.17 para windows)
Manual de BASIC del Spectrum (http://www.worldofspectrum.org/ZXBasicManual/)
The Complete Spectrum Rom Disassembly (ftp://ftp.worldofspectrum.org/pub/sinclair/books/CompleteSpectrumROMDisassemblyThe.pdf)
Referencia de ensamblador de Z80 (http://www.zilog.com/docs/z80/um0080.pdf)

Proceso:
- El primer paso es recuperar el cargador basic del juego, hay muchas formas, yo uso el fichero .tap y el zxpreview
- Normalmente hay varios valores a tener presentes en el cargador: el primero el setteo de RAMTOP (clear XXXXX) que indica qué zona de memoria se nos va a reservar para los datos de nuestro programa, y el RANDOMIZE USR YYYYY que nos indica el punto de entrada del programa.
- Ahora necesitamos un volcado de la memoria del spectrum, lo cual podemos hacer desde la mayoria de emuladores... yo suelo hacer el volcado de 0000 a FFFF, para tener las llamadas a ROM en el mismo bloque (incluso porque a veces hay coders que aprovechan zonas concretas de rom para ahorrarse algunas lineas
- Cargamos el fichero raw en el IDA, vamos a la direccion YYYYY del RANDOMIZE USR y convertimos a Código para que empiece el análisis... a partir de ahi se trata de identificar subrutinas, etiquetar coherentemente los saltos y las posiciones de memoria, etc... todo altamente artesanal...
- Adicionalmente se puede lanzar el juego con el emuzwin, haciendo que no arranque tras la carga y poniendo breakpoints para ir ejecutando de forma controlada y siguiendo flujo de ejecución y valores de los datos, etc. en la ventana de desensamblado (ademas la parte de ROM está muy bien etiquetada en la vista de desensamblado)

Espero que esto os ayude ;) e invito a los demas a añadir un post con sus propios métodos para cualquier otra plataforma


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 14 Feb 2007 18:47 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 24 May 2005 22:39
Mensajes: 3058
Ubicación: Lejos de la ostia!!!
Gracias por el tutorial!!... es super interesante!!!! seguro que a mas de uno le irá de perlas!!! :P

_________________
Yo tenía una "Amiga" y las noches las pasaba con Paula y Elise....

2009, el año del Amiga....
http://www.amigamania.com
De Amigueros, para Amigueros...


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 14 Feb 2007 19:42 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 24 May 2006 08:35
Mensajes: 1726
Ubicación: Madrid
Gracias!!!

_________________
Are you linked in?
http://www.linkedin.com/in/augustoruiz


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 14 Feb 2007 22:28 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 29 Dic 2004 21:17
Mensajes: 2352
Ubicación: Cartagena (CT)
Voy a poner yo tambien alguna referencia:


http://www.compuware.com/products/devpartner/studio.htm

Be GOD on your PC!

Juas juas juas !

_________________
WYZPlayer

DREAM OVER
INSERT COIN


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Abr 2007 18:51 
Desconectado
8 bits
8 bits

Registrado: 17 Abr 2007 17:24
Mensajes: 7
Muchas gracias pero....
...para desensamblar uno de pc?


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Abr 2007 23:25 
Conectado
32 bits
32 bits
Avatar de Usuario

Registrado: 02 Ene 2005 02:40
Mensajes: 623
El IDA Pro por ejemplo.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Abr 2007 15:37 
Desconectado
8 bits
8 bits

Registrado: 17 Abr 2007 17:24
Mensajes: 7
Gracias, aunque supongo que dependerá del lenguaje en el que haya sido programado el juego. Lo de pc lo decía porque si el juego tiene diferentes versiones, será mejor desensamblar la de pc que la de spectrum.

En el juego me encuentro con el .exe, que será el que tenga que descompilar, y con un archivo .CTR, alguien sabe algo de ésta última extensión? en cuanto a la extensión .PIC, se puede hacer algo con ella? extraer gráficos, recursos o algo?

Muchas gracias señores!
Saluditos.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Abr 2007 15:43 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 22 Abr 2005 13:25
Mensajes: 11932
Un ejecutable compilado es in-descompilable. No vas a obtener código C con sus nombres de variables ni nada.

Se puede decompilar el Java y el VB hasta cierta versión, porque es otro tipo de ejecutables. Hay una máquina virtual que ejecuta un bytecode que tiene un montón de info sobre el código fuente, por lo que se puede regenerar.

Pero con un EXE normal, no.

Desensamblando obtienes código en ensamblador muy feo. Básicamente se cambian los números de código máquina por mnemónicos equivalentes y se sustituyen las direcciones de memoria por etiquetas (esto no con todos los desensambladores).

Para sacar gráficos y otros recursos hay que confiar en que los desarrolladores empleasen formatos gráficos estándar y no se inventasen los suyos. En este caso, hay programas que recorren archivos de datos leyendo e interpretando cabeceras y extraen lo que se encuentren. Yo usaba uno, pero no tengo ni idea de cómo se llamaba... ¡hace demasiado tiempo!

_________________
http://www.mojontwins.com


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Abr 2007 16:24 
Desconectado
8 bits
8 bits

Registrado: 17 Abr 2007 17:24
Mensajes: 7
Vale gracias, es lo que me temía, por eso ahora me surge la duda de: para qué este minitutorial de desensamblado? si poco se puede hacer con lo obtenido...

Algún programa para extraer recursos del .exe, del .ctr o del .pic? si pudiera ser para linux...sino para windows...

Graaacias de nuevo.
Saluditos


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Abr 2007 16:32 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 22 Abr 2005 13:25
Mensajes: 11932
Se puede hacer mucho, pero es muy costoso entender código en ensamblador. Costoso en tiempo. Al menos si no estás muy entrenado, como algunos cracks que pululan por aquí. Para mí sería una tarea hercúlea y como que paso :D Prefiero "reinterpretar" el juego basándome en lo que observo. Para mí es más divertido, pero sobre gustos no hay nada escrito.

Y sobre lo de ripear los contenidos originales, tampoco sé nada, ya que siempre que me he puesto al lío me he currado todo desde cero. Como mucho habré hecho capturas del juego en un emu para pintar encima.

_________________
http://www.mojontwins.com


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Abr 2007 16:42 
Desconectado
8 bits
8 bits

Registrado: 17 Abr 2007 17:24
Mensajes: 7
Sin duda, estoy contigo.

En cuanto al programa extractor de recursos de exes posiblemente te refieras al Reshack...sin embargo solo funciona para exes win32..estoy intentando buscar algo similar para linux también.

Muchas gracias por la ayuda, mis dudas(por el momento:P) han quedado resueltas.

Gracias!
Saluditos


Arriba 
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
 
Nuevo tema Responder al tema  [ 11 mensajes ] 

Índice general » General » CEZ Retrocompo 2007 (Español & English)


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

 
 

 
No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Saltar a:  
 
Thermomix | Thermomix 31