Информация об изменениях

Сообщение Re: Запуск программы и передача ей управления от 15.02.2018 14:29

Изменено 15.02.2018 14:31 Maniacal

Re: Запуск программы и передача ей управления
Здравствуйте, lsv, Вы писали:

lsv>Возникает вопрос, как правильно запустить программу ССС.exe и передать ей управление?

Если я правильно понял, то нужно запустить программу CCC.exe в фоне и передать управление только после завершения AAA.exe? Если обе программы с исходниками, то нужно создать именованный мьютекс или семафор, залочить его в AAA.exe и ожидать в CCC.exe. Если CCC.exe сторонняя утилита, то первое, что приходит в голову — запускать CCC.exe в режиме SUSPENDED (понадобится CreateProcess вместо ShellExecute), потом CreateRemoteThread + первый сценарий с мьютексом/семафором. Только придётся сначала свой код внедрить в чужой процесс с помощью хука и специально созданной DLL. Можно даже одной командой и поток создать и библиотеку загрузить, в сети есть примеры (DLL Injection).
Re: Запуск программы и передача ей управления
Здравствуйте, lsv, Вы писали:

lsv>Возникает вопрос, как правильно запустить программу ССС.exe и передать ей управление?

Если я правильно понял, то нужно запустить программу CCC.exe в фоне и передать управление только после завершения AAA.exe? Если обе программы с исходниками, то нужно создать именованный мьютекс или семафор, залочить его в AAA.exe и ожидать в CCC.exe. Если CCC.exe сторонняя утилита, то первое, что приходит в голову — запускать CCC.exe в режиме SUSPENDED (понадобится CreateProcess вместо ShellExecute), потом CreateRemoteThread + первый сценарий с мьютексом/семафором и вызовом ResumeThread во внедряемом коде.
Только придётся сначала свой код внедрить в чужой процесс с помощью хука и специально созданной DLL. Можно даже одной командой и поток создать и библиотеку загрузить, в сети есть примеры (DLL Injection). Можно и более низкоуровнево, безо всяких библиотек, путём записи машинного кода в память другого процесса. Вместо мьютексов можно ещё WaitForSingleObject сделать на HANDLE процесса, который предварительно нужно получить через OpenProcess для AAA.exe