IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Comment détecter le lancement d'un process par notification ?


Sujet :

Windows

  1. #1
    Membre du Club Avatar de masterx_goldman
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 51
    Points
    51
    Par défaut Comment détecter le lancement d'un process par notification ?
    Bonjour tout le monde,

    Je veux écrire un code qui détecte le lancement d'un programme donné "MonProg.exe" et ça sans faire des vérifications périodiques avec des snapshots sur la liste des process qui tournent.

    Je sais pas si les hooks peuvent répondre à ce besoin, si oui merci de me donner une indication sur la façon de faire car j'ai pas fait beacoup d'exemples sur les hooks, sinon y'a t-il un autre moyen ?

    Merci pour vos idées !

  2. #2
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Salut,

    Peut-être un hook de NtCreateProcess et NtCreateThread.

  3. #3
    Membre éclairé Avatar de sloshy
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2005
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 728
    Points : 723
    Points
    723
    Par défaut
    Bonjour,
    Je pense qu'un hook de la SSDT sur NtOpenProcess() (prototype) est suffisant dans 99% des cas.

    Le principe est simple, a chaque appel de NtOpenProcess c'est ta fonction (MyNtOpenProcess par exemple) qui sera appelée.
    La fonction MyNtOpenProcess est assez simple, tu va faire une condition afin de déterminer si on veut lancer "MonProg.exe" ou pas.
    Si on veut lancer "MonProg.exe" tu retournes STATUS_ACCESS_DENIED
    Si on veut lancer autre chose, tu appeles le vrai NtOpenProcess et tu retournes ce qu'il t'aura lui même retourner.
    En alternative si tu veux comprendre jusqu'au bout, tu peux implémenter ton propre NtOpenProcess

    Dans la pratique c'est déjà plus complexe. (si tu n'a jamais programme en ring 0). Si tu as des bases dans la programmation kernel, ce poste devrait t'aider en expliquant tout dans le détail.
    Bonne chance a toi et n'hésite pas si tu as des questions.
    “La seule révolution possible, c'est d'essayer de s'améliorer soi-même, en espérant que les autres fassent la même démarche. Le monde ira mieux alors.”

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Hello,

    en kernel mode mieux vaut passer par PsSetCreateProcessNotifyRoutine(): http://www.osronline.com/ddkx/kmarch/k108_5lwy.htm

    C'est documenté et ça ne risque pas de faire hurler les anti-rootkits

  5. #5
    Membre éclairé Avatar de sloshy
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2005
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 728
    Points : 723
    Points
    723
    Par défaut
    Je vois que j'ai encore beaucoup a apprendre
    “La seule révolution possible, c'est d'essayer de s'améliorer soi-même, en espérant que les autres fassent la même démarche. Le monde ira mieux alors.”

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2010, 09h33
  2. Comment détecter la fermeture d'une fenêtre par la croix?
    Par man_coef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/06/2008, 16h34
  3. Réponses: 13
    Dernier message: 20/07/2007, 13h51
  4. Comment détecter une erreur dans un process
    Par chuckboy dans le forum MFC
    Réponses: 3
    Dernier message: 25/10/2005, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo