Voy a iniciar tutorial de cómo hacer gancho "Hook" global.
Global porque todos los programas activos van a estar utizando.
vamos a utilizar la appinit_dll función.
(Sólo básico por el momento)
Para definir qué DLL sera nuestra appinit_dll, editamos en el registro de Windows las siguientes claves.
32-bits HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Windows\
64-bits HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\Windows\
Key "AppInit_DLLs", Ejemplo "C:\AppInitHook.dll"
Esto comprueba en: Module = kernel32.dll, función LoadAppInitDlls.
La DLL se recomienda escribir en C ++, lo básico es:
Código:
BOOL WINAPI DllMain(
__in HINSTANCE hInstance,
__in DWORD Reason,
__in LPVOID Reserved
)
{
switch (Reason)
{
case DLL_PROCESS_ATTACH:
//
break;
case DLL_THREAD_ATTACH:
//
break;
case DLL_PROCESS_DETACH:
//
break;
case DLL_THREAD_DETACH:
//
break;
}
return TRUE;
}
O sea
Cada vez que una llamada a una función externa de un DLL, el sistema operativo primero ejecutará las funciones de su DLL
Con eso podemos hacer hook, inyecciones, y muchas otras cosas, inyectar desvío de funciones como IsDebuggerPresent y otras técnicas anti-debuggers.
Por ahora solo, quien tiene interés en ese asunto, acompañe y también de ideas y aporte.
saludos