[TUTORIAL] Obteniendo la dirección base del modulo dwGetModuleBaseAddress

  • 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


255
Me Gusta
115
Temas

c0de

MOV EAX, EDX
Top Publicador Del Mes
Registrado
19 Abr 2020
Temas
115
Mensajes
221
Ubicación
Localhost
Mejores respuestas
0
Todos los archivos .exe y .dll cuando se cargan en la memoria se denominan "módulos".

Al agregar direcciones a su tabla de Cheat Engine, y especialmente al usar punteros, a menudo encontrará la dirección que se muestra de esta manera:

1589861725935.png

O tal vez así:

server.dll + 004EE83

Esto está usando el desplazamiento relativo de la dirección de un módulo. Para ver si una dirección está desplazada de un determinado módulo, asegúrese de habilitar esto:

1589861751538.png

Luego, en el visor de memoria, use "Ir a la dirección" a la dirección. Independientemente de si se trata de datos o código, esto le dirá de qué módulo está desplazado.

Para ver todos los módulos cargados por el proceso en Cheat Engine y ver sus direcciones, haga esto:

1589861766802.png

También puede usar Dissect PE Headers para ver información relativa:

1589862510982.png

MZ-Start es la dirección del módulo tal como está actualmente cargado en la memoria. ImageBase preferido se analiza directamente desde el encabezado PE y es la ubicación en la que prefiere cargarse. Si esta dirección de memoria ya está tomada, se reubicará.

Cuando se ejecuta un .exe, el cargador de Windows crea un proceso para él y le da su propio espacio de memoria virtual. El cargador carga el ejecutable en la memoria y luego en los archivos .dlls que son llamados por el proceso. El encabezado PE para .dll define una dirección de ImageBase. El cargador de Windows intentará cargar el archivo .dll en el espacio de memoria virtual del proceso que lo requiere. Si ese espacio ya está ocupado, se cargará en una ubicación diferente. Si esto sucede, las direcciones de códigos rígidos en nuestros hacks no funcionarán.

Ahora digamos que tenemos un puntero:
ac_client.exe + 109B74

Ahora el ImageBase extraído del encabezado PE de ac_client.exe es "00400000".
Solo podemos tener un ejecutable para cada proceso, que es un espacio de memoria vacío hasta que se carga ac_client.exe. No hay nada que bloquee la carga de ac_client.exe en su ImageBase. Entonces, la dirección base de un .exe es siempre la misma.

El ÚNICO momento en que no se carga un archivo .exe en la base de imágenes almacenada en los encabezados PE es cuando ASLR (Aleatorización del diseño del espacio de direcciones) está habilitado en el sistema operativo y el indicador DynamicBase está configurado para permitir que el sistema operativo aleatorice la dirección virtual del módulo .

Podemos evaluar esto antes de colocarlo en el código.
ac_client.exe + 109B74
00400000 + 109B74
509B74

Esta es la definición de una dirección estática, puede ser relativa a la dirección base de un ejecutable en el binario en el disco, pero siempre es estática en la memoria después de que se han producido reubicaciones.

Pero para .DLL que se pueden reubicar:

"server.dll + 004EE83" funciona en Cheat Engine porque Cheat Engine evalúa la dirección de server.dll. CE obtendrá la dirección de server.dll y la reemplazará con la dirección en la que se carga el módulo.
Entonces, digamos que la dirección del módulo server.dll es 0x10000000, cheat Engine evaluará:

server.dll + 004EE83
0x10000000 + 004EE83
1004EE83

La evaluación anterior se realiza mediante cheat engine mientras el programa se está ejecutando.

Pero cuando intenta utilizar esto en un entrenador externo, debe evaluar "server.dll" + 004EE83 usted mismo. Hay varias formas de hacerlo y discutiremos una de ellas ahora.

Para hacer esto externamente, puede usar esta función que se ha usado ampliamente llamada dwGetModuleBaseAddress.

Básicamente, utiliza la API de Windows
Porfavor, Acceder o Registrarse to view URLs content!
para obtener una instantánea de todos los módulos cargados para el proceso dado, luego itera a través de todos los módulos cargados y encuentra el módulo con el nombre del módulo que le asignó. Devuelve un uintptr_t a la dirección del módulo. Ingresa el ProcessID y el nombre del módulo y sale la dirección del módulo.
Debe configurar su proyecto en UNICODE para que esto funcione, si no es un novato, puede cambiarlo fácilmente para que funcione con MBCS.

Función:

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

La llamada a la función

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

Puede obtener más información sobre ToolHelp32Snapshot:
Porfavor, Acceder o Registrarse to view URLs content!

Porfavor, Acceder o Registrarse to view URLs content!


Creditos
Rake
 
  • Like
Reacciones : Notorious
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