Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Кхм... 30.08.06 02:39 Число просмотров: 2374
Автор: Killer{R} <Dmitry> Статус: Elderman Отредактировано 30.08.06 02:42 Количество правок: 2
|
> Вкратце: ЕДИНСТВЕННЫЙ способ получить из юзермоды список > процессов - через функцию NtQuerySystemInformation (либо ее > Zw аналог - в юзермоде они ничем не отличаются). Все psapi > и прочие таскманагеры используют именно ее. Задача сводится > к перехвату этой фукнции и фильтрации возвращаемых данных в > соответствии с собственными пожеланиями. А уж способов Если делать по честному - тогда да. А если не совсм, так навскидку (чисто юзерспейс) ;) -
1)Если не перехывтывает ZwOpenProcess
for(DWORD i=0;i<0x10000;i+=2)
{
Handle prc= ::OpenProcess(...
}
Вариация - вместо OpenProcess - DebugActiveProcess, который благополучно работает через csrss.exe
2)Если имеет окна
EnumWindows/GetWindowThreadProcessId
3)Тот же NtQuerySystemInformation, но перечисляющий например хэндлы (и их процессы-владельцы)
> перехвата придумано море. Самые популярные: патч прямо в > юзерлевеле (ищи Джеффри Рихтер) и патч таблицы системных > сервисов в нулевом кольце. Первый популярен среди людей, > которые принципиально не хотят писать драйвера. Второй - > среди остальных Насчет принципов и перехвата со стороны юзермода - не всегда есть права админа для загрузки драйвера. + к тому - вспомним мой фтпдрайв - тут неожиданный плюс вылез перехвата в юзермоде (проме того что он и из-под гостя запускается) - он под вистой прекрасно работает. И пофиг ему что там навороченная защита ядра, начиная с проверки сертификатов загружаемых драйверов и заканчивая периодической проверкой целостности KeServiceDescriptorTable, PsProcessList и иже с ними.
|
|
|