Autor
|
Tema: Empezando con ASM (Leído 10,036 veces)
|
W0lFy
|
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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: mov [cuerpo], 'H' mov [cuerpo+1], 'o' mov [cuerpo+2], 'l' mov [cuerpo+3], 'a' 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
|
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
|
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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: mov [cuerpo], 'H' mov [cuerpo+1], 'o' mov [cuerpo+2], 'l' mov [cuerpo+3], 'a' mov eax, 5 add eax, '0' mov [cuerpo+4], al mov [cuerpo+5], 0
Para reservar memoria en tiempo de ensamblaje (?) podes hacer esto: .data 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
Mensajes: 965
I'm you
|
include 'win32ax.inc' .data cuerpo db 'Hola Mundo',0 Datos db 99 dup (0) ; Reservamos 99 bytes .code start: xor eax,eax mov eax,4 or al,"0" mov byte[cuerpo+4],al invoke MessageBox,0,cuerpo,0,0 invoke ExitProcess,0 .end start
Hay tienes un ejemplo de lo que querias hacer
|
|
« Ú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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
¿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
Mensajes: 965
I'm you
|
¿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 Datos db 99 dup (0)
era para mostrarle como se hacia , aunque no tiene importancia en el codigo en si
|
|
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
empezando de nuevo
.NET (C#, VB.NET, ASP)
|
Jusko
|
2
|
2,050
|
12 Octubre 2012, 09:27 am
por Jusko
|
|
|
empezando con wireshark!! ayudaa!!
Windows
|
chino99
|
1
|
2,495
|
6 Agosto 2013, 13:22 pm
por chino99
|
|
|
Empezando
Hacking
|
Kira
|
0
|
2,678
|
10 Septiembre 2017, 03:22 am
por Kira
|
|
|
Empezando a...
Ingeniería Inversa
|
B€T€B€
|
5
|
3,295
|
14 Enero 2020, 23:32 pm
por B€T€B€
|
|
|
Empezando con Python, me darias una mano?
Scripting
|
niubi
|
7
|
6,042
|
12 Noviembre 2023, 05:15 am
por D3s0rd3n
|
|