Dudas trabajando con memoria VB

Iniciado por x64core, 3 Agosto 2011, 21:00 PM

0 Miembros y 3 Visitantes están viendo este tema.

raul338

Ya en algun momento te dará error. Lo que pasa es que esto es en pruebas, Si lo haces al manejar mensajes de windows o modificar programas externos, puede fallar :xD

x64core

vale mirad :P

Código (vb) [Seleccionar]
dir = VarPtr(A0)
dir = dir + 2

CopyMemory ByVal VarPtr(destino), ByVal dir, 10
Debug.Print destino


e puesto 10 bytes y solamente necesito los 2!
significa que estuviera accedienco a memoria prohibida de otra variable o mas de otro programa :P y lo peor es que me da correcto :P :xD :P

jaunx

te da correcto porque esos 2 bytes te los copia en su sitio, en el espacio que habías reservado al declarar la variable, pero los otros 8 los copias fuera, prueba a copiar 1000  ;D

Para escribir en la memoria de otro proceso  necesitas usar WriteProcessMemory.

x64core

buen analisis amigo! voy a probar podas las posibles valores que pueda y su reaccion gracias ;D

BlackZeroX

@Raul100

Dim iVal as integer
Dim pArray(10) as long

copymemory byval varptr(pArray(0)), byval varptr(iVal), 10 <--- podria ocacionar un crash

Lo que pasa es simple. un programa se carga completamente de manera contigua = como esta en el HD.

Cada funcion esta en bloques...

Una forma en la que lopuedes ver seria:

| Headers y otras cosas.. | Funcion 0 | Funcion 1 | ... |

Por lo tanto cuando corres el codigo anterior SI y SOLO SI "ival" le sigue otra declaracion de variable copia = su contenido, de lo contrario seran instrucciones de la funcion.

Dulces Lunas!¡.
The Dark Shadow is my passion.