Win32 API (какая функция нужна?)

mk93

Требуется.
1. Загрузить в память процесса какой-то исполняемый модуль (не важно какой но не передовать на него управление.
2. Немного погодя запустить процесс на исполнение, на который был передан модуль.
Какая тут нужна функция. Я думал LoadLibraryEx(...).
Ну загружу я исполняемый модуль в виртуальную память, а как быть с управлением. Что ето такое? Как использовать?
Помогите, пожалуйста, если кто знает.
Или где можно найти.

mk93

Или можно создать процесс, не запуская его. Передать модуль, а потом разрешить ему начать работать?

kokoc88

В память своего процесса? LoadLibrary*
Чтобы запустить функцию из dll её надо определить и вызвать GetProcAddress*

mk93

Нет. Не в свою. Давай так. Он должен породить процесс. Загрузить туда. Так как. Процесс может быть инициализирован но не исполняться? Можешь поподробнее какая функция и за что отвечает. Заранее благодарю.

kokoc88

Для того, чтобы создать процесс, надо использовать CreateProcess*
"Туда" так просто загрузить нельзя.
Процесс может быть создан так, чтобы его главный поток не исполнялся, для этого служит флаг CREATE_SUSPENDED.

mk93

Хорошо. Из "главного" процесса вызовем функцю CreateProcess с флагом. Затем подгрузим исполняемую чать. И запустим наш главный поток в порожденном процессе. Что произойдет? Как процесс будет себя вести? Какой код будет исполняться. У процесса, может, тоже было что исполнять?

evgen5555

Попробуй CreateRemoteThread поботать.

kokoc88

У процесса, конечно, есть что исполнять. Это функция main или WinMain. Опиши задачу, которую ты хочешь решить, чтобы тебе подсказали, как её решить.

mk93

Описываю задачу (но ничего особенно нового не скажу).
1. Есть "главный процесс".
2. Он должен породить дочерний процесс. Подгрузить в него несколько исполняемых файлов. (1.exe, 2.exe ... но пока не начинать исполнение.
3. Соединяться с родителем через "пайп".
4. Подождать немного, пока родитель что-нибудь сделает.
5. А потом начать исполнять эти исполняемые файлы (однвременно/последовательно).

kokoc88

main -> CreateNamedPipe, CreateProcess, WriteFile
process -> CreateFile, N*CreateProcess, ReadFile, N*ResumeThread

water97

Спасибо
Оставить комментарий
Имя или ник:
Комментарий: