Connaitre le processus qui appelle une fonction API
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 :lol: 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:
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; |