Собственно говоря странность какая-то тварится. Программа выполняет следующие действия: 1) Получаются отладочные привилегии 2) Открывается процесс, внедряется туда имя dll файла (через NtMapViewOfSection) 3) Запускается удаленный поток с адресом LoadLibraryA и параметром - адресом куда была отображена секция. 4) Далее ожидается завершение потока и получение кода возврата. на Windows XP работает отлично. На Windows 7 тоже отлично, если идет внедрение в пользовательский процесс (explorer к примеру), но вот при попытке тоже самое сделать для svchost/services/lsass CreateRemoteThread возвращает ноль, а GetLastError = 8 (ERROR_NOT_ENOUGH_MEMORY) Секция маппится с правами PAGE_EXECUTE_READWRITE. (хотя достаточно будет и просто RW) Процесс открывается с правами PROCESS_ALL_ACCESS Программа запускается под админом + наивысший уровень UAC CreateRemoteThread запускал и с указанием размера стека(1 мегабайт) и без указания (0) всё равно не помогает. Через отладчик проверял - данные точно есть в процессе и права доступа RWE У кого какие предложения будут?
Тебе выше дали ссылку на MSDN. Проблема решается или использованием RtlCreateUserThread() вместо CreateRemoteThread() или патчингом CsrClientCallServer() в контексте своего процесса.