![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| geek2600 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.11.2006 Репутация: 1 Всего: 1 |
Кто нибудь может мне написать полную последовательность действий функции CreateProcess,а конкретно меня интересует последовательность действий выполняемая с передаваемым ей в качестве параметра,полным именем файла который мы собираемся запускать.Заранее благодарен.
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Жуть |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.6.2006 Репутация: нет Всего: нет |
см аттач из этой темы
|
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
1) Разбор параметров переданных в CreateProcessW, открытие исполнимого файла и определение его типа. На этом этапе определяется является ли запускаемый файл dos или win16 файлом (для них запускается ntvdm.exe и wowexec.exe соответственно), для .bat и .cmd файлов запускается cmd.exe. В дальнейшем будем считать, что запускается обычный win32 PE файл. 2) Производиться открытие исполнимого файла с помощью ZwOpenFile. 3) Из открытого файла создается секция с атрибутом SEC_IMAGE с помощью вызова ZwCreateSection. 4) С помощью ZwQuerySection извлекаются атрибуты стека и точки входа запускаемого процесса. 5) Создается объект нового процесса с помощью ZwCreateProcess. На уровне ядра в этот момент происходит создание адресного пространства и структуры EPROCESS. Важно заметить, что в этот момент процесс еще не имеет своих потоков и не может исполняться. 6) Происходит установка приоритета процесса с помощью ZwSetInformationProcess. 7) С помощью ZwQueryInformationProcess извлекается выданный системой адрес PEB нового процесса. 8) Производиться заполнение PEB и дуплицирование хэндлов ввода-вывода (только для консольных программ). В этот момент многократно вызывается ZwAlocateVirtualMemory, ZwReadVirtualMemory и ZwWriteVirtualMemory. 9) Производиться выделение памяти под стек первичного потока и подготовка его стартового контекста. 10) С помощью ZwCreateThread создается первичный поток. 11) Подсистема win32 (csrss.exe) информируется о старте нового процесса через LPC сообщения. На верхнем уровне этим заведует функция CsrClientCallServer, которая в свою очередь вызывает ZwRequestWaitReplayPort. 12) Первичный поток запускается на исполнение с помощью ZwResumeThread. (С) MsRem -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| geek2600 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.11.2006 Репутация: 1 Всего: 1 |
спосибо тебе hungry wolf.реально хорошее описание.Ты уже отвечал на мои вопросы при обсуждении запуска спроецированного файла.вопрос на счёт создания процесса меня интересует по тойже причине.В соответствии с этим вопрос-можноли пропустить шаги с OpenFile и т.д.?Ведь Рихтер пишет,что для создания процесса по любому надо создать его проекцию.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |