HOOK PROBLEME DLL

Résolu
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011
-
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011
-
hello, je vais une dll de hook et j'obtient sa :

MON CODE :

#include <windows.h>

FARPROC fpRegQueryValueEx; // Buffer de l'adresse de la fonction
FARPROC fpRegOpenKey; // Buffer de l'adresse de la fonction
FARPROC fpRegCreateKeyEx; // Buffer de l'adresse de la fonction
FARPROC fpRegOpenKeyEx; // Buffer de l'adresse de la fonction
HMODULE Advapi32;

void *DetourFunc(BYTE *src, const BYTE *dst, const int len)
{
    BYTE *jmp = (BYTE*)malloc(len+5);
    DWORD dwback;

    VirtualProtect(src, len, PAGE_READWRITE, &dwback);

    memcpy(jmp, src, len);    jmp += len;
   
    jmp[0] = 0xE9;
    *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;

    src[0] = 0xE9;
    *(DWORD*)(src+1) = (DWORD)(dst - src) - 5;

    VirtualProtect(src, len, dwback, &dwback);

    return (jmp-len);
}

bool RetourFunc(BYTE *src, BYTE *restore, const int len)
{
    DWORD dwback;
       
    if(!VirtualProtect(src, len, PAGE_READWRITE, &dwback))    { return false; }
    if(!memcpy(src, restore, len))                            { return false; }

    restore[0] = 0xE9;
    *(DWORD*)(restore+1) = (DWORD)(src - restore) - 5;

    if(!VirtualProtect(src, len, dwback, &dwback))            { return false; }
   
    return true;
}   

WINADVAPI LONG hkRegQueryValueEx(HKEY hKey,LPCTSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData)
{
    return 0;
}

WINADVAPI LONG hkRegOpenKey(HKEY hKey,LPCTSTR lpSubKey,PHKEY phkResult)
{
    return 0;
}

WINADVAPI LONG hkRegCreateKeyEx(HKEY hKey,LPCTSTR lpSubKey,DWORD Reserved,LPTSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition)
{
    return 0;
}

WINADVAPI LONG hkRegOpenKeyEx(HKEY hKey,LPCTSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult)
{
    return 0;
}

WINAPI DllMain(HANDLE hProc,DWORD reason,LPVOID reserved)
{
    switch(reason)
    {
        case DLL_PROCESS_ATTACH:
        HMODULE advapi32 = LoadLibrary("Advapi32.dll");   

        fpRegQueryValueEx = GetProcAddress(advapi32,"RegQueryValueEx"); // Adresse de la fonction
        fpRegOpenKey = GetProcAddress(advapi32,"RegOpenKey"); // Adresse de la fonction
        fpRegCreateKeyEx = GetProcAddress(advapi32,"RegCreateKeyEx"); // Adresse de la fonction
        fpRegOpenKeyEx = GetProcAddress(advapi32,"RegOpenKeyEx"); // Adresse de la fonction

        DetourFunc((BYTE*) fpRegQueryValueEx,(BYTE*) &hkRegQueryValueEx,5); // Hook avec jmp 5
        DetourFunc((BYTE*) fpRegOpenKey,(BYTE*) &hkRegOpenKey,5); // Idem
        DetourFunc((BYTE*) fpRegCreateKeyEx,(BYTE*) &hkRegCreateKeyEx,5); // Idem
        DetourFunc((BYTE*) fpRegOpenKeyEx,(BYTE*) &hkRegOpenKeyEx,5); // Idem
        return true;
    }
}

MON LOG :

 , Compilation...
main.cpp
c:\Documents and Settings\Jean.PCTEK\Bureau\RegSpy\RegSpyDll\main.cpp(45) : error C2491: 'hkRegQueryValueEx' : définition de dllimport fonction non autorisée
c:\Documents and Settings\Jean.PCTEK\Bureau\RegSpy\RegSpyDll\main.cpp(50) : error C2491: 'hkRegOpenKey' : définition de dllimport fonction non autorisée
c:\Documents and Settings\Jean.PCTEK\Bureau\RegSpy\RegSpyDll\main.cpp(55) : error C2491: 'hkRegCreateKeyEx' : définition de dllimport fonction non autorisée
c:\Documents and Settings\Jean.PCTEK\Bureau\RegSpy\RegSpyDll\main.cpp(60) : error C2491: 'hkRegOpenKeyEx' : définition de dllimport fonction non autorisée

ou est le probleme ?

merci

4 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
WINADVAPI LONG hkRegQueryValueEx(HKEY hKey,LPCTSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData)
{
    return 0;
}

devient

// Déclaration, avec WINADVAPI
WINADVAPI LONG hkRegQueryValueEx(HKEY hKey,LPCTSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);

// Définition, sans WINADVAPI
LONG hkRegQueryValueEx(HKEY hKey,LPCTSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData)

{

    return 0;

}

Et pareil pour les autres fonctions à exporter

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
http://msdn2.microsoft.com/en-us/library/62688esh.aspx



Le __declspec(dllimport) est a mettre uniquement sur la déclaration, pas la définition

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

pourrait tu me rediger un exemple si tu a le temps, car apriori cela ne marche pas pour moi.
merci
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

merci beaucoup