Создание и управление процессами и потоками
Задание 2. Получить информацию о процессе и его потоках.
Указания к выполнению.
1. Как уже отмечалось, для получения информации о процессах используется команда !process. У неё есть следующие варианты:
!process 0 0 – отображение краткой информации о всех процессах в системе;
!process id 7 – отображение полной информации о процессе с идентификатором id;
!process id 0 – отображение краткой информации о процессе с идентификатором id;
!process address 7 – отображение полной информации о процессе с адресом address структуры EPROCESS;
!process address 0 – отображение краткой информации о процессе с адресом address структуры EPROCESS.
2. Чтобы узнать идентификатор процесса, можно воспользоваться либо командой отладчика !process (этот способ уже демонстрировался), либо специальными утилитами, например Process Explorer или Task Manager (Диспетчер задач).
Продемонстрируем второй способ на примере процесса explorer.exe.
Возобновите выполнение виртуальной машины: нажмите F5 или выберите пункт меню Debug – Go или щелкните кнопку на панели инструментов.
На виртуальной машине запустите утилиту Process Explorer от Sysinternals.
Замечание. Утилиту Process Explorer можно скачать на сайте Sysinternals: http://technet.microsoft.com/ru-ru/sysinternals. Информацию о ней можно получить либо на том же сайте, либо в литературе [5; 2].
Идентификатор процесса указывается в поле PID (Process Identifier):
В примере на рисунке PID = 2028 (в десятичном виде) или 7EC (в шестнадцатеричном виде).
3. Остановите выполнение виртуальной машины (нажмите Ctrl+Break в отладчике).
В окне команд введите
!process 7EC 0
или
!process 81F24BD0 0
Результаты вывода почти одинаковые, за тем исключением, что в первом случае дополнительно выводится адрес таблицы дескрипторов процесса:
4. Чтобы вывести информацию о потоках процесса, наберите команду:
!process 7EC 4
Для каждого потока указывается адрес его структуры ETHREAD (на рисунке выделено красным цветом), идентификатор потока (синий цвет) и текущее состояние потока (зеленый цвет).
Для отображения полной информации о потоках процесса введите команду:
!process 7EC 7