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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


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

Desconectado Desconectado

Mensajes: 66


www.onlyarg.com.ar


Ver Perfil WWW
Hook winapi global ?
« en: 19 Septiembre 2012, 20:08 pm »

Hola :)

Estoy tratando de hookear el Sleep pero no logro que sea global.Se puede hacer eso ?.

Esto es lo que estoy usando ahora:

Código:
#include <windows.h>
#include <stdio.h>

DWORD HookFunction(LPCSTR lpModule, LPCSTR lpFuncName, LPVOID lpFunction, unsigned char *lpBackup);
BOOL UnHookFunction(LPCSTR lpModule, LPCSTR lpFuncName, unsigned char *lpBackup);
void WINAPI Sleep_hooked(DWORD ms, unsigned int call_addr);
BYTE BackUp[6];

void WINAPI Sleep_hooked(DWORD ms, unsigned int call_addr)
{
    printf("Hooked :) -  ms: %d\n", ms);
    UnHookFunction("kernel32.dll", "Sleep", BackUp);
    Sleep(ms);
    HookFunction("kernel32.dll", "Sleep", (LPVOID)Sleep_hooked, BackUp);
}

DWORD HookFunction(LPCSTR lpModule, LPCSTR lpFuncName, LPVOID lpFunction, unsigned char *lpBackup)
{
DWORD dwAddr = (DWORD)GetProcAddress(GetModuleHandle(lpModule), lpFuncName);
BYTE jmp[6] = { 0xe9,
0x00, 0x00, 0x00, 0x00,
0xc3
};
 
ReadProcessMemory(GetCurrentProcess(), (LPVOID)dwAddr, lpBackup, 6, 0);
 
DWORD dwCalc = ((DWORD)lpFunction - dwAddr - 5);
 
memcpy(&jmp[1], &dwCalc, 4);
 
WriteProcessMemory(GetCurrentProcess(), (LPVOID)dwAddr, jmp, 6, 0);
 
return dwAddr;
}
 
BOOL UnHookFunction(LPCSTR lpModule, LPCSTR lpFuncName, unsigned char *lpBackup)
{
DWORD dwAddr = (DWORD)GetProcAddress(GetModuleHandle(lpModule), lpFuncName);
 
if (WriteProcessMemory(GetCurrentProcess(), (LPVOID)dwAddr, lpBackup, 6, 0))
{
return TRUE;
}
return FALSE;
}

int main(void)
{
    HookFunction("kernel32.dll", "Sleep", (LPVOID)Sleep_hooked, BackUp);
    Sleep(1000);
    printf("test\n");
     Sleep(1500);
    printf("test2\n");
    UnHookFunction("kernel32.dll", "Sleep", BackUp);
}
Solo hookea los dos Sleep locales.


En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Hook winapi global ?
« Respuesta #1 en: 20 Septiembre 2012, 05:36 am »

no se puede, solo con un driver o con una dll inyectándola en todos los procesos...

S2


En línea

Destro-

Desconectado Desconectado

Mensajes: 66


www.onlyarg.com.ar


Ver Perfil WWW
Re: Hook winapi global ?
« Respuesta #2 en: 20 Septiembre 2012, 06:12 am »

Ah,ok.
Si o si inyectando dll ?,puede ser inyectando code?


pd:Ya sacaste el cheat privado para el 13.0 ?,para estar atento en los pcw xd.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Equivalencia de función WINAPI unsigned int WINAPI myRun en Windows con Ubuntu
Programación C/C++
bertamax 2 3,134 Último mensaje 7 Agosto 2010, 16:27 pm
por bertamax
Problemas con WinApi
Programación C/C++
Nobody12 0 3,167 Último mensaje 10 Enero 2011, 21:47 pm
por Nobody12
Problema con WINAPI
Programación C/C++
..:ALT3RD:.. 7 3,797 Último mensaje 26 Agosto 2011, 21:35 pm
por Queta
winsock + winapi en C
Programación C/C++
bdoX 2 2,642 Último mensaje 10 Diciembre 2011, 18:40 pm
por bdoX
[APORTE] Hook global de teclado (sin DLL) VB .NET
.NET (C#, VB.NET, ASP)
kub0x 2 6,585 Último mensaje 14 Abril 2012, 21:50 pm
por kub0x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines