REGISTRY GUARD BETA

Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008
-
Messages postés
6
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38646-registry-guard-beta

Messages postés
6
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
13 avril 2007

Lu,

C'est un très pratique programme (même si il fait planter MSN etc.) :-).
Je me suis moi (pas tout seul) lancé dans la construction d'un antivirus, (c.f. http://www.viropy.com ) et je cherche à faire quelque chose se rapprochant mais comme l'a dit Brunews avec un driver, donc, si quelqu'un trouve quelque chose (documentation, etc.) ce serait gentil de poster ici ou bien de me le dire (MP etc.) car je pense que ça en ferait profiter tout le monde.


++, PianoPâriss.
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

vraiment bien jouer, voila plusieur mois que je fait du hooking detouring, je vais recommencer le meme projet, sa pourrait etre un entrennament pour moi
Messages postés
199
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
28 février 2008

En effet on dirait que WinRar effectue énormément d'appels à RegOpenKeyEx...
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Je viens de remarquer que ce programme empêche WinZip de fonctionner normalement et l'oblige à se fermer. Winrar lui, fait carrément planter le programme. Je ne sais si c'est seulement chez moi ou non.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Taron31 >> Je viens de regarder ton code d'un peu plus près. C'est effectivement l'utilisation de SetWindowsHook() qui permet de ne pas s'occuper de l'énumération des processus et la détection de ceux nouvellement créés. C'est donc le système qui fait ce travail. C'est dommage que cela ne permette pas de hooker les processus sans fenêtre. Pourtant, je trouve l'utilisation de SetWindowsHook() très propre par rapport aux autres méthodes de hook. Je connais plutôt la célèbre méthode de Jeffrey Ritcher qui consiste à:
1- Enumérer tous les processus existants (avec ou sans fenêtre).
2- Ouvrir chaque processus.
3- Allouer de la mémoire dans l'espace alloué au processus.
4- Ecrire le chemin contenant le nom de notre dll dans cette zone mémoire.
5- Récupérer l'adresse de LoadLibary() dans Kernel32.dll
6- Créer un thread dans le processus cible. La fonction de ce thread est l'adresse de LoadLibrary() ayant comme paramètre le pointeur sur la zone allouée contenant le chemin de notre dll.
7- Attendre que ce Thread se termine.
8- Libérer le handle du thread, celui du processus et la mémoire allouée.

Notre dll sera donc chargée dans tous les processus. Elle modifiera leurs tables d'import afin de rediriger tous les appels de l'API voulue vers une fontion contenu dans cette dll.

Je trouve cette solution très élégante. Le problème qui reste à résoudre est celui de la détection de nouveux processus.
Un autre problème apparaitra car il parait que Microsoft a l'intention d'interdire l'écriture dans une zone mémoire allouée dans un processus externe à une application. Dans tel cas, cette méthode ne sera plus utilisable.

La solution du hook avec SetWindowsHook() sera toujours supportée.
Je te conseille donc de garder cette solution dans la prochaine mise à jour de ce code source en essayant d'y apporter quelques améliorations. Dans beaucoup de cas, ce genre de solution suffit largement.

Pour perfectionner les choses, on sera donc obligés d'utiliser la solution proposée par BruNews. Je vais m'y mettre bientôt. je suis sûr que ce sera passionnat et plein de découvertes.
Vive la programmation! :)
Afficher les 20 commentaires