Hook & bloquer des applications

Signaler
Messages postés
4
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
14 novembre 2007
-
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
Bonjour,

J'aimerai savoir comment on fait pour detecter les lancements d'applications pour en interdire le lancement à certaines.

Les deux méthodes que j'ai trouvé sont soit de surveiller la liste des processus ou de détecter les fenêtres principales ouvertes sur des intervalles de temps mais je préfèrerais avoir une méthode qui ne tourne pas continuellement.

Merci.

14 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
SetWindowsHookEx

ciao...
BruNews, MVP VC++
Messages postés
4
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
14 novembre 2007

Je te remercie de ta réponse.
En fait j'avais déjà trouvé celui-ci mais dans tous les morceaux de code que j'ai trouvé, ils identifient l'application par le nom de la fenêtre. Est-ce que c'est le même code si l'application n'a pas de fenêtre ? (Ni de fenêtres cachées)

Merci
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
hook WH_CBT

dans la DLL au DLL_PROCESS_ATTACH:
- GetModuleFilename
- Si est nom exe interdit alors ExitProcess()

ciao...
BruNews, MVP VC++
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

Bonjour BruNews,

Je suis sur le même projet que kayamel, dans le cadre de notre scolarité. Voyant que kayamel n'arrive pas à ses fins, je me suis souvenu que j'avais commencé à explorer quelques pistes pour la réalisation de ce genre d'application.

Tu m'avais répondu "Ouvre un handle en exclusif sur chacun et personne d'autre ne pourra accéder." Peut être que cette solution serait plus simple, mais peux-tu un peu plus expliquer?

Merci

Have Fun ...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
hflNIET = CreateFile(szInterdit, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);

tant que le prog qui a ouvert szInterdit tourne, personne n'y accèdera.

ciao...
BruNews, MVP VC++
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

Hum je comprend pas trop!

Imaginon que je souhaite interdire le lancement de paint sur le poste client. Je lance une application qui contien:



hflNIET = CreateFile(szInterdit, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);

avec szInterdit = "paint.exe" ?
szInterdit = idaplication ?

??

Notre prof nous a dit que un des meilleur moyen de reconnaîte une
application est de récupérer son ID. Car le seul moyen de modifier
cette id, serait de recompiler le programme.

Désolé, sa devient assez compliqué donc on a un peu de mal à comprendre! (et si on arrive pas, on finira par scruter la liste de processus, toutes les secondes, pour killer paint.exe s'il apparaît dans la liste, ce que nous pensons ne pas être la meilleur des solutions!)

Merci de ton aide

Have Fun ...
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

Et on a pas précisé que l'executable n'est pas forcement sur la machine, mais peut être installé à tout moment!

Have Fun ...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
S'il y a trop d'aléas, voir administrateur system qui mettra en place les stratégies de sécurité en procédant à l'inverse: ne pourront être lancés que les progs autorisés.

ciao...
BruNews, MVP VC++
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

Je suis d'accord avec cette solution, le problème c'est qu'on nous a demandé de créer un service qui interdit l'execution de certaine application. Ce service on doit le programmer dans un but pédagogique!

Et moi au début qui pensé que sa allé être tout simple :(

Have Fun ...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
La solution ultime, hooker ZwCreateProcess() mais gaffe à ne pas faire d'erreurs de prog.

ciao...
BruNews, MVP VC++
Messages postés
18
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008

Bonjour,

je prends en cours car cette discussion m'interesse également puisqu'il serait interessant de bloquer un programme à son lancement.

Si quelqu'un a un tuto, ou même un semblant de code sur le hook d'un createprocess, ce sera avec plaisir.
Les sources sur le net ne sont pas abondantes à ce sujet, contrairement aux hooks souris ou claviers
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Ici exemple de hook sur fonction du system:
CACHER PROCESSUS AU CHOIX (DRIVER WIN32)
http://www.cppfrance.com/code.aspx?ID=36941

ciao...
BruNews, MVP VC++
Messages postés
4
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
14 novembre 2007

Merci pour tes réponses.

Je vais laisser Abdoulax ruminer tous ça...
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

LOL, abdoulax a abandonné, et en tant que chef de projet  et ayant atteint la date limite de cette solution dans le GANT , j'ai décidé de faire la méthode qui consiste à scanner la liste des processus toutes les secondes. Mais au moins, sa nous a permis de faire des recherches sur le hook et aussi pour certain de le découvrir .

En tout cas, merci !

Have Fun ...