Modificar valores de la memoria

Estoy haciendo un pequeño programa en visual bsic 6.0 donde quiero modificar valores de la memoria en tiempo de ejecución, por ejemplo el programa selecciona un proceso y en una dirección de memoria leer y guardar valores, soy un poco novato en esto pero ya he avanzado un poco... Para valores de 1,2 y 4 byte ya lo se hacer de esta manera:
Esta es la función que uso para leer valores y me funciona perfecto
Public Function ReadLong(Offset As Long, ProcessID As Long) As Long
Dim ProcessHandle As Long
Dim Value As Long
ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
If ProcessHandle = 0 Then
MsgBox "No se encuentra el proceso", vbCritical, "Error de Lectura"
Exit Function
End If
ReadProcessMem ProcessHandle, Offset, Value, 4, 0&
ReadLong = Value
CloseHandle ProcessHandle
End Function
Esta es la funcion que uso para escribir valores.
Public Function WriteLong(Offset As Long, ProcessID As Long, Value As Long) As Boolean
Dim ProcessHandle As Long
ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
If ProcessHandle = 0 Then
MsgBox "No se encuentra el proceso", vbCritical, "Error de Lectura"
Exit Function
End If
WriteProcessMemory ProcessHandle, Offset, Value, 4, 0&
CloseHandle ProcessHandle
End Function
Ahora lo que me gustaría saber es como leer y guardar valores de Array de Byte
Por ejemplo:
En la dirección de memoria &H353BD7C0 guardar los siguientes valores, esto es un array de 96 bytes...
28 79 3D 35 00 00 00 00 2C 79 3D 35 00 00 00 00 48 BB 3B 35 01 00 00 00 4C 79 3D 35 01 00 00 00 DC 75 2F 35 58 93 2D 35 A4 04 00 00 F8 BE 3B 35 70 A3 0F 35 C0 A0 0F 35 D0 A0 0F 35 E0 A0 0F 35 00 A1 0F 35 10 A1 0F 35 20 A1 0F 35 F0 A0 0F 35 01 00 00 00 FF FF FF FF 30 A6 0F 35 58 93 2D 35
Acotación: Cada bloque de memoria tiene 16 posiciones, para 4 posiciones ya lo se modificar con la función que puse. De todos modos adjunto una imagen de referencia para explicarme mejor.

1 Respuesta

Respuesta
Pues la verdad no se para que haces eso, pero si ya lo haces para 4 y lo que quieres hacer para 16, simplemente hazlo 3 veces más, cambiando al dirección de memoria de acuerdo a lo que escribes y así sumas los 16 bytes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas