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 :

Suspendre les Thread d'un Process


Sujet :

Windows

  1. #1
    Membre confirmé
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut Suspendre les Thread d'un Process
    Bonjour,

    J'essaye actuellement de re-coder cette application :
    http://assiste.com.free.fr/p/logithe...rmination.html

    Et j'ai une question portant sur le fait de suspendre tous les threads d'un processus.
    Mon programme suspend bien chaque thread du processus (j'ai prit pour test firefox.exe).Sauf que dans le taskmanager le processus firefox reste présent, il ne se termine pas.Est ce que c'est normal ?

    Se que fait la fonction :
    Suspend #1 - Attempts to suspend each thread in the target process individually using the SuspendThread function in kernel32.dll. Resume capability also available with this method.
    Main functions: OpenThread, SuspendThread, ResumeThread (kernel32.dll)
    merci, a+++.

  2. #2
    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
    Par défaut
    Bonjour,

    Oui c'est normal.

    La suspension d'un thread n'entraîne pas sa terminaison. En d'autres termes le thread est "gelé" mais peut reprendre son exécution quand son compteur de suspension atteins 0: le compteur de suspension étant incrémenté quand on utilise SuspendThread() et décrémenté lorsqu'on utilise ResumeThread().

    Pour rappel, un processus ne meurt que lorsque son dernier thread est terminé.

  3. #3
    Membre confirmé
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut
    ok merci pour la réponse,mais du coup j'ai une autre question.

    Quel est l'intérêt alors de tester si l'on peut suspendre chaque thread d'un processus, si c'est pour les relancer juste après ?

    En quoi cela répond-il a un test de sécurité ?

    Edit : Je précise ma question.

    Le fait dans une application comme Advanced Process Termination (APT) de tester si l'on peut suspendre les threads du processus cible, semble assez logique.C'est un test de base on va dire, afin de voir si l'on peut rendre le processus inutilisable (j'entends par là sans relancer les threads via ResumeThread() ).

    Mais l'intérêt d'une telle application va être de tester des processus "critiques", style process d'antivirus, de firewall, processus system.Or j'ose imaginer que n'importe quel antivirus , firewall ou même OS digne de ce nom, se protège contre ce genre de suspension.Sinon cela devient carrément trop facile!!!

    Mon interrogation portait plus a ce niveau.Disons que de mon point de vue, c'est presque un non sens de tester ce genre "d'attaque".Avoir une protection contre la suspention de tous les thread du processus, est, il me semble, quelque chose de vraiment basique.

    Voila c'est n'est pas vraiment une question, mais plus une constatation qui me laisse un peu perplexe.

    merci, a+++.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Généralement, la suspension de threads se fait à des fins de débogage (ou dans .Net, à des fins d'appel du ramasse-miettes).

    Ensuite, je ne pense pas qu'on puisse empêcher une analyse à l'accès en "suspendant" un anti-virus: pour moi, ça suspendrait en même temps le programme qui tente d'accéder à un fichier...

    Donc franchement, j'ai du mal à voir le lien entre suspension et sécurité. D'un autre côté, si un utilisateur possède le droit THREAD_SUSPEND_RESUME sur un autre thread, il est très probable qu'il en possède d'autres...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut
    Salut Médinoc, merci pour ta réponse.

    J'ai testé sur 2 des processus de mon antivirus, et je me fait directement jeter (Error : Accès refusé"), ce qui est une bonne chose.Pour le second process de l'antivirus les threads refusent de se suspendre.Un autre bon point.

    Pour le droit THREAD_SUSPEND_RESUME, je ne sais pas exactement jusqu'où il va, je veut dire par là qu'en tant qu'administrateur de la machine quel processus system accèpte t-il de se laisser suspendre sans broncher.Je testerais pour voir.
    Sinon d'un autre coté cette option peut être pratique dans le cas d'une infection, un processus malveillant peut ne pas avoir était prévu pour se protéger contre cela.

    Voila, voila.

    A+++

    Ps: sérieux merci de m'avoir répondu, je commençais a désespérer

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Les administrateurs possèdent le privilège Debug, ils ont donc tous les droits sur tous les processus et threads user-mode.

    Par contre, un thread entièrement kernel-mode (drivers, etc.) reste inaccessible (sauf pour les autres drivers), et les anti-virus avec analyse à l'accès utilisent probablement tous un driver pour ça.

    En fait, le vrai danger viendrait d'un virus qui, une fois exécuté par un administrateur (traduction: tu as déjà perdu), installerait un driver.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre confirmé
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut
    En fait, le vrai danger viendrait d'un virus qui, une fois exécuté par un administrateur (traduction: tu as déjà perdu), installerait un driver.
    Bah justement dans mon programme je liste les processus actif en kernel-mode.Je fait plus ou moins comme cela :
    http://www.volynkin.com/procenum.htm

    Est ce que avec cette méthode je peut détecter un processus cacher d'un rootkit par exple ?
    Et avec les option Kernel kill 1 & 2, je pourrais le tuer ?

    - Kernel kill 1 & 2 :
    Kernel Kill #1 - Attempts to terminate the process from a driver using the kernel-level ZwTerminateThread function against every thread in the target process.
    Main functions: ZwTerminateThread (ntoskrnl.exe)

    Kernel Kill #2 - Attempts to terminate the process from a driver using the kernel-level ZwTerminateProcess function against the target process.
    Main functions: ZwTerminateProcess (ntoskrnl.ex

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je ne sais pas si cette fonction agit sur autre chose que les processus user-mode.

    Mais dans tous les cas, si ton virus exécute un driver, l'ordinateur ne t'appartient déjà plus: Anti-virus ou pas, le virus peut déjà faire ce qu'il veut.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les threads id à partir d'un process id
    Par ElFenec dans le forum Windows
    Réponses: 2
    Dernier message: 17/12/2009, 16h32
  2. lister les threads d'un process
    Par kaff dans le forum Windows
    Réponses: 3
    Dernier message: 22/04/2006, 11h56
  3. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25
  4. Question simple sur les threads :)
    Par momox dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2003, 04h13
  5. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59

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