2010-12-03 106 views

Répondre

0

SetWindowsHookEx ne sera pas utile du tout - il offre des fonctionnalités différentes.

Vérifiez si https://web.archive.org/web/20080212040635/http://www.codeproject.com/KB/system/RegMon.aspx aide. RegMon de SysInternals utilise un pilote en mode noyau qui est très compliqué.

Mise à jour: Notre société offre des produits CallbackRegistry, qui vous permet de suivre les opérations de registre sans tracas. Et BTW nous offrons des licences non commerciales gratuites sur demande (sous réserve d'approbation au cas par cas).

2

lire sur la théorie de la DLL Injection ici: http://en.wikipedia.org/wiki/DLL_injection

Cependant, je vais vous fournir un extrait d'injection de DLL ici: http://www.dreamincode.net/code/snippet407.htm

Il est assez facile de faire ce genre de choses une fois que vous êtes Dans la mémoire d'une application externe, lors de l'injection, vous pourriez tout aussi bien faire partie du processus.

Il y a quelque chose appelé détourage, que je crois est ce que vous cherchez, il accroche simplement une fonction, et quand ce processus appelle, il exécute votre fonction à la place. (Pour veiller à ce qu'il ne tombe pas en panne, appelez la fonction à la fin de votre fonction)

Donc, si vous vouloir écrire votre propre fonction sur CreateRegKeyEx

(http://msdn.microsoft.com /en-us/library/ms724844%28v=vs.85%29.aspx)

Il pourrait ressembler à ceci:

LONG WINAPI myRegCreateKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD Reserved, LPTSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition) 
    { 
      //check for suspicious keys being made via the parameters 
      RegCreateKeyEx(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition); 
    } 

Vous pouvez obtenir une bibliothèque de détour très bien écrit appelé DetourXS ici: http://www.gamedeception.net/threads/10649-DetourXS

Voici son code d'exemple de la façon d'établir un détour à l'utiliser:

#include <detourxs.h> 

    typedef DWORD (WINAPI* tGetTickCount)(void); 
    tGetTickCount oGetTickCount; 

    DWORD WINAPI hGetTickCount(void) 
    { 
     printf("GetTickCount hooked!"); 
     return oGetTickCount(); 
    } 

    // To create the detour 
    oGetTickCount = (tGetTickCount) DetourCreate("kernel32.dll", "GetTickCount", hGetTickCount, DETOUR_TYPE_JMP); 

    // ...Or an address 
    oGetTickCount = (tGetTickCount) DetourCreate(0x00000000, hGetTickCount, DETOUR_TYPE_JMP); 

    // ...You can also specify the detour len 
    oGetTickCount = (tGetTickCount) DetourCreate(0x00000000, hGetTickCount, DETOUR_TYPE_JMP, 5); 

    // To remove the detour 
    DetourRemove(oGetTickCount); 

Et si vous ne pouvez pas dire, cet extrait hooking GetTickCount() et chaque fois que la fonction est appelée, il écrit « GetTickCount accroché ! " - alors il exécute la fonction GetTickCount, c'est ce à quoi il était destiné.

Désolé d'être si dispersa avec des informations, mais j'espère que cela aide. :) - Je réalise que c'est une vieille question. -

0

La plupart des appels de WinAPI génèrent des entrées de table de symboles pour les appels inter modulaires, ce qui rend assez simple pour les accrocher, tout ce que vous devez faire est de remplacer les adresses IAT. En utilisant quelque chose comme MSDetours, il peut être fait en toute sécurité dans quelques lignes de code. MSDetours fournit également les outils pour injecter une DLL personnalisée dans le processus cible afin que vous puissiez faire l'accrochage