Как установить хук на CSRSS.exe ??
От: Аноним  
Дата: 10.01.03 15:03
Оценка:
Здравствуйте, Уважаемые. У меня возникла проблема, нужно перехватить
появление окна в системе (и закрыть его)... я использую глобальный хук
(WH_CBT)... окна вылезают из потоков сиспроцесса CSRSS.EXE .. проблема в том, что я не могу загрузить мою dll а адресное пространство именно этого процесса ..
хотя для других процессов моя dll работает без проблем (появления их окошек перехватываются)...
чего я только
не делал:
1. прописывал в реестре автозагрузку dll (... AppInit_DLLs) ... результат —
моя dll загружается в адресное пространство всех тех процессов на которые спроецирован модуль User32.dll , .. хотя CSRSS.EXE тоже его использует .. на него это не влияет (

2. устанавливал хук в системе из приложения, которое имело права отладчика
(т.е. имело право просматривать системные процессы)

// Enabling the debug privilege allows the application to see
// information about service applications
BOOL fOk = FALSE; // Assume function fails
HANDLE hToken;

// Try to open this process's access token
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES,
&hToken)) {

// Attempt to modify the "Debug" privilege
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL);
fOk = (GetLastError() == ERROR_SUCCESS);
CloseHandle(hToken);
}

...........
но ничего не помогает .....
если кто-нибудь поможет .... буду ОЧЕНЬ признателен
...

Thanks,
Denis
Re: Как установить хук на CSRSS.exe ??
От: SergH Россия  
Дата: 10.01.03 15:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Уважаемые. У меня возникла проблема, нужно перехватить

А>появление окна в системе (и закрыть его)... я использую глобальный хук
А>(WH_CBT)... окна вылезают из потоков сиспроцесса CSRSS.EXE .. проблема в том, что я не могу загрузить мою dll а адресное пространство именно этого процесса ..
А>хотя для других процессов моя dll работает без проблем (появления их окошек перехватываются)...
А>чего я только
А> не делал:
[skip]

Попробуй CreateRemoteThread.
Делай что должно, и будь что будет
Re: Как установить хук на CSRSS.exe ??
От: vasketsov Россия http://ntprog.by.ru
Дата: 10.01.03 15:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А> 1. прописывал в реестре автозагрузку dll (... AppInit_DLLs) ... результат -

Факт известный, так и задумано, в CSRSS эти модули не грузятся, грузить надо руками.
Так как там есть kernel32.dll, то CreateRemoteThread вполне должно справиться, если нет — я недавно писал код как процессы создаются, он на форуме с исходниками, он точно сработает, я так сам делаю, даже для SMSS.

А> 2. устанавливал хук в системе из приложения, которое имело права отладчика

Хуки тут отдыхают.

Вообще говоря, окошко могло создаться и из ядра, также как в адресном пространстве CSRSS бывают и нормальные, и "ядерные" потоки. Так что не факт что перехватишь, если user32.dll будешь править.
Васкецов Сергей
http://registry.km.ru
Re: Как установить хук на CSRSS.exe ??
От: Sergey Ten http://www.fastalgo.com
Дата: 10.01.03 15:41
Оценка:
А это разве не сервис? Если это сервис, то он выполняется в другой WindowStation. Оконные сообщения между WindowStation-ами не ходят, так что ваша программа, работающая в WinSta0, не перехватит сообщения от Service-0x0-3e7$ (WindowStation для сервисов, выполняющихся под системным аккаунтом).

Если так, то придется писать межпроцессорное взаимодействие, основанное не на оконных сообщениях, а на чем-то другом, например, именованных каналах. Но dll внедрять придется все равно, и даже CreateRemoteThread в случае сервиса бывает бессилен. Я сделал так:

— В своей программе создаю временный сервис и стартую его под системным аккаунтом (нужны админские права)
— Сервис стартует, и он уже занимается внедрением dll в адреснов пространство посредством CreateRemoteThread. Так как мой сервис сидит в той же WindowStation + Desktop-е, здесь проблем нет.
— После того, как dll успешно внедрена, сервис удаляет себя из базы данных сервисов и завершает работу. Никто и не заметил, шо це було

Вопследствии моя программа и внедренная DLL общаются через named pipe.

Примерно та же идея реализована у Марка Руссиновича в его утилите PsExec. Реализацию идеи можно посмотреть и на http://www.codeguru.com/network/xCmd.html
Re[2]: Как установить хук на CSRSS.exe ??
От: vasketsov Россия http://ntprog.by.ru
Дата: 10.01.03 15:50
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>А это разве не сервис?

Нет.

ST>и даже CreateRemoteThread в случае сервиса бывает бессилен.

Не верю. Факты пожалуйста. Пока что мне удавалось в любое Win32-приложение загружать код через CreateRemoteThread.
Васкецов Сергей
http://registry.km.ru
Re[3]: Как установить хук на CSRSS.exe ??
От: Sergey Ten http://www.fastalgo.com
Дата: 10.01.03 15:58
Оценка:
Здравствуйте, vasketsov, Вы писали:


