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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hooks sin dll
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hooks sin dll  (Leído 2,341 veces)
noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Hooks sin dll
« en: 12 Septiembre 2013, 21:25 pm »

Se que algunos me vais a decir que no se puede, dado que en la MSDN pone esto:
Citar
A global hook procedure can be called in the context of any application in the same desktop as the calling thread, so the procedure must be in a separate DLL module.

Bueno por mucho que en la información de la MSDN diga que no se pueden hacer hooks globales sin una dll es mas que posible y algo real. Ya lo hice antes en otro lenguaje (VB6).

El problema es el siguiente aunque se parece ser que se instalan bien los hooks mi callback fuction nunca es llamada y ademas el ordenador se ralentiza. Estoy intentado hacer los hooks desde un programa de consola, y creo que es aqui donde reside el problema ya que encontre un codigo donde enseñaba a hacer los hook sin dll pero usaba tambien una interfaz grafica, al modificar ese codigo para que el programa fuese simplemente de consola empezo a dar los mismos problemas que mi programa.

Aqui el code para hacer el hook sin dll: http://www.mpcforum.com/showthread.php?78344-SRC-Global-Hook-without-dll-(C-)

Aqui mi code:
Código
  1. #define _WIN32_WINNT 0x0400
  2.  
  3. #include <windows.h>
  4. #include <iostream>
  5.  
  6. HHOOK hook;
  7.  
  8. __declspec(dllexport) LRESULT CALLBACK KeyboardHookProc (int nCode,WPARAM wParam,LPARAM lParam)
  9. {
  10.    if  ((nCode == HC_ACTION) && ((wParam == WM_KEYDOWN) || (wParam == WM_SYSKEYDOWN)))
  11.    {
  12.        KBDLLHOOKSTRUCT hookstruct = *((KBDLLHOOKSTRUCT*)lParam);
  13.  
  14. //............. codigo manejador del hook
  15.  
  16.    }
  17.    return CallNextHookEx(hook, nCode, wParam, lParam);
  18. }
  19.  
  20. int main()
  21. {
  22. hook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyboardHookProc,GetModuleHandle(NULL),NULL);
  23.  
  24. system("pause");
  25.  
  26. UnhookWindowsHookEx(hook);
  27.  
  28. return 1;
  29. }

Basicamente hace lo mismo que el codigo que habia en el link solo que sin la interfaz asique estoy un poco confundido de porque no funciona y como arreglarlo. Primero crei que habia que crear el callback como si fuese una funcion de una DLL  y he definido la funcion como lo hacian en el otro code pero eso sigue sin funcionar. ¿Alguna idea? Gracias por adelantado, llevo mas de una semana comiendome el coco con esto XD


« Última modificación: 12 Septiembre 2013, 21:27 pm por noele1995 » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Hooks sin dll
« Respuesta #1 en: 12 Septiembre 2013, 22:02 pm »

No estas procesando los mensajes ... no te llegan nunca, bloqueas todo en system. Proba con el tipico bucle de mensajes:

Código
  1. BOOL bRet;
  2.  
  3. while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)
  4. {
  5.    if (bRet == -1)
  6.    {
  7.        // handle the error and possibly exit
  8.    }
  9.    else
  10.    {
  11.        TranslateMessage(&msg);
  12.        DispatchMessage(&msg);
  13.    }
  14. }
  15.  


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Hooks sin dll
« Respuesta #2 en: 12 Septiembre 2013, 22:35 pm »

Oh vale ahi esta el problema jeje, bueno los hooks aunque los pase a un proyecto aparte los pensaba incluir en el troyano que estoy programando, pero yo ya tengo un bucle que esta procesando el envio y recibo de los sockets, ¿deberia crear un thread aparte para el bucle de los mensajes verdad? Muchas gracias no habia caido en eso XD
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Hooks sin dll
« Respuesta #3 en: 13 Septiembre 2013, 01:12 am »

De nada y no es mala idea usar un hilo.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hooks, WH_KEYBOARD.
Programación Visual Basic
Chief 7 2,648 Último mensaje 1 Octubre 2005, 04:50 am
por Chief
Hooks en VB
Programación Visual Basic
Hendrix 0 1,168 Último mensaje 12 Septiembre 2006, 18:13 pm
por Hendrix
Hooks « 1 2 »
Programación Visual Basic
baZZ 11 3,965 Último mensaje 15 Junio 2007, 21:09 pm
por Hendrix
problema con HOOKS?????
Programación Visual Basic
leo17 0 1,065 Último mensaje 8 Abril 2008, 21:21 pm
por leo17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines