cambiar definicion de variables de datos?

Iniciado por fumioli, 17 Noviembre 2012, 20:35 PM

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

fumioli

Buenas, soy un poco torpe con el lenguaje ensamblador, acabo de empezar hace poco, voy a ver si me explico para que entendais mi duda: Despues de desemsamblar un exe hay unas posiciones de memoria del segmento .data que desearía que fueran de doble palabra para contener otra dirección, adjunto un fragmento para clarificar: 

0057FC28    . 90FC5700       DD     2012.0057FC90                      ;  ASCII "CAT"
0057FC2C   . 8CFC5700       DD     2012.0057FC8C                      ;  ASCII "AUS"
0057FC30    . 88FC5700       DD     2012.0057FC88                      ;  ASCII "ARG"
0057FC34     00                   DB 00
0057FC35     00                   DB 00
0057FC36     00                   DB 00
0057FC37     00                   DB 00

necesitaría que las cuatro últimas posiciones de memoria se convirtieran en DD, es decir que pudiera contener otra dirección de memoria como ocurre con las tres direcciones iniciales.
No sé si me he explicado bien pero puedo intentar dar más datos si me preguntais en concreto que os hace falta.

Gracias

Høl¥

Hola, puedes hacerlo así:

Pinchas en la línea 0057FC34, click derecho > Follow in dump > Selection

http://img560.imageshack.us/img560/5927/54295142.png

Y después en la ventana de dump eliges los 4 bytes, presionas
espacio e introduces la dirección a la que quieres que apunte
(ojo al revés).

http://img707.imageshack.us/img707/736/85883598.png

fumioli


He seguido tus instrucciones pero no consigo el resultado deseado, supongo que al tener esas direcciones de memoria no declaradas como de doble palabra DD entiende cada bit por separado y no como una referencia a otra dirección de memoria, te adjunto el resultado:

0057FC28   . 90FC5700       DD   2012.0057FC90                         ;  ASCII "CAT"
0057FC2C   . 8CFC5700       DD   2012.0057FC8C                         ;  ASCII "AUS"
0057FC30   . 88FC5700       DD   2012.0057FC88                         ;  ASCII "ARG"
0057FC34     88                   DB  88
0057FC35     FC                   DB   FC
0057FC36     57                   DB   57                                    ;  CHAR 'W'
0057FC37     00                    DB   00

Gracias por la respuesta y si se te ocurre algo más no dejes de comentarlo

Høl¥

#3
Si mira, a fin de cuentas es lo mismo que DD 2012.0057FC88, si quieres
que aparezca así, selecciona esos 4 DB click derecho > Analysis > During next analysis, treat selection as > Doublewords

Analysis > Analyse code.

fumioli



Ahora sí que sí,   ha funcionado, gracias campeón. llevo dándole vueltas toda la semana sin encontrar la solución ;-)