Autor
|
Tema: Empezando con ASM (Leído 10,050 veces)
|
Yurix
Desconectado
Mensajes: 72
Paz para la guerra y guerra por la paz
|
------- 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
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.968
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 965
I'm you
|
Algo a si quieres ? include 'win32ax.inc' .data cuerpo db 'Este es el Cuerpo',0 .code start: invoke lstrlen,cuerpo add eax,3 invoke GlobalAlloc,GPTR, eax mov ebx ,eax mov byte[cuerpo+10],0 invoke lstrcpy,ebx,cuerpo invoke lstrcat,ebx," 56 Cuerpo" invoke MessageBox,0,ebx,0,0 invoke GlobalFree,ebx invoke ExitProcess,0 .end start
|
|
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.968
Israel nunca torturó niños, ni lo volverá a hacer.
|
Global and Local FunctionsThe 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
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.968
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 965
I'm you
|
Verdad me comi un byte include 'win32ax.inc' .data cuerpo db 'Este es el Cuerpo',0 .code start: invoke lstrlen,cuerpo add eax,4 invoke GlobalAlloc,GPTR, eax mov ebx ,eax mov byte[cuerpo+11],0 invoke lstrcpy,ebx,cuerpo invoke lstrcat,ebx,"56 Cuerpo" invoke MessageBox,0,ebx,0,0 invoke GlobalFree,ebx invoke ExitProcess,0 .end start
|
|
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
empezando de nuevo
.NET (C#, VB.NET, ASP)
|
Jusko
|
2
|
2,055
|
12 Octubre 2012, 09:27 am
por Jusko
|
|
|
empezando con wireshark!! ayudaa!!
Windows
|
chino99
|
1
|
2,499
|
6 Agosto 2013, 13:22 pm
por chino99
|
|
|
Empezando
Hacking
|
Kira
|
0
|
2,684
|
10 Septiembre 2017, 03:22 am
por Kira
|
|
|
Empezando a...
Ingeniería Inversa
|
B€T€B€
|
5
|
3,302
|
14 Enero 2020, 23:32 pm
por B€T€B€
|
|
|
Empezando con Python, me darias una mano?
Scripting
|
niubi
|
7
|
6,089
|
12 Noviembre 2023, 05:15 am
por D3s0rd3n
|
|