Bonjour à tous,

Me revoila avec mon monitoring de la base de registre.

Rappel des fait : j'ai réussi a trouver la solution pour Hooker n'importe quelle fonction API en la surchargeant. voir ici http://www.developpez.net/forums/sho...d.php?t=144628


Pour mon projet j'intercepte pour le moment l'appel de la fonction RegOpenKeyEx.


Bon maintenant il me faut connaitre le processus qui appelle cette fonction. Avez vous une idée? Il me semble dans un passé lointain que j'ai entendu parler environnement de processus ou de fonctions pouvant explorer l'environnement mémoire d'un processus.


Si vous avez une piste une idée. En fait il me faudrait une fonction qui a placer dans l'API surchargé pour savoir qui vient de faire l'appel. (voir ci dessous)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function RegOpenKeyCallback(HandleKey: Dword; lpSubKey: PChar; var phkResult: Dword) : Longint; stdcall;
Var
Str : TStringList;
RootKey : string;
begin
    // On renvoie la fonction originale pour que la demande soit bien prise en compte
    result := RegOpenKeyNext(HandleKey, lpSubKey,phkResult);
    // surcharge par mon code perso j'ouvre un fichier log ou seront enregistrer les infos
    Str:=TStringList.Create;
    If fileExists('c:\regkey.txt') Then Str.LoadFromFile('c:\regkey.txt');
    Case HandleKey Of
      HKEY_CLASSES_ROOT : RootKey := 'HKEY_CLASSES_ROOT\';
      HKEY_CURRENT_USER : RootKey := 'HKEY_CURRENT_USER\';
      HKEY_LOCAL_MACHINE : RootKey := 'HKEY_LOCAL_MACHINE\';
      HKEY_USERS : RootKey := 'HKEY_USERS\';
      HKEY_CURRENT_CONFIG : RootKey := 'HKEY_CURRENT_CONFIG\';
    End;
 
     // Ici fonction "Quel Processus Appelle"    
 
    Str.Add('-----------------');
    Str.Add(DateTimeToStr(Now) + ' : RegOpenKey called');
    Str.Add(RootKey + lpSubKey);
    Str.Add('-----------------');
    Str.SaveToFile('c:\regkey.txt');
    Str.Free;
end;