LISTE PROCESSUS PAR API NATIVE (WIN32)

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 7 nov. 2003 à 18:14
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010 - 22 mai 2007 à 17:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17658-liste-processus-par-api-native-win32

draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
22 mai 2007 à 17:41
Salut a tous,

Eh pour recuperer le CommandLine depuis le hProcess, il faut appeler NtQueryInformationProcess pour recupere la structure PROCESS_BASIC_INFORMATION (classe 0)
Cette structure contient une entree PebBaseAddress, il suffit alors de faire un ReadProcessMemory sur cette address pour recuperer la structure Peb, cette structure contient entre autre une entree ProcessParameters, il faut donc refaire un ReadProcessMemory sur l'address de cette entree afin de recuperer la structure PROCESS_PARAMETERS qui contient entre autres le CommandLine...

++
cs_Thez Messages postés 21 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 12 mars 2009
8 févr. 2007 à 14:21
Merci pour ces infos, je me plonge dans la doc et vous tiens au courant !


Encore merci.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 févr. 2007 à 13:05
CreateRemoteThread, il y a des exemples ici, il faut bien entendu écrire d'abord dans le processus cible.
J'ai fait de nombreux exemples de hook, mis en source, s'y référer car c'est un vaste sujet.
Richter ex^lique tout cela:
http://brunews.com/brunews/download/JR4.zip
http://brunews.com/brunews/download/JR4Sources.zip
cs_Thez Messages postés 21 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 12 mars 2009
8 févr. 2007 à 12:49
Je suis d'accord pour le probleme de pérennité, sachant que cette appli devra tourner
sur differents windows !
Pour le CreateRemoteThread, la MSDN indique que pour le paramètre "lpStartAddress"
il faut que : "... The function must exist in the remote process. ...".
Et ce n'est pas le cas.

Par contre, pouvez vous m'expliquer ce qu'est un hook en quelques mots et comment
procéder pour le mettre en place.

Merci
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 févr. 2007 à 11:29
Prendre une info à une adresse fixe est gage de non pérennité, si on veut un code de suite qui risque fort de ne plus tourner au prochain service pack alors ok sinon toujours passer par API.
cs_Thez Messages postés 21 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 12 mars 2009
8 févr. 2007 à 09:21
En cherchant un peu j'ai trouvé ceci :
http://www.cppfrance.com/code.aspx?ID=37586

Ce qui est completement different de ce que vous me proposez !
N'étant pas programmeur windows, pouvez vous me donner votre avis sur
cette source ?
Merci
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 févr. 2007 à 17:08
Il faut entrer dans le processus pour appeler GetCommandLine(), soit par hook soit par CreateRemoteThread.
cs_Thez Messages postés 21 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 12 mars 2009
7 févr. 2007 à 10:06
Je veux parler de la ligne de commande pour lancer l'application, en d'autres termes, se sont les arguments passer.
J'ai une application en mode console (pas de MFC ni autre) qui me liste les processus. Je voudrais récupérer les arguments passer à chaque processus pour pouvoir déterminer s'il y a des doublons.

Exp d'appli que je lance :
>C:\DeviceServers\ds_CompactPCICrate.exe 1 (ici 1 represente l'instance du processus ou son argument).


J'espere être plus clair !
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 févr. 2007 à 00:42
Qu'entends-tu par 'instance' ?
On a le processId et le hProcess s'obtient par OpenProcess(), je ne vois pas ce que tu veux d'autre.
cs_Thez Messages postés 21 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 12 mars 2009
6 févr. 2007 à 14:25
Bonjour BruNews,

J'aurais besoin d'une petite info :
avec votre application, il n'est pas possible de voir les instances des programmes lancés.
En fait, je fais la même chose mais j'aurais besoin d'afficher en plus l'instance du programme. Ceci dans le but de pouvoir identifier s'il y a des doublons.

Pouvez vous me dire comment procéder et quelles méthodes de l'API Windows faut-il utiliser ?

D'avance merci ...
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
15 janv. 2006 à 22:07
Autant pour moi j'avais pas vu que tu différenciais les 2, désolé.
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
15 janv. 2006 à 21:54
Salut, peut on savoir si c'est un processus system ou utilisateur ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 juil. 2005 à 00:02
Petite MAJ sur la boucle d'énumération.
kptn Messages postés 25 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 2 janvier 2006
25 nov. 2003 à 11:38
En regardant juste l'appli, je ne voyais pas trop la difficulté de la chose, mais lorsque j'ai regardé ton code : le choc!
Tu t'es refais la procédure EnumProcess qu'on trouve sous psapi.dll
Chapeau bas.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2003 à 18:14
La MAJ a porte sur la fonction de mise en format FR depuis un SYSTEMTIME, fait en asm 1 seul appel de 2 params.