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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


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

Desconectado Desconectado

Mensajes: 72


Paz para la guerra y guerra por la paz


Ver Perfil
Re: Empezando con ASM
« Respuesta #10 en: 30 Junio 2009, 19:58 pm »

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

Que bueno que tocas este tema ya que igual que tu también lo tengo en mente , es cierto que si no reservas espacio en memoria para la string no puedes hacer nada .

Eternal dijo:
En este caso no podrías excepto que no te importara sobrescribir la memoria que le sigue (en este caso titulo) debido a que no reservaste suficiente espacio para la nueva cadena.

--- en estos momentos tengo en mente una forma para hacer ajustes en caso de que no reservemos memoria para nuestras strings , y que no consuma espacio en memoria innecesario , es decir , no reservar espacio de antemano , esperen el código que ya viene en camino , se los prometo .

Saludos







En línea



http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


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


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #11 en: 30 Junio 2009, 20:18 pm »

Para eso esta la memoria dinamica, se puede usar HeapAlloc/HeapFree por ejemplo.


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 #12 en: 30 Junio 2009, 20:33 pm »

Algo a si quieres ?
Código
  1. include 'win32ax.inc'
  2. .data
  3. cuerpo db    'Este es el Cuerpo',0
  4. .code
  5. start:
  6. invoke lstrlen,cuerpo
  7. add eax,3
  8. invoke GlobalAlloc,GPTR, eax
  9. mov ebx ,eax
  10. mov byte[cuerpo+10],0
  11. invoke lstrcpy,ebx,cuerpo
  12. invoke lstrcat,ebx," 56 Cuerpo"
  13. invoke MessageBox,0,ebx,0,0
  14. invoke GlobalFree,ebx
  15. invoke ExitProcess,0
  16. .end start              
En línea



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

Mensajes: 5.935


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


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

Global and Local Functions

The global and local functions are supported for porting from 16-bit code, or for maintaining source code compatibility with 16-bit Windows. Starting with 32-bit Windows, the global and local functions are implemented as wrapper functions that call the corresponding heap functions using a handle to the process's default heap. Therefore, the global and local functions have greater overhead than other memory management functions.

The heap functions provide more features and control than the global and local functions. New applications should use the heap functions unless documentation specifically states that a global or local function should be used. For example, some Windows functions allocate memory that must be freed with LocalFree, and the global functions are still used with Dynamic Data Exchange (DDE), the clipboard functions, and OLE data objects. For a complete list of global and local functions, see the table in Memory Management Functions.

Windows memory management does not provide a separate local heap and global heap, as 16-bit Windows does. As a result, the global and local families of functions are equivalent and choosing between them is a matter of personal preference. Note that the change from a 16-bit segmented memory model to a 32-bit virtual memory model has made some of the related global and local functions and their options unnecessary or meaningless. For example, there are no longer near and far pointers, because both local and global allocations return 32-bit virtual addresses.

Memory objects allocated by GlobalAlloc and LocalAlloc are in private, committed pages with read/write access that cannot be accessed by other processes. Memory allocated by using GlobalAlloc with GMEM_DDESHARE is not actually shared globally as it is in 16-bit Windows. This value has no effect and is available only for compatibility. Applications requiring shared memory for other purposes must use file-mapping objects. Multiple processes can map a view of the same file-mapping object to provide named shared memory. For more information, see File Mapping.

PD. YST: te falto un reservar un byte para el cero terminador de cadena.
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 #14 en: 30 Junio 2009, 21:27 pm »

PD. YST: te falto un reservar un byte para el cero terminador de cadena.

Adonde ? :xD El add eax,3 es 2 byte por el 56 y uno por el caracter nulo :P
En línea



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

Mensajes: 5.935


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


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

Al final, por supuesto, si queres usa App Verifier para comprobarlo.

"Este es el Cuerpo" = 17 caracteres
17+3=20, 19 caracteres + 0 terminador.

strcpy "Este es el" 10 caracteres
strcat " 56 Cuerpo" 10 caracteres

No solo agregas 56 sino un espacio justo despues del numero.
« Última modificación: 30 Junio 2009, 21:38 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
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Empezando con ASM
« Respuesta #16 en: 30 Junio 2009, 21:46 pm »

Verdad me comi un byte :xD

Código
  1. include 'win32ax.inc'
  2. .data
  3. cuerpo db    'Este es el Cuerpo',0
  4. .code
  5. start:
  6. invoke lstrlen,cuerpo
  7. add eax,4
  8. invoke GlobalAlloc,GPTR, eax
  9. mov ebx ,eax
  10. mov byte[cuerpo+11],0
  11. invoke lstrcpy,ebx,cuerpo
  12. invoke lstrcat,ebx,"56 Cuerpo"
  13. invoke MessageBox,0,ebx,0,0
  14. invoke GlobalFree,ebx
  15. invoke ExitProcess,0
  16. .end start        
En línea



Yo le enseñe a Kayser a usar objetos en ASM
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 1,879 Último mensaje 12 Octubre 2012, 09:27 am
por Jusko
empezando con wireshark!! ayudaa!!
Windows
chino99 1 2,299 Último mensaje 6 Agosto 2013, 13:22 pm
por chino99
Empezando
Hacking
Kira 0 2,492 Último mensaje 10 Septiembre 2017, 03:22 am
por Kira
Empezando a...
Ingeniería Inversa
B€T€B€ 5 2,903 Último mensaje 14 Enero 2020, 23:32 pm
por B€T€B€
Empezando con Python, me darias una mano?
Scripting
niubi 7 3,669 Último mensaje 12 Noviembre 2023, 05:15 am
por D3s0rd3n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines