[TUTORIAL] ReadProcessMemory & WriteProcessMemory

  • Hola Invitado, ¿Quieres ganar dinero con GamerzHacking?, estamos necesitando creadores de contenido en game hacking o pirateria de juegos ingresa al siguiente enlance para mayor informacion AQUI
  • Hola Invitado, ¿Creas contenido sobre game hacking en tu blog o sitio web?, ¿Te gustaria formar una alianza para asi poder generar mas trafico en tu sitio y seguir creciendo como comunidad? INGRESA AQUI


274
Me Gusta
128
Temas

c0de

MOV EAX, EDX
Top Publicador Del Mes
Registrado
19 Abr 2020
Temas
128
Mensajes
249
Ubicación
Localhost
Mejores respuestas
0
Hola amigos de GamerzHacking.

Este tutorial ha sido elaborado para los principiantes que recien empienzan en este mundo. Una gran parte de la piratería es leer y escribir en la memoria. Este tutorial cubrirá los conceptos básicos de cómo funcionan ReadProcessMemory y WriteProcessMemory, con suerte, aclarará las preguntas que los hackers principiantes tienen sobre él.

Primero me gustaría decir que esto va a ser extremo sobre matar. Recomiendo antes de leer esto, mire la página de MSDN en RPM (ReadProcessMemory) y WPM (WriteProcessMemory) y, si comprende, no se moleste en leer este tutorial. Enlaces:

Porfavor, Acceder o Registrarse para ver el contenido de las URL!

Porfavor, Acceder o Registrarse para ver el contenido de las URL!


Entonces comencemos.

ReadProcessMemory y WriteProcessMemory son funciones que se usan comúnmente en la creación de hacks externos. ¡Casi todos los hacks externos tienen memoria de proceso de lectura o escritura, por lo que es muy importante aprender! Veamos un pequeño código.

C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

Vamos a repasar algunas cosas primero. Este código no hará nada porque no hay un handle para el juego que potencialmente estamos intentando piratear, por lo que hProcHandle no está definido. Otra cosa a tener en cuenta es que siempre que use ReadProcessMemory y WriteProcessMemory querrá incluir la biblioteca kernel32 porque WriteProcessMemory, ReadProcessMemory son parte de ella. No incluirlo hará que WriteProcessMemory se muestre como un error. Normalmente incluyo windows.h en lugar de kernel32 porque windows.h incluye kernel32 y otras bibliotecas como memoryapi.h y WinBase.h y estas bibliotecas tienen otras características útiles.

Entonces, el código visto arriba es encontrar el playerObjectAddress. Si estás leyendo esto, probablemente entiendas que hay un puntero estático que siempre apunta a la dirección del objeto del jugador en un juego. Dado que la dirección del objeto del jugador es dinámica cada vez que el juego se cierra y se abre, la dirección del objeto del jugador cambia, por lo que debemos leer qué señala pLocalPlayer (nuestro puntero estático que siempre apunta a la dirección del jugador) cada vez que se vuelve a abrir el juego. Este es un ejemplo perfecto del uso de RPM.

así que analicemos las RPM:

C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

hProcHandle nuestro primer argumento en la función es nuestro identificador de la ventana desde la que estamos leyendo, en este caso sería un juego

(LPCVOID) pLocalPlayer es la variable que se lee. Toma lo que está almacenado en pLocalPlayer y lee esa dirección, por eso pLocalPlayer es de tipo DWORD, pero puede notar que hay (LPCVOID) delante de él. Esto se debe a que tenemos que escribir cast nuestra variable en LPCVOID porque RPM solo exceptúa LPCVOID para un argumento y no DWORD. También puede definir su variable como LPCVOID al principio y no escribir emitir nada. LPCVOID significa puntero constante a cualquier tipo.

&playerObjectAddress esta es la variable que vamos a usar para almacenar lo que se leyó de pLocalPlayer. El símbolo & es la dirección del operador y simplemente devuelve la dirección de la variable en la que opera.

El siguiente argumento sizeof() es cuántos bytes de datos queremos devolver o leer. sizeof(playerObjectAddress) solo dice que queremos leer 4 bytes porque playerObjectAddress es de tipo DWORD, que es de 4 bytes. Hacemos sizeof (playerObjectAddress) para que nunca tengamos que preocuparnos por devolver el número incorrecto de bytes.

El siguiente argumento lo mantenemos NULL porque es una variable que almacena la cantidad de bytes transferidos. No nos importa cuántos bytes hayamos leído y establecerlo en NULL ignora este argumento.

Desglosado, puede ver RPM como esto y también puede usar esto como plantilla al escribir código mientras comienza:

C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

WPM es muy similar a RPM y no voy a entrar en tantos detalles. Si comprende RPM, entonces esto debería explicarse por sí mismo.

C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

Todo es lo mismo que RPM, excepto la dirección para leer que se reemplaza con la variable que contiene la dirección de memoria en la que desea escribir. La variable que contiene la dirección en la que escribir se escribe en LPVOID y no LPCVOID.

El último cambio es que variableToStoreReadInformation se reemplaza con la variable que contiene el valor que desea escribir. Puede usar la línea de código WPM anterior como plantilla para ayudarlo a escribir su código. Mire a través de algún código fuente en esta vista e intente seguir la lógica con RPM y WPM para familiarizarse con cuándo y cómo las personas usan estas funciones en su código.

Otra cosa a destacar es que, dado que WPM y RPM son funciones, no puede dejar ningún argumento en blanco. Es por eso que escribimos NULL en lugar de saltarlo. WPM y RPM son funciones normales y por eso deben tratarse como ellos.

Creditos
wtlyons
 
AdBlock Detectado

Lo sentimos, los anuncios son molestos!

Claro, el software de bloqueo de anuncios hace un gran trabajo al bloquear anuncios, pero también bloquea funciones útiles de nuestro sitio web. Para obtener la mejor experiencia en el sitio, deshabilite su AdBlocker.

He desactivado AdBlock    No, gracias