2009-07-29 10 views

Répondre

6

Si vous connaissez l'adresse virtuelle à laquelle l'environnement est stocké, vous pouvez utiliser OpenProcess et ReadProcessMemory pour lire l'environnement de l'autre processus. Cependant, pour trouver l'adresse virtuelle, vous devrez fouiller dans le Thread Information Block de l'un des threads du processus. Pour obtenir cela, vous devrez appeler GetThreadContext() après avoir appelé SuspendThread(). Mais pour appeler ceux-ci, vous avez besoin d'un handle de thread, que vous pouvez obtenir en appelant CreateToolhelp32Snapshot avec l'indicateur TH32CS_SNAPTHREAD pour créer un instantané du processus, Thread32First pour obtenir l'ID de thread du premier thread dans le processus, et OpenThread pour obtenir une poignée pour le fil.

+0

+ 1 bonne réponse. Vous aurez encore besoin de creuser un peu pour trouver une définition de la structure du contexte de thread. Le NT DDK et Wine sont de bons endroits pour ce genre de choses. On dirait que c'est peut-être le 8ème pointeur depuis le début de la structuree? –

1

Avec un utilitaire:

Vous pouvez utiliser Process Explorer.

Faites un clic droit sur le processus, aller à Propriétés ... et il y a un onglet Environnement qui énumère les variables d'environnement pour ce processus.

Avec code:

Il ne semble pas être un appel API Win32 pour le faire directement, mais apparemment vous obtenez du violon avec les résultats de GetProcessStrings pour avoir accès à ces informations. This CodeProject article a du code pour vous aider à démarrer.

+0

Merci, mais aurait dû clarifier la recherche d'un moyen de le faire à partir du code ... – jalex

Questions connexes