Arbre processus - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72) +--- Forum : Langages compilés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=25) +--- Sujet : Arbre processus (/showthread.php?tid=2976) Pages :
1
2
|
Arbre processus - Kiwazaru - 06-05-2013 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 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 :/ RE: Arbre processus - gruik - 06-05-2013 en bon disciple de MacYavel je dirais : récursivité ! RE: Arbre processus - Kiwazaru - 06-05-2013 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 :/ RE: Arbre processus - gruik - 07-05-2013 difficile de dire avec précision mais globalement on pourrait imaginer un pseudo-code de ce genre : Code C :
fonction(pid) { RE: Arbre processus - supersnail - 07-05-2013 Sous win32 jcrois que tout est rattaché au process "[System]" (ou csrss.exe, qui gère les sessions win32) RE: Arbre processus - Kiwazaru - 07-05-2013 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 ? RE: Arbre processus - InstinctHack - 07-05-2013 Reverse c'est pas à toi de gerer ça, la pile d'éxécution gère toute seule comme une grande. RE: Arbre processus - supersnail - 07-05-2013 @ReVeRse: je parlais juste du process "père" de tous les process sous win32 RE: Arbre processus - Kiwazaru - 07-05-2013 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 :/ RE: Arbre processus - InstinctHack - 07-05-2013 Code PYTHON :
Plus con tu meurt la sortie : Code : Je suis un process et v'la mes fils : RE: Arbre processus - Creepy_p0ney - 07-05-2013 @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 RE: Arbre processus - InstinctHack - 07-05-2013 je dirais dans le sens inverse en fait... :] RE: Arbre processus - Creepy_p0ney - 07-05-2013 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 RE: Arbre processus - Kiwazaru - 08-05-2013 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 Khaled: J'vais essayer de porter ça en C on va voir PS: J'avais mal interprété ton message au début khaled x) RE: Arbre processus - Sh4dows - 08-05-2013 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 |