Да, понимаю, тема избита... но все же возникли у меня вопросы. Использую стандартную схему 1/ Запускаю процесс explorer.exe 2/ ZwUnmapViewOfSection 3/ VirtualAllocEx 3/ Закидываю заговок и все секции 4/ В PEB прописываю новый dwImageBaseAddress и делаю ResumeThread На WinXPSP2 работает безукоризненно. Но на Висте не все так гладко. Собственно вот в чем, далеко не все программы удается запустить. После финального ResumeThread выскакивает ошибка: "No more threads can be created in the system" Далее. Если в качестве процесса-оболочки использовать не ecsplorer.exe а точно такуюже программу которую я внедряю - то все работает нормально. Мне кажется нужно подправить что-то в PEB, но что - не знаю. Самое интересное, многие программы все-же запускаются нормально. Например простейшее приложение на Delphi запускается без проблем, попробовал даже Dbgview.exe - тоже из памяти все работает. Но некоторые не работают выплевывая "No more threads can be created in the system", хотя в XP все гладко...
Т.е. по идее нужно найти где, в какой структуре в Висте прописано ограничение на количество потоков. Кстати, ошибка всегда одна и та же(и адрес один): Код (Text): Exception EOleSysError in module xxx.exe at 00068171 No more threads can be created in the system
Проблема была в ZwUnmapViewOfSection Убрал вызов этой функции и все заработало. Правда все-таки на некоторых компах не работает... Да, забыл указать одну деталь - процесс запускался в режиме отладки. Без DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS или DebugActiveProcess все работало как часы. Но отчего-то с отладкой иногда не работает...