Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Surveillance regedit (Resolu)


sebdraluorg

Messages recommandés

Salut a tous,

 

voila je suis entrain de coder un ptit prog pour surveiller les parametres de la bdr (pour envoyer une alerte lorsqu'un programe veut se lancer au demarrage ou modifier une cle systeme ou parametres internet...)

 

Le truc c'est que je ne parviens pas a trancher sur la methode a employer (sous vb6)

METHODE 1:

Pour l'instant je lis et enregistre chaque cles et parametres dans des collection

puis je boucles pour relire et verifier si rien a changer et en cas de modification j'envoi une alerte.

Mais bon c'est pas tres propre et ca m'oblige a aller relire constament dans la bdr a un interval de quelques diziemes de secondes

Ceci bien sur en utilisant les api RegQuerry RegOpen RegWrithe ...

METHODE 2:

Mais il y a aussi un api nomme RegNotifyChangeKey qui lui va permetre de mettre la cle sous surveillance et vous renvoyer un message des que la cle ou une de ses sous cle a ete modifiee et donc aucune consomation ressource tant que la cle ne change pas. Mais cette fonction presente deux inconveniants majeur:

 

1) Le programme est "fige" tant que la cle n'a pas ete modifiee donc pour en surveiller plusieurs il faut travailler en multithread

2) l'api renvoi "Error Succes" si la cle a ete modifiee mais ne renvoi pas quel valeur ni ce qui a ete fait. donc il faut refaire un check de la bdr pour determiner cce qui a ete modifie

 

donc voila pour le moment ca tourne nikkel en utilisant la premierre methode mais j'hesite vraiment a passer a la methode 2 meme si c'est plus compliquer

car c'est quand meme plus propre

 

Si vous pouviez me dire ce que vous en pensez et quelle methode prendriez vous et pourquoi ?

 

Merci d'avance @+

Modifié par sebdraluorg
Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Il te faut utiliser la fonction RegNotifyChangeKeyValue (API windows):

http://msdn.microsoft.com/library/default....ngekeyvalue.asp

 

Il faut indiquer que la notification doit être asynchrone avec le paramètre fAsynchronous = TRUE. Il faut également créer un Event par clée surveillée (API windows CreateEvent) et donc appeller RegNotifyChangeKeyValue pour chaque clée avec un Event différent.

 

Ensuite, tu lances un thread qui va surveiller le changement d'état des events que tu as utilisé. En employant la fonction WaitForMultipleEvents (API windows), tu peux surveiller plusieurs clées (toutes) avec un seul thread. Charge au thread, lorsqu'un Event passe à l'état signalé, de retrouver quelle clée a été modifiée en les lisant et en les comparant aux dernières enregistrées par le programme (code que tu as déjà fait).

 

C'est certes pas super facile à mettre en place si tu n'es pas habitué aux traffics divers et variés de l'API windows, par contre c'est la manière la plus rationelle et la moins coûteuse en temps machine.

Lien vers le commentaire
Partager sur d’autres sites

Salut _Michel_, salut a tous,

 

Il te faut utiliser la fonction RegNotifyChangeKeyValue (API windows):

http://msdn.microsoft.com/library/default....ngekeyvalue.asp

oui bien sur c'est de cet api que je parlais :P

 

Sinon merci beaucoup je ne connaissais pas l'api WaitForMultipleEvents,

voila qui va vraiment m'aider a simplifier le code :-(

C'est certes pas super facile à mettre en place si tu n'es pas habitué aux traffics divers et variés de l'API windows, par contre c'est la manière la plus rationelle et la moins coûteuse en temps machine.

exactement c'est pour ca que malgre les difficultes rencontrees je m'obstine a vouloir utiliser cette methode qui en plus me permettra de surveiller un plus grand nombre de cles :-P

Encore une fois merci pour ta reponse @+

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Bien j'ai le meme projet, faire un petit "scruteur" de registre pour les clef "Run"

et autres points de démarrage, acollé a une petit gestionnaire des taches (quand celui ci est flingué...)

 

Je vais essayer d'apporter un autre argument qui vaut ce qu'il vaut...

Ca se trouve il vaut rien !

 

Si je voulais dev une vérole qui creer une clef de registre, je pense que je me débrouillerais pour Hooker cette fameuse procedure evenementiel "RegNotifyChangeKeyValue".

A ce moment le systeme énoncé plus haut ne tient plus la route je pense.

 

Dans l'idée pkoi ne pas utiliser un Hook sur cette procedure pour etre sûr des privileges sur l'evenement (par rapport a un possible hook de la vérole)

 

La question est donc, un Hook est il possible la dessus ?

Si oui, Comment ?

 

Je me rencarde quand j'ai 5 min la dessus, mais le ventillo de l'alim de mon serveur est arrété, un gros mochon de poussiere en sort...

Ca sent un peu le cramé....

Donc j'ai du pain sur la planche...

 

A++

 

Hexanium

Lien vers le commentaire
Partager sur d’autres sites

Salut a tous,

 

Si je voulais dev une vérole qui creer une clef de registre, je pense que je me débrouillerais pour Hooker cette fameuse procedure evenementiel "RegNotifyChangeKeyValue".

Bien que a on avis peu probable, il est clair que c'est possible, mais de ce point de vue la tout est possible et il y aura toujours des failles...

 

L'ideal je pense serait plutot que d'implementer un ptit gestionnaire de taches, implemter la surveillance des processus avec un systeme d'alerte comme pour le changement des cles de cette facon le probleme du hook est resolu et on augmente considerablement la securite

 

vous en pensez quoi ?

Lien vers le commentaire
Partager sur d’autres sites

Si je voulais dev une vérole qui creer une clef de registre, je pense que je me débrouillerais pour Hooker cette fameuse procedure evenementiel "RegNotifyChangeKeyValue".

Hooker RegGetValue() par exemple serait bien plus efficace. Des logiciels aussi répandus que msconfig, regedit et Hijackthis seraient neutralisés.

 

L'ideal je pense serait plutot que d'implementer un ptit gestionnaire de taches, implemter la surveillance des processus avec un systeme d'alerte comme pour le changement des cles de cette facon le probleme du hook est resolu et on augmente considerablement la securite

Commence par faire ton moniteur de clées. Quand il sera fonctionnel, tu auras tout le temps de t'interroger sur le hooking. Je ne te cache pas que c'est d'un autre ordre de grandeur en complexité en raison, notamment, de toutes les méthodes de hooking qui existent.

 

http://www.codeproject.com/system/hooksys.asp

Lien vers le commentaire
Partager sur d’autres sites

Salut a tous,

Commence par faire ton moniteur de clées. Quand il sera fonctionnel, tu auras tout le temps de t'interroger sur le hooking.
Oui bien sur :-(

Mais il y a comme un vent de programation qui souffle sur Zebulon ces derniers temps (principalement autour de la securite). Donc les taches pourraient etre partagees.... (a bon entendeur salut :-P )

 

Sinon en effet la mise en place pour WaitForMultiplesObject est moins simple que je ne pensais :P

 

merci encore @+

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...