Re[2]: Проблема с CreateRemoteThread при перехвате API
От: Ivan Россия www.rsdn.ru
Дата: 08.04.06 10:00
Оценка: 7 (3)
Здравствуйте, Alter_, Вы писали:

A_>Подозреваю, что из-за того, что SMSS.EXE не является Win32 приложением. Это Native.

A_>А создание Native Thread — операция нетривиальная (на сколько мне известно) и одним вызовом, тем более из Win32, не делается.

CreateRemoteThread не работает для процессов в других терминальных сессиях и для native процессов типа smss. Это связано с тем, что в native процессы не загружена kernel32.dll (а для других терминальных сессий — из-за того, что новые потоки/процессы должны регистрироваться в csrss в текущей сессии).

Создать поток можно при помощи более низкоуровневых функций — NtCreateThread или RtlCreateUserThread. здесь есть пример — http://www.rsdn.ru/Forum/Message.aspx?mid=167206&only=1
Автор: vasketsov
Дата: 08.01.03


В этом случае, он не будет зарегистрирован в csrss и поэтому в нем может не работать часть API функций (в частности из такого потока нельзя создавать процессы и потоки )
Проблема с CreateRemoteThread при перехвате API
От: Аноним  
Дата: 07.04.06 11:55
Оценка:
Пишу программу, которая активно хукает различные юзермодные функции. В момент запуска программы пишу свой код ко всем процессам и запускаю его вызовом CreateRemoteThread. Всё работает прекрасно, но при попытке вызвать CreateRemoteThread для запуска моего кода в SMSS.EXE функция возвращает NULL, а GetLastError() возвращает 8 — "Недостаточно памяти для обработки команды.". Для всех остальных процессов системы всё проходит нормально.. Проблема появляется не только на моей машине, но и на всех, где мне удалось попробовать, — (2000/XP/2003). Почему так и как исправить?
Re: Проблема с CreateRemoteThread при перехвате API
От: Alter_ Украина http://alter.org.ua
Дата: 07.04.06 20:34
Оценка:
Подозреваю, что из-за того, что SMSS.EXE не является Win32 приложением. Это Native.
А создание Native Thread — операция нетривиальная (на сколько мне известно) и одним вызовом, тем более из Win32, не делается.
--
Alter, http://alter.org.ua
Re[3]: Проблема с CreateRemoteThread при перехвате API
От: Kerrigan  
Дата: 23.10.06 10:42
Оценка:
Здравствуйте, Ivan, Вы писали:

I>Создать поток можно при помощи более низкоуровневых функций — NtCreateThread или RtlCreateUserThread. здесь есть пример — http://www.rsdn.ru/Forum/Message.aspx?mid=167206&only=1
Автор: vasketsov
Дата: 08.01.03


I>В этом случае, он не будет зарегистрирован в csrss и поэтому в нем может не работать часть API функций (в частности из такого потока нельзя создавать процессы и потоки )

Скажите, а как можно самому зарегистрироваться в csrss ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.