Módulo de Manipulación de Memoria en VB.NET



Módulo de Manipulación de Memoria

Este módulo permite leer y escribir en la memoria de procesos externos mediante llamadas a la API de Windows (kernel32.dll), útil para desarrollos que requieren interacción con aplicaciones de terceros (ej: herramientas de debugging, bots, o modificaciones controladas).


Funcionalidad Principal

Lectura/Escritura de memoria: Opera con datos primitivos (Byte, Integer, Long, Float, Double) en direcciones específicas.


Resolución de punteros: Navega a través de direcciones de memoria con offsets para acceder a datos en estructuras complejas.


Acceso a procesos: Utiliza permisos de nivel sistema (PROCESS_ALL_ACCESS) para interactuar con otros programas.


Componentes Clave

1. Interoperabilidad con la API de Windows

<DllImport("kernel32.dll")>

Private Function OpenProcess(...) As IntPtr

OpenProcess: Obtiene un identificador (handle) para acceder a un proceso.


ReadProcessMemory/WriteProcessMemory: Funciones base para manipular memoria.

2. Obtención del Handle del Proceso

Private Function GetHandle(procName As String) As IntPtr

Busca procesos por nombre y abre un handle con permisos completos.

Nota: Si el proceso no existe, retorna IntPtr.Zero.


3. Resolución de Direcciones con Offsets

Private Function ResolvePointer(...) As IntPtr

Mecanismo:

Lee una dirección base desde la memoria.

Aplica offsets secuencialmente (ej: [0x10, 0x20, 0x30]).

Ajusta para arquitecturas de 32 o 64 bits (IntPtr.Size).


Uso típico: Acceder a datos en estructuras anidadas (ej: player→health→current_value).


4. Métodos Públicos para Tipos de Datos

Cada tipo de dato tiene funciones dedicadas para lectura/escritura:

' === Ejemplo para Integer ===

Public Function ReadInteger(...) As Integer

Public Sub WriteInteger(...)

Conversión: Usa BitConverter para transformar bytes al tipo de dato requerido.


Parámetro offsets: Permite trabajar con direcciones relativas (opcional).

Flujo de Trabajo

Obtener handle del proceso → GetHandle("notepad").

Calcular dirección final → ResolvePointer(...).

Leer o escribir datos → ReadProcessMemory/WriteProcessMemory.

Consideraciones Técnicas

Seguridad: Requiere ejecución con privilegios elevados (administrador).

Arquitectura: Compatible con procesos de 32 y 64 bits (gracias a IntPtr.Size).

Rendimiento: Las operaciones directas de memoria son rápidas pero riesgosas (pueden causar crashes si se usan incorrectamente).


Caso de Uso Ejemplo

' Leer la vida de un personaje en un juego (proceso "Game.exe")

Dim health As Integer = ReadInteger("Game", &H01A3B4C8, &h10, &h20)

' Escribir un nuevo valor

WriteInteger("Game", &H01A3B4C8, 100, &h10, &h20)

Ética y Legalidad

Aplicaciones válidas: Debugging de software propio, automatización de tareas.

Precaución: Modificar memoria de aplicaciones de terceros puede violar términos de servicio o leyes de propiedad intelectual. Usar solo con autorización. 


Archivo

Descargar
------------------------