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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Empezando con ASM
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Empezando con ASM  (Leído 10,036 veces)
W0lFy


Desconectado Desconectado

Mensajes: 551



Ver Perfil WWW
Empezando con ASM
« en: 30 Junio 2009, 09:06 am »

Buenas, estoy empezando con el tipico MessageBox de Hola mundo,

hasta ahora lo que tengo es:

include "c:\include\win32ax.inc'

.data

cuerpo db "Este es el Cuerpo",0
titulo db "Este es el titulo",0

.code

start:
push MB_OK
push titulo
push cuerpo
push 0
call [MessageBox]




.end start


Bueno este codigo me imprime la tipica ventana con OK con titulo y cuerpo, existe alguna manera de poder cambiar la variable cuerpo? por ejemplo

si yo tengo esta variable definida

cuerpo db "Este es el Cuerpo",0

ahora quiero que cuerpo sea:

cuerpo="Este es el 56 cuerpo",0
supongo que es accediendo a la direccion de la memoria de cuerpo y sumarle tantos caracteres *4 como queramos , creo que es asi pero no se como modificar esa direccion exacta, igual estoy confundido, me podrían ayudar?Es indispensable para mi aprendizaje, Gracias!! Un saludo!


En línea

K@NuT0
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #1 en: 30 Junio 2009, 09:41 am »

En este caso no podrias excepto que no te importara sobreescribir la memoria que le sigue (en este caso titulo) debido a que no reservaste suficiente espacio para la nueva cadena. Lo que podes hacer sin problema es esto:

Código
  1. mov [cuerpo], 'H'
  2. mov [cuerpo+1], 'o'
  3. mov [cuerpo+2], 'l'
  4. mov [cuerpo+3], 'a'
  5. mov [cuerpo+4], 0

Por cierto pone un ret o un ExitProcess despues del MessageBox (y cerra con comillas - " - el include).


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
W0lFy


Desconectado Desconectado

Mensajes: 551



Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #2 en: 30 Junio 2009, 09:47 am »

Gracias Eternal voy a probar, jeje los errores de despues no te preocupes, que son porque copie rapidamente, Gracias!
En línea

K@NuT0
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #3 en: 30 Junio 2009, 09:54 am »

De nadas  ::)
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
W0lFy


Desconectado Desconectado

Mensajes: 551



Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #4 en: 30 Junio 2009, 10:12 am »

Tengo otra duda:

Si yo tengo esta variable:

cuerpo db    'Hola Mundo',0

y quiero modifi car el 5 caracter de la variable digamos que yo lo modificaria asi:

mov [cuerpo+4], 0x61   ; por ejemplo

pero y si quiero pasarle un valor numerico que tengo almacenado en uan variable?

por ejemplo si  eax= 0x0000005

quiero hacer un mov[cuerpo+4], eax   ; y que el resultado obtenido sea este:
cuerpo= 'Hola4Mundo',0


despues me gustaria saber como puedo reservar memoria para poder poner un string a mi antojo. Un saludo!
En línea

K@NuT0
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #5 en: 30 Junio 2009, 12:05 pm »

Para que un digito se convierta en caracter tenes que sumarle el codigo ASCII de 0 (48), este es un ejemplo basado en el otro:

Código
  1. mov [cuerpo], 'H'
  2. mov [cuerpo+1], 'o'
  3. mov [cuerpo+2], 'l'
  4. mov [cuerpo+3], 'a'
  5. mov eax, 5
  6. add eax, '0'
  7. mov [cuerpo+4], al
  8. mov [cuerpo+5], 0

Para reservar memoria en tiempo de ensamblaje (?) podes hacer esto:

Código
  1. .data
  2. una_cadena db 128 dup(0)

El resultado es 128 bytes en la sección de datos cuyo valor es 0.
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
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #6 en: 30 Junio 2009, 14:36 pm »

Código
  1. include 'win32ax.inc'
  2. .data
  3. cuerpo db    'Hola Mundo',0
  4. Datos db 99 dup (0) ; Reservamos 99 bytes
  5. .code
  6. start:
  7. xor eax,eax
  8. mov eax,4
  9. or al,"0"
  10. mov byte[cuerpo+4],al
  11. invoke MessageBox,0,cuerpo,0,0
  12. invoke ExitProcess,0
  13. .end start                                      

Hay tienes un ejemplo de lo que querias hacer :P
« Última modificación: 30 Junio 2009, 14:40 pm por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #7 en: 30 Junio 2009, 14:58 pm »

¿Para que la introducir Datos al codigo? En fin, todo sea por la redundancia.
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
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #8 en: 30 Junio 2009, 17:34 pm »

¿Para que la introducir Datos al codigo? En fin, todo sea por la redundancia.

No entiendo muy bien lo que dices.

Si es por lo de

Código
  1. Datos db 99 dup (0)

era para mostrarle como se hacia , aunque no tiene importancia en el codigo en si :P
En línea



Yo le enseñe a Kayser a usar objetos en ASM
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #9 en: 30 Junio 2009, 17:42 pm »

Si, me referia a eso exactamente, era redundante.
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
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
empezando de nuevo
.NET (C#, VB.NET, ASP)
Jusko 2 2,050 Último mensaje 12 Octubre 2012, 09:27 am
por Jusko
empezando con wireshark!! ayudaa!!
Windows
chino99 1 2,495 Último mensaje 6 Agosto 2013, 13:22 pm
por chino99
Empezando
Hacking
Kira 0 2,678 Último mensaje 10 Septiembre 2017, 03:22 am
por Kira
Empezando a...
Ingeniería Inversa
B€T€B€ 5 3,295 Último mensaje 14 Enero 2020, 23:32 pm
por B€T€B€
Empezando con Python, me darias una mano?
Scripting
niubi 7 6,042 Último mensaje 12 Noviembre 2023, 05:15 am
por D3s0rd3n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines