elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  VEH Api Hook
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: VEH Api Hook  (Leído 8,493 veces)
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
VEH Api Hook
« en: 24 Marzo 2010, 15:10 pm »

El concepto de todo esto ya lo conocia pero por thread y gracias a Guy de GD conoci esta alternativa que trabaja de forma global en todo el proceso. El concepto base es generar una excepcion cada vez que se llama a la funcion o zona de codigo que nos interesa redireccionar, para eso pondremos PAGE_NOACCESS en la direccion:

Código:
api=(DWORD*)GetProcAddress(GetModuleHandle("user32.dll"),"MessageBoxA");
AddVectoredExceptionHandler(1,Redirector);
VirtualProtect(api,1,PAGE_NOACCESS,&oProt);

en AddVectoredExceptionHandler pondremos el primer parametro a 1 para que de todos los manejadores nos llame a nosotros primero, el segundo parametro es la funcion que controlara las excepciones.

Código:
LONG __stdcall Redirector(PEXCEPTION_POINTERS ep)
{
 if (ep->ExceptionRecord->ExceptionCode==EXCEPTION_ACCESS_VIOLATION)
 {
  if (ep->ContextRecord->Eip==(DWORD)api)
  {
   VirtualProtect(api,1,PAGE_EXECUTE,&oProt);
   ep->ContextRecord->Eip=(DWORD)_MsgBox;
   return EXCEPTION_CONTINUE_EXECUTION;
  }
 }
 return EXCEPTION_CONTINUE_SEARCH;
}

en esta funcion solo controlaremos 1 excepcion, si no es esta o la direccion no es la que nosotros esperamos pasaremos el control al siguiente manejador de excepciones (EXCEPTION_CONTINUE_SEARCH). en caso de ser la direccion que queremos hookear, damos permisos de ejecucion a la zona y la EIP apuntando a  nuestra funcion que seria algo asi:

Código:
UINT __stdcall _MsgBox(HWND h,char *Texto,char *Titulo,UINT Tipo)
{
 UINT r=0;
 r=MessageBox(h,"Mensaje manipulado","titulo",Tipo);
 VirtualProtect(api,1,PAGE_NOACCESS,&oProt);
 return r;
}

Las posibilidades no son pocas, es facil de implementar y no hay que modificar ni 1 solo byte del codigo original asi que las detecciones por opcodes o crc no serian efectivas. no solo podemos hookear si no implementar formas de evadir software "anti malware".

Se que no es nada nuevo, pero como no vi nada en el foro que hablase sobre esto pues lo dejo para el que le pueda interesar.


En línea

Jaixon Jax


Desconectado Desconectado

Mensajes: 859



Ver Perfil
Re: VEH Api Hook
« Respuesta #1 en: 24 Marzo 2010, 15:21 pm »

  Muy Buen Post Thanks  :D
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: VEH Api Hook
« Respuesta #2 en: 24 Marzo 2010, 15:30 pm »

Está bueno el post, no conocía éste modo de hacer hook, está original  :).

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: VEH Api Hook
« Respuesta #3 en: 24 Marzo 2010, 16:49 pm »

Intente hace un tiempo usar este tipo de Hook.... sin exito :-\

Cuando llegue a casa reviso y juego un poquito con el tema ;)

Muy bueno :D
En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: VEH Api Hook
« Respuesta #4 en: 24 Marzo 2010, 17:06 pm »

Buen artículo  :D
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: VEH Api Hook
« Respuesta #5 en: 24 Marzo 2010, 17:42 pm »

He estado probando en casita, y bueno :P He conseguido que vaya, por cierto hay un parametro muy interesante de VirtualProtectEx llamado hProcess :silbar: :silbar: :xD

No he conseguido aun hacerlo funcionar en VB, que raro no? :laugh:
En línea

Zzombi

Desconectado Desconectado

Mensajes: 174



Ver Perfil WWW
Re: VEH Api Hook
« Respuesta #6 en: 24 Marzo 2010, 19:58 pm »

me funciono perfecto  :)
gracias por compartirlo ctlon  :D
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: VEH Api Hook
« Respuesta #7 en: 25 Marzo 2010, 19:09 pm »

Citar
Intente hace un tiempo usar este tipo de Hook.... sin exito :-\

Usarias SEH que es por thread y por eso no te funcionaria, VEH es por proceso.
En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: VEH Api Hook
« Respuesta #8 en: 14 Febrero 2011, 22:38 pm »

Hay un pequeño detalle sobre el uso del veh hook (o esta forma de usarlo), y es que cuando llaman a VirtualProtect no están cambiando el acceso a X bytes de memoria, sino a las páginas donde se encuentran esos X bytes, dicho de otra forma:

Citar
    pag1   -    pag2
[...     XX][XX     ...]

estarían no solo cambiando los permisos de los bytes XXXX sinó de las dos páginas (cada página suele tener 512 bytes), por lo que podría pasar que al ejecutarse alguna parte de algunas de las páginas externas a los bytes que uno quiere proteger también se provoque una excepción.

S2

PD: se que el post es viejo pero creo que merece aclararse eso :P
En línea

pipaman

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: VEH Api Hook
« Respuesta #9 en: 10 Junio 2012, 01:39 am »

Si no te gusta el C++ lo mejor que podes usar es algún framework que te resuelva la parte de bajo nivel. Te recomiendo uno muy estable y potente. Con 10 lineas de codigo armas un hook:
http://www.nektra.com/products/deviare-api-hook-windows/

Saludos a todos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Hook] WH_CBT
Programación C/C++
BlackZeroX 2 2,550 Último mensaje 19 Enero 2011, 00:29 am
por BlackZeroX
[Solucionado] Hook sin DLL
Programación C/C++
Ca0s 0 2,093 Último mensaje 24 Enero 2011, 20:08 pm
por Ca0s
Winosck Hook Codigo de ejemplo
Programación C/C++
antrixro 0 2,030 Último mensaje 8 Febrero 2011, 19:17 pm
por antrixro
api hook
Programación Visual Basic
Cromatico 7 5,641 Último mensaje 21 Marzo 2011, 18:52 pm
por ntaryl
VB6 Hook Api
Programación Visual Basic
philipjfry99 0 2,674 Último mensaje 19 Marzo 2011, 23:51 pm
por philipjfry99
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines