Вятский государственный гуманитарный университет
Опубликован: 27.05.2013 | Доступ: свободный | Студентов: 3665 / 1042 | Длительность: 09:18:00
Самостоятельная работа 2:

Создание и управление процессами и потоками

< Лекция 6 || Самостоятельная работа 2: 1234 || Лекция 7 >

Задание 4. Исследовать в отладчике ход создания процесса.

Указания к выполнению.

1. Исполняемый файл созданного в предыдущем пункте приложения CreateProcess.exe после компиляции проекта должен находиться в следующей папке:

c:\Programs\CreateProcess\Release.

Скопируйте исполняемый файл на виртуальную машину.

2. Проверьте работоспособность исполняемого файла на виртуальной машине. При его запуске должен запускаться "Блокнот".

3. Установите в отладчике точку останова на функции NtCreateProcessEx.

Для этого прервите выполнение виртуальной машины (Ctrl+Break в отладчике). В меню Edit выберите пункт Breakpoints…

В открывшемся окне введите команду:

bp nt!NtCreateProcessEx

и нажмите Enter.


Данная команда устанавливает точку останова на функции NtCreateProcessEx. Указание nt! означает модуль, в котором отладчику следует искать функцию. Если в данном случае не указать модуль nt (ядро), то отладчик автоматически поставит точку останова на функции NtCreateProcessEx, экспортируемой ntdll.dll.

4. Возобновите выполнение виртуальной машины (нажмите F5 в отладчике). Запустите в виртуальной машине приложение CreateProcess.

Сработает точка останова для функции NtCreateProcessEx, которая запускает приложение CreateProcess. Нас интересует запуск "Блокнота", поэтому продолжите выполнение, нажав F5 в отладчике.

Точка останова сработает второй раз – произошел вызов функции NtCreateProcessEx для запуска "Блокнота". Перейдите в отладчик. В нем должно открыться окно с исходным кодом функции NtCreateProcessEx (файл base\ntos\ps\create.c).

Проследите ход создания объекта процесс (см. лекцию 6 "Процессы и потоки", раздел "Создание процесса", шаг 3). Для этого используйте клавиши F11 – выполнение следующей команды с заходом в процедуры (Step Into) и F10 – то же самое, но процедуры выполняются за один шаг (без захода, Step Over).

Значения переменных можно отслеживать в окне Locals (Alt+3), окне Watch (Alt+2, нужно вводить интересующие переменные) или просто наводя курсор мыши на переменную в окне исходного кода.

Задания для самостоятельного выполнения

Задание 1. Исследуйте структуру данных ETHREAD.

Указания к выполнению.

1. Используйте HTML документацию по WRK или проект Visual Studio.

2. Для просмотра полей структуры ETHREAD используйте команду:

dt ethread.

3. Для получения информации об адресах структур ETHREAD потоков процесса используйте команду:

!process id 4.

4. Для получения информации о потоке используйте команду:

!thread address,

где address – адрес структуры ETHREAD потока.

5. Для просмотра значений полей структуры ETHREAD для конкретного потока используйте команду:

dt ethread address.

Задание 2. Исследовать в отладчике ход создания потока.

Указания к выполнению.

  • Используйте описание хода создания потока в лекции 6 "Процессы и потоки", раздел "Создание процесса", шаг 4.
  • Используйте проект, созданный в задании 3 основной части лабораторной работы.
  • Установите в отладчике точку останова на функции NtCreateThread:
bp nt! NtCreateThread
< Лекция 6 || Самостоятельная работа 2: 1234 || Лекция 7 >
Анар Шенер
Анар Шенер
Екатерина Гастева
Екатерина Гастева

Добрый день. Не работают ссылки для скачивания на начальном этапе первой самостоятельной работы. Возможно и далее встречаются старые ссылки. Как быть с этим?

Может есть какой-то более новый несложный курс по устройству windows c практическими заданиями?  Заранее спасибо.

"1. Скачайте и установите программу виртуализации Microsoft Virtual PC 2007 SP1, доступную по адресу:

http://www.microsoft.com/en-us/download/details.aspx?id=24439"

"Microsoft Windows Server 2003 SP1" также не находится.