[Librería C++] Detours, Codecaves, Return Adress Spoofing y mucho más

Iniciado por blipi, 5 Febrero 2014, 03:04 AM

0 Miembros y 1 Visitante están viendo este tema.

blipi

xHacking

Buenas a todos!

Hoy os traigo mi nueva creación, llamada xHacking. Se trata de una librería programada en C++11 especialmente diseñada para la ingeniería reversa.

Incluye todo tipo de funciones, entre las que destacan la creación de Detours, Codecaves, memory breakpoints (con PAGE_GUARD a modo de codecave) y llamadas a APIs con spoofing de la dirección de retorno.

Os dejo el link a github:
https://github.com/blipi/xHacking

Atención: Requiere compatibilidad con C++11. Funciona con Visual Studio 2013, y *quizás* con 2012. Inferior seguro que no. Aún no he podido dar soporte a otros compiladores, pero está en la lista.

Cualquier error por favor usad el sistema de issues de allí mismo. Y si queréis nuevas funcionalidades u os animáis a programar, os invito a usar los push requests o postearlo aquí mismo!

Os pongo algunos ejemplos de como se usaría la librería:

API:
Vamos a spoofer el "GetAsyncKeyState". Suponemos que estamos ya en el módulo principal.
Encontrará automáticamente un punto en el código (un RET) en el que modificar el punto de retorno de nuestro call.
Código (cpp) [Seleccionar]

API<SHORT, int>* api = new API<SHORT, int>();
api->AutoLoad("user32.dll", "GetAsyncKeyState")->AutoFakeWithinModule(GetModuleHandle(NULL));

// Llamada
(*api)(VK_DOWN);



DETOURS:
De momento no desensambla el código de destino, por lo que debemos asegurarnos antes de que tenemos los 5/6 bytes disponibles y que no son JMP/CALL/etc. No es el caso con recv.
Código (cpp) [Seleccionar]

// Declaramos
Detour<int, int, char*, int, int>* recvDetour = NULL;

// Funcion
int WINAPI d_recv(SOCKET s, char *buf, int len, int flags)
{
return (*recvDetour)(s, buf, len, flags);
}

// Creacion
recvDetour = new Detour<int, int, char*, int, int>();
recvDetour->Load("WSOCK32.dll", "recv", (BYTE*)d_recv);


Y aún hay más funciones que os dejo experimentar a vosotros mismos!

blipi

He liberado el código (cpp). No lo había hecho antes porque necesitaba un poco de limpieza.

Espero que le sirva a alguien, hay cosillas interesantes!