Título: Punteros en Asm32 Publicado por: Riki_89D en 20 Febrero 2010, 22:08 pm Hola quet al?? alguien save cmomop se usan los punteros en Asm porfavor?¿
e mirado por el foro y encontre esto: http://foro.elhacker.net/asm/ayudacon_punteros_en_asm-t254688.0.html (http://foro.elhacker.net/asm/ayudacon_punteros_en_asm-t254688.0.html) pero nse como aplicarlo,megustaria obtener a direccion de una variable i apuntar a ella cuando lo necesite (y apuntar otras variables tmb) salu2 Título: Re: Punteros en Asm32 Publicado por: MCKSys Argentina en 20 Febrero 2010, 22:45 pm Por definición, un puntero es una dirección de memoria, la cual guarda en su interior, otra dirección de memoria, donde se encuentra el valor real de la variable.
Por ejemplo: Suponiendo que ECX = BADCODEh Este código, copia el valor de ECX a EAX. Por lo tanto EAX tendrá el valor de BADCODEh. Osea, EAX = BADCODEh. Código: mov eax, ecx Pero este código, toma el valor de ECX como un puntero. Osea, en EAX se copia el valor de la memoria que está identificado por ECX. Esto significa, que en EAX se copiará el valor que se encuentre en la DIRECCION DE MEMORIA BADCODEh. Código: mov eax, dword ptr [ecx] No sé si me entiendes... ;D Título: Re: Punteros en Asm32 Publicado por: Eternal Idol en 20 Febrero 2010, 22:57 pm Código
Podes hacer un ejercicio, bajas las Debugging Tools for Windows (http://www.microsoft.com/whdc/Devtools/Debugging/default.mspx). Vas al directorio de instalacion con la consola y ejecutar WinDbg.exe -I para instalarlo como depurador post-mortem. Ejecutas este ejemplito (MASM), se va a abrir directamente el WinDbg (por el int 3). Le das a F11 dos veces y haces da @ecx, despues le das a F11 otra vez y haces da @ecx otra vez. PD. Si lo haces correctamente veras que ecx es un puntero a msg y cambiaste el primer caracter ('a') por una 'c'. Título: Re: Punteros en Asm32 Publicado por: Riki_89D en 21 Febrero 2010, 12:41 pm Hola,muchisimas gracias a los 2,me a sido de gran ayuda gracias!!
Por definición, un puntero es una dirección de memoria, la cual guarda en su interior, otra dirección de memoria, donde se encuentra el valor real de la variable. MCKSys ArgentinaPor ejemplo: Suponiendo que ECX = BADCODEh Este código, copia el valor de ECX a EAX. Por lo tanto EAX tendrá el valor de BADCODEh. Osea, EAX = BADCODEh. Código: mov eax, ecx Pero este código, toma el valor de ECX como un puntero. Osea, en EAX se copia el valor de la memoria que está identificado por ECX. Esto significa, que en EAX se copiará el valor que se encuentre en la DIRECCION DE MEMORIA BADCODEh. Código: mov eax, dword ptr [ecx] No sé si me entiendes... ;D osea que esto estaria bien??: Código
en EAX quedaria el valor que esta almacenado dentro de la memoria 800h no?¿ salu2 y gracias a los dos Título: Re: Punteros en Asm32 Publicado por: Eternal Idol en 21 Febrero 2010, 13:05 pm osea que esto estaria bien??: Código
en EAX quedaria el valor que esta almacenado dentro de la memoria 800h no?¿ Si, ECX es el puntero (a 800h) y estas desreferenciandolo. Moves EAX el DWORD al cual apunta ECX. Siguiendo el ejemplo de antes podes depurarlo tambien, en al quedara 'h' (68 en hex, 104 en dec=ASCII): Código
Título: Re: Punteros en Asm32 Publicado por: Riki_89D en 21 Febrero 2010, 19:51 pm Me estoy volviendo loco intnto que un MessageBox me muestre lo que un "puntero" esta apuntndo pero nada :(
este es el code: Código
en ecx pongo el ofset donde se encuentra el texto,despues eax como puntero a lo que apunt ecx no?? pues no me emuestra nada kuando lo ejecuto me sale error de esos de enviar no envie¡ar k ago?? Título: Re: Punteros en Asm32 Publicado por: Eternal Idol en 21 Febrero 2010, 20:45 pm A MessageBox le tenes que pasar CADENAS ... ademas eso seguramente este dando una excepcion debido a que esa direccion (800h) es invalida.
Código
Título: Re: Punteros en Asm32 Publicado por: Riki_89D en 21 Febrero 2010, 21:14 pm Gracias Eternar peor una cosa,por que sirve eso de "int 3" ??? no entiendo ese parametro
salu2 Título: Re: Punteros en Asm32 Publicado por: Eternal Idol en 21 Febrero 2010, 21:16 pm Es un breakpoint, para depurar el programa.
Título: Re: Punteros en Asm32 Publicado por: MCKSys Argentina en 22 Febrero 2010, 00:38 am Quizás deberías bajarte un copia de Ollydbg y empezar a utilizarlo para depurar el código.
Así verás las cosas más fácil. Sobretodo este tema en particular. Incluso puedes agregar código en tiempo de ejecución y probarlo ;) Saludos! Título: Re: Punteros en Asm32 Publicado por: Eternal Idol en 22 Febrero 2010, 00:40 am Tambien aunque yo prefiero el WinDbg, arriba tiene como configurarlo para que se abra automaticamente pero no lo habra leido :silbar:
Título: Re: Punteros en Asm32 Publicado por: MCKSys Argentina en 22 Febrero 2010, 00:43 am Lo que pasa es que Olly es el favorito cuando uno se tira para el lado de Ing. Inversa :P
Aunque WinDBG también está muy bueno ;D Título: Re: Punteros en Asm32 Publicado por: Eternal Idol en 22 Febrero 2010, 01:07 am Puede ser pero no sirve para modo Kernel ::)
Título: Re: Punteros en Asm32 Publicado por: MCKSys Argentina en 22 Febrero 2010, 22:20 pm Yes, you're right!!! ;D
|