V>Не верю. Факты пожалуйста. Пока что мне удавалось в любое Win32-приложение загружать код через CreateRemoteThread.


Мне это не удалось сделать для Oracle. В то же время в юзерские процессы все внедрялось без проблем.
Re[3]: Как установить хук на CSRSS.exe ??
От: Аноним  
Дата: 10.01.03 16:00
Оценка:
Вообще говоря Csrss не приложение Win32, а как раз и есть подсистема Win32 (это правда к сути дела не относится).
Но и в smss.exe и в csrss мне тоже удавалось загружать свою библиотеку через CreateRemoteThread (короче методом М. Руссиновича).
Re[4]: Как установить хук на CSRSS.exe ??
От: SergH Россия  
Дата: 10.01.03 16:00
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>Мне это не удалось сделать для Oracle. В то же время в юзерские процессы все внедрялось без проблем.


А небось прав не хватало. Ошибка какая была?
Делай что должно, и будь что будет
Re[5]: Как установить хук на CSRSS.exe ??
От: Sergey Ten http://www.fastalgo.com
Дата: 10.01.03 16:07
Оценка:
Здравствуйте, SergH, Вы писали:

SH>А небось прав не хватало. Ошибка какая была?

CreateRemoteThread возвращался без ошибки, как и все ему предшествующее (VirtualAllocEx, WriteProcessMemory). Но, возможно, ты прав, надо будет посмотреть еще раз.
Re[4]: Как установить хук на CSRSS.exe ??
От: vasketsov Россия http://ntprog.by.ru
Дата: 10.01.03 16:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вообще говоря Csrss не приложение Win32, а как раз и есть подсистема Win32 (это правда к сути дела не относится).

Как раз это существенно.
Подсистема для CSRSS действительно 1, то есть, NATIVE.

А>Но и в smss.exe и в csrss мне тоже удавалось загружать свою библиотеку через CreateRemoteThread

Проверю дома, уж больно сказочно звучит.
Проверять буду просто: CreateRemoteThread(ZwClose), закроется хэндл — круто.

А>(короче методом М. Руссиновича).

Это как? Что за метод? Если тот что по ссылке — то при чем тут сервисы?
Васкецов Сергей
http://registry.km.ru
Re[5]: Как установить хук на CSRSS.exe ??
От: Sergey Ten http://www.fastalgo.com
Дата: 10.01.03 16:24
Оценка:
Здравствуйте, vasketsov, Вы писали:

V>Это как? Что за метод? Если тот что по ссылке — то при чем тут сервисы?


Ссылка к сервисам имеет следующее отношение: в той утилите, на которую кажет ссылка, есть ресурс RC_DATA, который и представляет из себя код сервиса. При запуске удаленной команды этот ресурс читается и сбрасывается во временный файл, который и становится временным сервисом. Но к обсуждению CreateRemoteThread это не имеет отношения.
Re[6]: Как установить хук на CSRSS.exe ??
От: vasketsov Россия http://ntprog.by.ru
Дата: 10.01.03 16:31
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>Но к обсуждению CreateRemoteThread это не имеет отношения.

Я об этом же.
Васкецов Сергей
http://registry.km.ru
Re[5]: Как установить хук на CSRSS.exe ??
От: Small  
Дата: 10.01.03 16:40
Оценка:
А>>Но и в smss.exe и в csrss мне тоже удавалось загружать свою библиотеку через CreateRemoteThread
V>Проверю дома, уж больно сказочно звучит.
V>Проверять буду просто: CreateRemoteThread(ZwClose), закроется хэндл — круто.

А что собираешься закрывать то. Код для внедрения в smss.exe могу и поискать если очень нужен. Нужно всего лишь включить привилегию отладки.

А>>(короче методом М. Руссиновича).

V>Это как? Что за метод? Если тот что по ссылке — то при чем тут сервисы?

Внедрение описано в небезизвестной книге Руссиновича (ссылку не сотрел)
Вкратце. Открываем удаленный процесс. Выделяем в нем регион памяти, в которую записываем имя внедряемой библиотеки. Запускаем в удаленном процессе поток с функцией LoadLibrary, которой в качестве параметра передаем адрес выделенного региона. Ждем GetExitCodeThread код возврата — который есть адрес загрузки нашей библиотеки. Имея ее адрес можем запускать из нее любую функцию.

Причем тут сервисы не знаю.
Re[6]: Как установить хук на CSRSS.exe ??
От: vasketsov Россия http://ntprog.by.ru
Дата: 10.01.03 16:47
Оценка:
Здравствуйте, Small, Вы писали:

V>>Проверять буду просто: CreateRemoteThread(ZwClose), закроется хэндл — круто.

