c0de
Administrador
- Desde
- 19 Abr 2020
- Mensajes
- 329
- Tema Autor
- #1
![sddefault.jpg](/proxy.php?image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F2BoZJtRa5cg%2Fsddefault.jpg&hash=e6c6d71a9a3f76ee44f6cb84c89ac8a1)
Detours en C++ para Game Hacking
Introducción
En el ámbito del game hacking, una técnica ampliamente utilizada es el uso de detours en C++. Los detours son un método para interceptar y redirigir llamadas a funciones en tiempo de ejecución. Esta técnica permite a los hackers modificar el comportamiento del juego sin alterar su código fuente directamente. En este artículo, exploraremos en detalle qué son los detours, cómo funcionan y proporcionaremos ejemplos prácticos utilizando juegos populares.¿Qué son los Detours?
Los detours son una técnica que permite interceptar llamadas a funciones y redirigirlas a una función de reemplazo o "hook". Esto se logra modificando las direcciones de las funciones en la memoria para que apunten a nuestro código personalizado. Esta técnica es especialmente útil en el game hacking para modificar el comportamiento de funciones específicas del juego, como la detección de colisiones, la gestión de recursos o la lógica del juego.Funcionamiento de los Detours
El proceso básico de implementación de un detour en C++ implica los siguientes pasos:- Localización de la función objetivo: Identificar la dirección en memoria de la función que queremos interceptar.
- Creación del hook: Escribir una función personalizada que reemplazará a la función original.
- Modificación de la dirección de la función: Cambiar la dirección de la función original para que apunte a nuestra función personalizada.
- Restauración de la función original: En caso de ser necesario, permitir que la ejecución vuelva a la función original después de realizar nuestras modificaciones.
Ejemplo Práctico: Hooking en Assault Cube
Para ilustrar cómo funcionan los detours en C++, utilizaremos el juego Assault Cube, un juego de disparos en primera persona de código abierto. En este ejemplo, interceptaremos la función encargada de actualizar la munición del jugador para proporcionar munición infinita.Paso 1: Localización de la Función Objetivo
Utilizando una herramienta de análisis de memoria como Cheat Engine, localizaremos la dirección de la función que se encarga de disminuir la munición al disparar.Paso 2: Creación del Hook
Escribimos una función en C++ que se ejecutará en lugar de la función original. Esta función simplemente ignorará la operación de disminución de munición, proporcionando así munición infinita.
C++:
Por favor,
Acceder
o
Regístrate para ver el contenido de los códigos!
Paso 3: Modificación de la Dirección de la Función
En el código anterior, utilizamos VirtualProtect para cambiar los permisos de memoria y permitir la escritura en la dirección de la función objetivo. Luego, escribimos un salto (opcode 0xE9) seguido de la dirección relativa de nuestra función hook.Paso 4: Restauración de la Función Original
En este ejemplo, no restauramos la función original, ya que queremos que la munición sea infinita indefinidamente. Sin embargo, en otros casos, puede ser necesario permitir que la ejecución vuelva a la función original después de realizar nuestras modificaciones.Ejemplo Práctico: Hooking en Counter-Strike: Global Offensive (CS)
Ahora, veamos otro ejemplo utilizando Counter-Strike: Global Offensive (CS). En este caso, implementaremos un detour para modificar la precisión de las armas.
Paso 1: Localización de la Función Objetivo
Utilizando IDA Pro, localizamos la función responsable de calcular la precisión de las armas.Paso 2: Creación del Hook
Escribimos una función en C++ que se ejecutará en lugar de la función original y aumentará la precisión de las armas.
C++:
Por favor,
Acceder
o
Regístrate para ver el contenido de los códigos!