elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Punteros en Asm32
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Punteros en Asm32  (Leído 6,947 veces)
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Punteros en Asm32
« 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


pero nse como aplicarlo,megustaria obtener a direccion de una variable i apuntar a ella cuando lo necesite (y apuntar  otras variables tmb)


salu2


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Punteros en Asm32
« Respuesta #1 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


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Punteros en Asm32
« Respuesta #2 en: 20 Febrero 2010, 22:57 pm »

Código
  1. .386
  2. .model flat, stdcall
  3.  
  4. .data
  5.  msg db "hola", 0
  6.  
  7. .code
  8.  main:
  9.    int 3
  10.    mov ecx, offset msg
  11.    mov byte ptr [ecx], 'c'
  12.  ret
  13. end main

Podes hacer un ejercicio, bajas las Debugging Tools for Windows.
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'.
« Última modificación: 20 Febrero 2010, 23:00 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Punteros en Asm32
« Respuesta #3 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.

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
MCKSys Argentina

osea que esto estaria bien??:
Código
  1. MOV ECX,800h    ;Direccion de memoria en donde hay un valor
  2. MOV EAX,dword ptr [ECX]     ;Copia valor de la direccion 800h a EAX
  3.  


en EAX quedaria el valor que esta almacenado dentro de la memoria 800h no?¿



salu2 y gracias a los dos
« Última modificación: 21 Febrero 2010, 12:46 pm por Riki_89D » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Punteros en Asm32
« Respuesta #4 en: 21 Febrero 2010, 13:05 pm »

osea que esto estaria bien??:
Código
  1. MOV ECX,800h    ;Direccion de memoria en donde hay un valor
  2. MOV EAX,dword ptr [ECX]     ;Copia valor de la direccion 800h a EAX
  3.  


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
  1. .386
  2. .model flat, stdcall
  3.  
  4. .data
  5.  msg db "hola", 0
  6.  
  7. .code
  8.  main:
  9.    int 3
  10.    mov ecx, offset msg
  11.    mov al, byte ptr [ecx]
  12.  ret
  13. end main
« Última modificación: 21 Febrero 2010, 13:07 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Punteros en Asm32
« Respuesta #5 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
  1. .386
  2. .model flat,stdcall
  3. option casemap:none
  4. include Tot.inc
  5. .data
  6. Texto db 'Hola',0
  7.  
  8.  
  9. .code
  10. index:
  11. xor ecx,ecx
  12. mov ecx,800h
  13. mov eax,dword ptr [ecx]
  14. invoke MessageBox,0,eax,0,0
  15.  
  16. invoke ExitProcess,0
  17.  
  18. end index
  19.  

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??
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Punteros en Asm32
« Respuesta #6 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
  1. .data
  2.  msg1 db "hola", 0
  3.  msg2 db "mundo", 0
  4.  
  5. .code
  6.  main:
  7.    int 3
  8.    mov ecx, offset msg1
  9.    mov edx, offset msg2
  10.    invoke MessageBox, 0, ecx, edx, 0
  11.  
« Última modificación: 21 Febrero 2010, 20:46 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Punteros en Asm32
« Respuesta #7 en: 21 Febrero 2010, 21:14 pm »

Gracias Eternar peor una cosa,por que sirve eso de "int 3" ??? no entiendo ese parametro



salu2
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Punteros en Asm32
« Respuesta #8 en: 21 Febrero 2010, 21:16 pm »

Es un breakpoint, para depurar el programa.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Punteros en Asm32
« Respuesta #9 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!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines