| 
	
		|  Autor | Tema: Empezando con ASM  (Leído 10,779 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 ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								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 ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								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 ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								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, 5add eax, '0'mov [cuerpo+4], almov [cuerpo+5], 0
 Para reservar memoria en tiempo de ensamblaje (?) podes hacer esto: .datauna_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'.datacuerpo db    'Hola Mundo',0Datos db 99 dup (0) ; Reservamos 99 bytes.codestart:xor eax,eaxmov eax,4or al,"0"mov byte[cuerpo+4],alinvoke MessageBox,0,cuerpo,0,0invoke 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 ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								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 ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								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,256 |  12 Octubre 2012, 09:27 am por Jusko
 |  
						|   |   | empezando con wireshark!! ayudaa!! Windows
 | chino99 | 1 | 2,818 |  6 Agosto 2013, 13:22 pm por chino99
 |  
						|   |   | Empezando Hacking
 | Kira | 0 | 2,891 |  10 Septiembre 2017, 03:22 am por Kira
 |  
						|   |   | Empezando a... Ingeniería Inversa
 | B€T€B€ | 5 | 3,847 |  14 Enero 2020, 23:32 pm por B€T€B€
 |  
						|   |   | Empezando con Python, me darias una mano? Scripting
 | niubi | 7 | 7,666 |  12 Noviembre 2023, 05:15 am por D3s0rd3n
 |    |