Autor
|
Tema: Punteros en Asm32 (Leído 2,075 veces)
|
|
|
MCKSys Argentina
Desconectado
Mensajes: 1.141
Diviérte crackeando, que para eso estamos!
|
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. 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. mov eax, dword ptr [ecx]
No sé si me entiendes... 
|
|
|
|
|
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
|
.386 .model flat, stdcall .data msg db "hola", 0 .code main: int 3 mov ecx, offset msg mov byte ptr [ecx], 'c' ret 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 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
Mensajes: 842
BCN CITY
|
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. 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. mov eax, dword ptr [ecx]
No sé si me entiendes...  MCKSys Argentina osea que esto estaria bien??: MOV ECX,800h ;Direccion de memoria en donde hay un valor MOV EAX,dword ptr [ECX] ;Copia valor de la direccion 800h a EAX 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 por Riki_89D »
|
En línea
|
|
|
|
|
Eternal Idol
|
osea que esto estaria bien??: MOV ECX,800h ;Direccion de memoria en donde hay un valor MOV EAX,dword ptr [ECX] ;Copia valor de la direccion 800h a EAX 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): .386 .model flat, stdcall .data msg db "hola", 0 .code main: int 3 mov ecx, offset msg mov al, byte ptr [ecx] ret end main
|
|
|
|
« Última modificación: 21 Febrero 2010, 13:07 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
Mensajes: 842
BCN CITY
|
Me estoy volviendo loco intnto que un MessageBox me muestre lo que un "puntero" esta apuntndo pero nada  este es el code: .386 .model flat,stdcall option casemap:none include Tot.inc .data Texto db 'Hola',0 .code index: xor ecx,ecx mov ecx,800h mov eax,dword ptr [ecx] invoke MessageBox,0,eax,0,0 invoke ExitProcess,0 end index 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
|
A MessageBox le tenes que pasar CADENAS ... ademas eso seguramente este dando una excepcion debido a que esa direccion (800h) es invalida. .data msg1 db "hola", 0 msg2 db "mundo", 0 .code main: int 3 mov ecx, offset msg1 mov edx, offset msg2 invoke MessageBox, 0, ecx, edx, 0
|
|
|
|
« Última modificación: 21 Febrero 2010, 20:46 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
Mensajes: 842
BCN CITY
|
Gracias Eternar peor una cosa,por que sirve eso de "int 3" ??? no entiendo ese parametro
salu2
|
|
|
|
|
En línea
|
|
|
|
|
Eternal Idol
|
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
Desconectado
Mensajes: 1.141
Diviérte crackeando, que para eso estamos!
|
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."
|
|
|
|
Eternal Idol
|
Tambien aunque yo prefiero el WinDbg, arriba tiene como configurarlo para que se abra automaticamente pero no lo habra leido 
|
|
|
|
|
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
Desconectado
Mensajes: 1.141
Diviérte crackeando, que para eso estamos!
|
Lo que pasa es que Olly es el favorito cuando uno se tira para el lado de Ing. Inversa  Aunque WinDBG también está muy bueno 
|
|
|
|
|
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
|
Puede ser pero no sirve para modo Kernel 
|
|
|
|
|
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
Desconectado
Mensajes: 1.141
Diviérte crackeando, que para eso estamos!
|
Yes, you're right!!! 
|
|
|
|
|
En línea
|
--------------------- MCKSys Argentina
"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
|
|