Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: blipi en 5 Febrero 2014, 03:04 am



Título: [Librería C++] Detours, Codecaves, Return Adress Spoofing y mucho más
Publicado por: blipi en 5 Febrero 2014, 03:04 am
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
  1. API<SHORT, int>* api = new API<SHORT, int>();
  2. api->AutoLoad("user32.dll", "GetAsyncKeyState")->AutoFakeWithinModule(GetModuleHandle(NULL));
  3.  
  4. // Llamada
  5. (*api)(VK_DOWN);
  6.  


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
  1. // Declaramos
  2. Detour<int, int, char*, int, int>* recvDetour = NULL;
  3.  
  4. // Funcion
  5. int WINAPI d_recv(SOCKET s, char *buf, int len, int flags)
  6. {
  7. return (*recvDetour)(s, buf, len, flags);
  8. }
  9.  
  10. // Creacion
  11. recvDetour = new Detour<int, int, char*, int, int>();
  12. recvDetour->Load("WSOCK32.dll", "recv", (BYTE*)d_recv);
  13.  

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


Título: Re: [Librería C++] Detours, Codecaves, Return Adress Spoofing y mucho más
Publicado por: blipi en 7 Febrero 2014, 00:33 am
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!