• STATISTIQUES
  • Il y a eu un total de 0 membres et 27307 visiteurs sur le site dans les dernières 24h pour un total de 27 307 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] Secuser
    Actualité de la sécurité informatique, fiches virus et hoax, alertes par email, antivirus gratui...
    Hacking
    [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Arbre processus
06-05-2013, 20h11
Message : #1
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
Arbre processus
Yop,

En ce moment j'essaye de coder un programme qui listerais tout les processus et les associerais en fonction de leurs processus fils , sauf que j'ai un problème ... J'utilise CreateToolHelp32Snapshot pour lister tout les processus et PROCESSENTRY32 pour accéder aux options th32ProcessID, th32ParentProcessID. Le but en fait est donc de vérifier si le processus analysé ne contient pas des processus fils et donc après pouvoir les lister.

Cela peu paraître un peu abstrait pour certains donc je vais schématiser:
Code :
PROCESS NAME            PID                 PPID
process.exe             450
system                 482
csrss.exe                 500
explorer.exe             1503
>>    xchat.exe             1820                 1503
>>>>    skin.exe                 1850                1820
>>    skype.exe             1900                 1503
>>    programme.exe         2105                 1503
handle.exe                 2501
smss.exe                 3522
>> host.exe             3900                 3522
logs.exe                 4521

Les noms de processus & PID sont fictifs bien sûr :p

Quelqu'un aurait-il une idée de quel façon on pourrais lister tout ça car, par exemple si j'arrive sur explorer.exe, je détecte un processus fils nommé xchat.exe, mais là il faut aussi que je vérifie si xchat.exe contient des processus fils et ainsi de suite... Par exemple dans le cas du fork bombing (si je me trompe pas) ça foirerais complètement, car je me perdrait dans les sous processus etc sans être capable de revenir au processus initial qui était explorer.exe !

Bref, je me pose la question suivante: Est-ce possible? Je pense, mais je n'ai pas d'algo dans la tête :/

J'avais pensé à une mise en forme dans un fichier/buffer texte qu'on parserais pour retrouver le processus initial mais... j'arrive pas à me situer dans l'arbre :/
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
06-05-2013, 21h02
Message : #2
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Arbre processus
en bon disciple de MacYavel je dirais : récursivité ! Big Grin
+1 (2) -1 (0) Répondre
06-05-2013, 21h56
Message : #3
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: Arbre processus
J'ai aussi pensé à la récursivité mais... Comment tu mets ça en place? Ca change en rien le fait que tu ne puisses pas retrouver le processus initial :/
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
07-05-2013, 02h02 (Modification du message : 07-05-2013, 02h05 par gruik.)
Message : #4
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Arbre processus
difficile de dire avec précision mais globalement on pourrait imaginer un pseudo-code de ce genre :
Code C :
fonction(pid) {
   if pid.children > 0 {
      for childpid in pid.children {
         print "<childpid> est un process fils de <pid>"
         fonction (childpid)
      }
   } else {
      print "<pid> est une feuille de l'arbre et n'a pas de processus fils"
   }
   return
}

main() {
   init_pid = 1 // sous linux tous les process mènent à init
   // je sais pas ce qu'il en est sous windows...
   fonction(init_pid)
}
+1 (0) -1 (0) Répondre
07-05-2013, 09h08
Message : #5
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: Arbre processus
Sous win32 jcrois que tout est rattaché au process "[System]" (ou csrss.exe, qui gère les sessions win32)
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
07-05-2013, 20h42
Message : #6
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: Arbre processus
gruik: Je veux bien pour ton code, mais comment tu fait par exemple si tu pars dans un triple sous process pour revenir à celui de base? (Ou alors c'est moi qui arrive pas à piger la notion :] )

supersnail: càd? Tu veux dire que j'pourrais gérer tout ça via System/Csrss.exe ?
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
07-05-2013, 20h44
Message : #7
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: Arbre processus
Reverse c'est pas à toi de gerer ça, la pile d'éxécution gère toute seule comme une grande.
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (1) -1 (0) Répondre
07-05-2013, 20h48
Message : #8
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: Arbre processus
@ReVeRse: je parlais juste du process "père" de tous les process sous win32 Wink
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
07-05-2013, 21h20 (Modification du message : 07-05-2013, 21h22 par Kiwazaru.)
Message : #9
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: Arbre processus
Ah, donc en fait j'aurais juste à retourner sur System ? Ça pourrait être une solution :p

EDIT: En fait non, ça revient au même ! Par exemple si j'ai ->

process.exe
proc.exe
>> proces.exe
>>>> processs.exe
>>>> process.exe

proc.exe a comme process fils proces.exe mais proces.exe a DEUX processus fils, dont si je retourne directement au système j'aurais parsé que : proc.exe, proces.exe, processs.exe :/
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
07-05-2013, 21h26 (Modification du message : 07-05-2013, 21h28 par InstinctHack.)
Message : #10
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: Arbre processus
Code PYTHON :

def process(level=1):
        if level<5:
                if level+1<5:
                        print(("\t"*level)+"Je suis un process et v'la mes fils :")
                else:
                        print(("\t"*level)+"Je suis un process puceau")
                for i in range(3):
                        process(level+1)

process()

 

Plus con tu meurt

la sortie :
Code :
Je suis un process et v'la mes fils :
                Je suis un process et v'la mes fils :
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
                Je suis un process et v'la mes fils :
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
                Je suis un process et v'la mes fils :
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
                        Je suis un process et v'la mes fils :
                                Je suis un process puceau
                                Je suis un process puceau
                                Je suis un process puceau
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
07-05-2013, 23h36
Message : #11
Creepy_p0ney Hors ligne
chef des poneys voodoo
*



Messages : 146
Sujets : 9
Points: 24
Inscription : Dec 2011
RE: Arbre processus
@ReVerSe pour le code de gruik : la récursivité dude :p
pour chaque processus fils la fonction s'appelle, si il ya encore des processus fils elle s'appelle, puis se termine dans l'ordre où elle a été appelée
Penser que coder est coder explique-t-il la recursion ?
http://p0neyland.wordpress.com/
+1 (0) -1 (0) Répondre
07-05-2013, 23h41
Message : #12
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: Arbre processus
je dirais dans le sens inverse en fait... :]
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
07-05-2013, 23h45
Message : #13
Creepy_p0ney Hors ligne
chef des poneys voodoo
*



Messages : 146
Sujets : 9
Points: 24
Inscription : Dec 2011
RE: Arbre processus
ah oui :p j'ai hesité (putain ça fait deux fois que j'dis ça aujourd'hui) au bout de trois ça va plus passer
Penser que coder est coder explique-t-il la recursion ?
http://p0neyland.wordpress.com/
+1 (0) -1 (0) Répondre
08-05-2013, 09h58 (Modification du message : 08-05-2013, 10h02 par Kiwazaru.)
Message : #14
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: Arbre processus
Creepy_P0ney: "@ReVerSe pour le code de gruik : la récursivité dude Tongue
pour chaque processus fils la fonction s'appelle, si il ya encore des processus fils elle s'appelle, puis se termine dans l'ordre où elle a été appelée ", j'vais essayer on va bien voir Smile

Khaled: J'vais essayer de porter ça en C on va voir Wink

PS: J'avais mal interprété ton message au début khaled x)
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
08-05-2013, 11h11
Message : #15
Sh4dows Hors ligne
Tweetos
*



Messages : 293
Sujets : 5
Points: 49
Inscription : Dec 2012
RE: Arbre processus
A savoir que suivant ce que tu fais avec la récursivité tu peux SoF (Stack OverFlow)
Donc essaye de gérer le truc comme il se doit Smile
Faites ce que je dis et non ce que je fais !
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut