[TUTORIAL] Cómo enlazar la tabla de direcciones de importación - HOOK IAT

  • 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


268
Me Gusta
128
Temas

c0de

MOV EAX, EDX
Registrado
19 Abr 2020
Temas
128
Mensajes
245
Ubicación
Localhost
Mejores respuestas
0
Introducción

En mi tutorial anterior, hablé sobre el uso de Detours para conectar la API de Windows dentro de una aplicación de destino. Si bien Detours es extremadamente poderoso y fácil de usar, se abstrae y oculta muchos de los detalles detrás de varias llamadas de biblioteca. También tiene otra desventaja, ya que es muy conocido y fácil de detectar para ciertas herramientas anti - enganche. Incluso el software Anti-Cheat puede recorrer fácilmente el proceso y determinar si ha sido manipulado.

Si bien nunca habrá una solución mágica para el enganche que sea a la vez fácil de usar y difícil de detectar, existe una pequeña esperanza de escribir sus propias herramientas de enganche por esta misma razón (cuanto menos conocido es algo, más difícil es). detectar). Aparte de la detección, otra razón para querer escribir su propia solución de enganche puede ser tan simple como querer saber cómo se hace y cómo se puede detectar.

Este será el primer tutorial de una serie sobre la vinculación de API sin depender de bibliotecas externas. En el próximo tutorial, cubriré cómo puede conectar el IAT de un proceso remoto sin cargarlo dentro de su espacio de direcciones.

1650126612416.png
"Nadie se acurruca con el enganche: ¡te abrochas y sientes las g!"

¿Qué es el IAT?

Dependiendo de cuánto haya examinado el formato Portable Executable (PE), es posible que tenga una familiaridad pasajera con la estructura básica. El encabezado PE contiene una serie de listas vinculadas que contienen información diferente sobre el ejecutable: la estructura que nos interesa es la tabla de direcciones de importación. Como sugiere el nombre, esta tabla contiene una lista de todas las funciones importadas por el ejecutable que reside en otras bibliotecas del sistema.

En tiempo de ejecución, el sistema operativo analizará la tabla de importación, intentará cargar los archivos DLL especificados y resolverá las direcciones de las funciones importadas. Si este proceso falla, la aplicación no podrá cargarse y mostrará un error en la pantalla:

1650126641924.png

En este caso, no pudo encontrar la biblioteca en tiempo de ejecución de Visual Studio.

Tenemos dos formas diferentes de atacar esto:
  1. Modifique el ejecutable en el disco (no se recomienda ya que la mayoría de las aplicaciones están firmadas hoy en día y cualquier aplicación que modifique los archivos ejecutables será marcada por la mayoría de los programas antivirus).
  2. Inyecte código en tiempo de ejecución y actualice el IAT.
Al inyectar código en tiempo de ejecución, podemos evitar dejar rastros en el disco. Si bien aún no es indetectable, es mucho menos sospechoso o detectable que escribir directamente en el archivo. Todavía tendremos que lidiar con las comprobaciones en memoria, pero son más fáciles de evadir de lo que piensas.

Inyección de código

Ya que vamos a comenzar con lo básico, comencemos conectando nuestros propios procesos IAT. ¡Sobrescribiremos la dirección de Kernel32! Sleep con nuestra propia función. Definamos el esqueleto de nuestro programa de la siguiente manera:

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

El PE Header

Afortunadamente para nosotros, el formato PE Header está muy bien
Porfavor, Acceder o Registrarse para ver el contenido de las URL!
. Hay código en Internet para analizarlo y procesar la información. Vamos a analizar específicamente el IAT, por lo que necesitaremos ubicarlo dentro del encabezado.

Comience obteniendo un puntero al inicio del encabezado PE.

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

Si compila y ejecuta ese código, debería volcar todos los módulos importados que usa su proceso (pueden diferir según su compilador):

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

Entonces, ahora que hemos ubicado nuestros módulos, procesemos las funciones importadas:

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

Ahora vamos a dar ese giro.

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

¡Lindo! Ahora que hemos descargado con éxito la función importada de la aplicación, ahora podemos pasar a parchear la tabla de importación.

Parcheando el IAT

Esto es bastante sencillo. Una vez que hemos localizado nuestra función deseada, llamamos a VirtualProtect para eliminar la protección de la memoria, escribimos nuestra nueva dirección y luego restauramos la protección de la memoria.

Aquí está la función HookIAT actualizada:

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

Bastante fácil, ¿verdad? Ahora podemos simplemente llamarlo desde nuestra función principal:

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

¡Y eso es! Ahora puede conectar cualquier WINAPI que desee. También puede empaquetar esto en una DLL e inyectarlo en cualquier aplicación que desee.

Creditos
timb3r
 
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