S>А что собираешься закрывать то.
А пофигу, найду чего, у меня есть свой работающий TaskEx, им и погляжу что закрыть можно.
НАпример, хэндлы на CSRSS и Winlogon закрою.

S>Вкратце. Открываем удаленный процесс. Выделяем в нем регион памяти, в которую записываем имя внедряемой библиотеки. Запускаем в удаленном процессе поток с функцией LoadLibrary, которой в качестве параметра передаем адрес выделенного региона. Ждем GetExitCodeThread код возврата — который есть адрес загрузки нашей библиотеки. Имея ее адрес можем запускать из нее любую функцию.


В smss НЕ грузится kernel32.dll, потому LoadLibrary там нет. Там надо делать через LdrLoadDll. В этом у меня и был вопрос, а Ваш ответ как раз и проясняет, делали Вы это реально для SMSS или нет.
Васкецов Сергей
http://registry.km.ru
Re[7]: Как установить хук на CSRSS.exe ??
От: Small  
Дата: 10.01.03 17:07
Оценка:
Здравствуйте, vasketsov, Вы писали:

> НАпример, хэндлы на CSRSS и Winlogon закрою.

Взять адрес через иду описателя Winlogon что-ли — прокатит конечно, но жди синего экрана.

> В smss НЕ грузится kernel32.dll, потому LoadLibrary там нет. Там надо делать

> через LdrLoadDll. В этом у меня и был вопрос, а Ваш ответ как раз и проясняет,
> делали Вы это реально для SMSS или нет.

Да ты прав с smss.exe лажа вышла — я ошибся делал для csrss в нем точно kernel32 есть (и потому все проходило). для smss.exe придется делать черз LdrLoadDll — суть дела это не меняет — должно прокатить.
Re: Как установить хук на CSRSS.exe ??
От: Аноним  
Дата: 11.01.03 07:07
Оценка:
Ребята, спасибо ОГРОМНОЕ за помощь !!!!

Denis
Re: Как установить хук на CSRSS.exe ??
От: Аноним  
Дата: 11.01.03 09:29
Оценка:
ААААААААААА народ , СПАСАЙТЕ ....!!!
это опять я ....
Такая же проблема в Windows 98 ...
не могу внедрить свой хук в адресное пространство процесса ..
только тут не знаю в какой процесс нужно внедрять ... глобальный хук не перехватывает создание окна ... значит процесс системный ...
(OKI принтер драйвер ...) и как узнать список системных задач запeщенных под Windows 98 (и какие они модули используют ... в win98 Task Meneger'а нету )
Re: Как установить хук н CSRSS.exe ??
От: Valerio Россия linkedin.com/in/boronin
Дата: 11.01.03 11:26
Оценка:
я не думаю что OKI Printer driver это системный процесс
я думаю что это OKI Printer driver control application ты видишь...
короче тебе нужно слить с www.iarsn.com TaskInfo2003 и все посмотреть самому
прежде чем кипяшиться
там тебе и покажут процесс куда надо внедрять хук, ИМХО
You wrote on Sat, 11 Jan 2003 09:29:49 GMT:
> From: Оценить
> ААААААААААА народ , СПАСАЙТЕ ....!!!
> это опять я ....
> Такая же проблема в Windows 98 ...
> не могу внедрить свой хук в адресное пространство процесса ..
> только тут не знаю в какой процесс нужно внедрять ... глобальный хук
> не перехватывает создание окна ... значит процесс системный ...
> (OKI принтер драйвер ...) и как узнать список системных задач
> запeщенных под Windows 98 (и какие они модули используют ... в win98
> Task Meneger'а нету )
With best regards, Valery A. Boronin. E-mail: boronin@novosoft.ru
Posted via RSDN NNTP Server 1.4.1
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: Как установить хук н CSRSS.exe ??
От: Myckyc  
Дата: 11.01.03 12:44
Оценка:
Здравствуйте, Valerio, Вы писали:

V>я не думаю что OKI Printer driver это системный процесс

V>я думаю что это OKI Printer driver control application ты видишь...
V>короче тебе нужно слить с www.iarsn.com TaskInfo2003 и все посмотреть самому
V>прежде чем кипяшиться
V>там тебе и покажут процесс куда надо внедрять хук, ИМХО
V>You wrote on Sat, 11 Jan 2003 09:29:49 GMT:
V>With best regards, Valery A. Boronin. E-mail: boronin@novosoft.ru



Этот процесс — Spooler Sub System Process ...

Если не системный, то почему глобал хук на него срабатывает?


V>там тебе и покажут процесс куда надо внедрять хук, ИМХО


А хук вешается не на процесс а на его поток .... а если spooler создаст новый поток и там выведет сообщение..?
Re[3]: Как установить хук н CSRSS.exe ??
От: Myckyc  
Дата: 11.01.03 12:46
Оценка:
Ой очичатка ...

Глобал хук на Spooler Sub System Process ...
НЕЕЕЕЕЕЕЕ!!! срабатывает
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.