Winlogon notification package
От: Роман Бурда Украина http://proxysearcher.sourceforge.net
Дата: 23.05.06 15:10
Оценка: 570 (18)
Статья:
Winlogon notification package
Автор(ы): Роман Бурда
Дата: 23.05.2006
Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.


Авторы:
Роман Бурда

Аннотация:
Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.
Любая задача имеет решение, даже когда решения не существует
Re: Winlogon notification package
От: Max404.NET Россия http://HrExpress.ru/
Дата: 01.06.06 19:20
Оценка:
Здравствуйте, Роман Бурда, Вы писали:

в журнале допущена досадная ошибка, указано "Требуется знание C#", а код на С (диска сейчас нет, проверить не могу). И вообще опечаток хватает

Я-то, понимаш, обрадовался, щас, расширю Логон для своих нужд... щас...
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re: Winlogon notification package
От: Chaa  
Дата: 27.07.06 09:08
Оценка: 7 (1)
Однажды довелось делать такую dll, столкнулся с одним интересным моментом.
Dll должна была включать или отключать определенное оборудование в зависимости от входящего в систему пользователя. Вызов функции SetupDiChangeState из dll завершался с кодом возврата 5 — отказано в доступе. Пытался включать привилегию SeLoadDriver — все бесполезно. И это несмотря на то, что опция Impersonate была 0, а сам Winlogon работает с привелегиями System.
В итоге пришлось из dll запускать отдельный процесс, который включает/выключает устройства, а в dll ждать его завершения.
Re[2]: Winlogon notification package
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 27.07.06 12:32
Оценка:
Здравствуйте, Max404.NET, Вы писали:

MN>в журнале допущена досадная ошибка, указано "Требуется знание C#", а код на С (диска сейчас нет, проверить не могу).

Да, я видел... Но я не виноват... Этот текст я не добавлял. ... Вообще то требуется знание чистого С...
>>И вообще опечаток хватает
Забыл упомянуть что для того чтобы код скомпилить надо поставить SDK ...
MN>Я-то, понимаш, обрадовался, щас, расширю Логон для своих нужд... щас...
Да, управляемую dll winlogon по идее не сможет подгрузить .
Любая задача имеет решение, даже когда решения не существует
Re[2]: Winlogon notification package
От: ArtemGorikov Австралия жж
Дата: 28.07.06 06:21
Оценка:
Здравствуйте, Max404.NET, Вы писали:

MN>Здравствуйте, Роман Бурда, Вы писали:


MN>в журнале допущена досадная ошибка, указано "Требуется знание C#", а код на С (диска сейчас нет, проверить не могу). И вообще опечаток хватает


MN>Я-то, понимаш, обрадовался, щас, расширю Логон для своих нужд... щас...


Какие проблемы создать регулярную dll-ку на C#? Или собрать dll-ку на C++/cli и перенаправлять из нее вызовы в сборку на C#?
Re[3]: Winlogon notification package
От: Max404.NET Россия http://HrExpress.ru/
Дата: 28.07.06 07:48
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>Здравствуйте, Max404.NET, Вы писали:


MN>>Здравствуйте, Роман Бурда, Вы писали:


MN>>в журнале допущена досадная ошибка, указано "Требуется знание C#", а код на С (диска сейчас нет, проверить не могу). И вообще опечаток хватает


MN>>Я-то, понимаш, обрадовался, щас, расширю Логон для своих нужд... щас...


AG>Какие проблемы создать регулярную dll-ку на C#? Или собрать dll-ку на C++/cli и перенаправлять из нее вызовы в сборку на C#?


Можно поподробнее?

ЗЫ. Вы внимательно прочитали по ссылке?
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re: Winlogon notification package
От: Lonely Dog Россия  
Дата: 28.07.06 15:12
Оценка:
Здравствуйте, Роман Бурда, Вы писали:

РБ>Статья:

РБ>Winlogon notification package
Автор(ы): Роман Бурда
Дата: 23.05.2006
Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.


РБ>Авторы:

РБ> Роман Бурда

РБ>Аннотация:

РБ>Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.
Роман, спасибо за пример к статье. Он мне помог избавиться от трояна, ставящегося как Winlogon notification package. При удалении его записи из реестра, троян восстанавливал ее снова. Я скачал ваш пример (самому было лень писать , поменял имена функций и с помощью MoveFileEx заменил после перезагрузки оригинальный package на ваш. После перезагрузки все стало нормально.
Спасибо еще раз.
Re[2]: Winlogon notification package
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 28.07.06 20:00
Оценка: 22 (1) :)
Здравствуйте, Lonely Dog, Вы писали:

LD>Спасибо еще раз.


Мне очень приятно что статья Вам помогла , ведь для меня это высшая награда . И это значит я живу не напрасно ...
Любая задача имеет решение, даже когда решения не существует
Re: Winlogon notification package
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 29.07.06 04:07
Оценка: 12 (2)
Здравствуйте, Роман Бурда, Вы писали:

РБ>Статья:

РБ>Winlogon notification package
Автор(ы): Роман Бурда
Дата: 23.05.2006
Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.


В статье нет самого главного — как с этой написанной библиотекой общаться другим программам. От библиоекти, которая просто пишет что-то в лог толку нет никакого.

Я недавно закончил разрабатывать свою WLNP и набил несколько шишек. Для общения с библиотекой я решил использовать связку из Event, Mutex и MMF. И одной из шишек оказалось то, что WLNP вообще говоря загружается не в единственном экземпляре. А так как я думал, что это не так, то в библиотеке я всегда создавал MMF. В результате остальные загруженные экземпляры не моги этого сделать и клиент данной библиотеки получал не все сообщения о событиях.

Когда, наконец, меня осенило почему некоторые события не доходят до клиента, то я просто сделал так: сначала WLNP пробует создать MMF, если не получилось, то она пробует его открыть. И вуаля — все заработало.

Так же кто-то говорил, что ловится будет не все. Но я проверял, ловится и Fast User Switching, и удаленные подключения.

Ну и, наконец, в статье нет про события "Reconnect" и "Disconnect" (это как раз при Fast User Switching).
Re: Winlogon notification package
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 29.07.06 04:09
Оценка:
Здравствуйте, Роман Бурда, Вы писали:

И еще, ну откуда у всех берутся stdcall? В МСДН cdecl.
Re: Помогите перевести в компилябельный вид.
От: IceStudent Украина  
Дата: 29.07.06 04:12
Оценка:
Здравствуйте, Роман Бурда, Вы писали:

> не используется ли Notify.dll другим процессом (если файл не удается переименовать – значит, кто-то его использует).

Переименовать можно и используемый файл. Удалить его нельзя и перенести на другой раздел (только скопировать).
Re[2]: Помогите перевести в компилябельный вид.
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 30.07.06 09:28
Оценка:
Здравствуйте, IceStudent, Вы писали:

IS>Переименовать можно и используемый файл. Удалить его нельзя и перенести на другой раздел (только скопировать).


Когда у меня была выключена имперсонизация, переименовать файл не удавалось когда он использовался... Согласен, что я сказал не совсем однозначно, но не хотелось делать статью тяжелой в плане понимания, поэтому многое пришлось опустить. А совет для данного примера работает — сам проверял .
Любая задача имеет решение, даже когда решения не существует
Re[2]: Winlogon notification package
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 30.07.06 09:48
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

SA>Здравствуйте, Роман Бурда, Вы писали:


РБ>>Статья:

РБ>>Winlogon notification package
Автор(ы): Роман Бурда
Дата: 23.05.2006
Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.


SA>В статье нет самого главного — как с этой написанной библиотекой общаться другим программам.

В рамки данной статьи не вошли возможные способа передачи данных между процессами. Скажу одно, что полученные данные мне надо было передавать на сервер TCP и все получалось без проблем. В самом деле, уже столько написано по поводу передачи данных между процессами на RSDN что мне было просто стыдно добавлять это к статье.

SA>От библиоекти, которая просто пишет что-то в лог толку нет никакого.


Во первых, она простая, во вторых — ее очень легко можно использовать как основу для написания более серьезного проекта. С помощью библиотеки можно увидеть что пакет работает. Я поставил за цель научить пользоваться, а не рассмотреть все случаи жизни . Если вышесказанным пренебречь — тогда да, толку никакого.

SA>Я недавно закончил разрабатывать свою WLNP и набил несколько шишек. Для общения с библиотекой я решил использовать связку из Event, Mutex и MMF. И одной из шишек оказалось то, что WLNP вообще говоря загружается не в единственном экземпляре.


А вы включали имперсонификацию?

SA>Ну и, наконец, в статье нет про события "Reconnect" и "Disconnect" (это как раз при Fast User Switching).


Странно, еще раз посмотрел MSDN и не нашел этих событий... Где можно их почитать?
Любая задача имеет решение, даже когда решения не существует
Re[3]: Winlogon notification package
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 30.07.06 11:45
Оценка:
Hello Burd, you wrote:

>> От библиоекти, которая просто пишет что-то в лог толку нет никакого.

> Во первых, она простая, во вторых — ее очень легко можно использовать как основу для написания более серьезного проекта. С помощью библиотеки можно увидеть что пакет работает. Я поставил за цель научить пользоваться, а не рассмотреть все случаи жизни

В данном виде статья — просто напросто перевод на русский раздела МСДН по WLNP.

> А вы включали имперсонификацию?


Нет.

>> Ну и, наконец, в статье нет про события "Reconnect" и "Disconnect" (это как раз при Fast User Switching).

> Странно, еще раз посмотрел MSDN и не нашел этих событий... Где можно их почитать?

Не знаю. В мсдн про них почему-то нет. Но данные события есть Делаются по аналогии с остальными.

--
Всего хорошего, Слава
ICQ: 197577902
Posted via RSDN NNTP Server 2.0
Re[4]: Winlogon notification package
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 30.07.06 12:26
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

SA>В данном виде статья — просто напросто перевод на русский раздела МСДН по WLNP.


То есть если сделать пример более сложным, то статья перестанет быть переводом ???
Вообще то так и есть. В основной части это перевод МСДН. Ведь в конце концов WLNP документированная фича и ничего нового в ней не придумаешь.
Если Вы знаете что-то что в статье не отображено, опишите пожалуйста прямо здесь. Будет толк для всех, и для меня в том числе. А так это просто пустые разговоры.
Любая задача имеет решение, даже когда решения не существует
Re[5]: Winlogon notification package
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 30.07.06 23:24
Оценка:
Hello Burd, you wrote:

> То есть если сделать пример более сложным, то статья перестанет быть переводом ???


Если пример сделать более сложным (читай более готовым к использованию), то это будет гораздо полезнее.

> Если Вы знаете что-то что в статье не отображено, опишите пожалуйста прямо здесь.


Про реконент, дисконет и множественную загрузку я уже сказал. Про stdcall тоже.

--
Всего хорошего, Слава
ICQ: 197577902
Posted via RSDN NNTP Server 2.0
Re[5]: Winlogon notification package
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 30.07.06 23:48
Оценка: -3
Hello Burd, you wrote:

> То есть если сделать пример более сложным, то статья перестанет быть переводом ???


И еще, мне непонятно для кого предназначена статья. Тем кто знает английский она не нужна. Те кто не знает английский, почти наверняка, не смогут прикрутить к данной реализации IPC.

--
Всего хорошего, Слава
ICQ: 197577902
Posted via RSDN NNTP Server 2.0
Re[6]: Winlogon notification package
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 31.07.06 03:05
Оценка: 1 (1) +6
Здравствуйте, Slava Antonov, Вы писали:

SA>И еще, мне непонятно для кого предназначена статья. Тем кто знает английский она не нужна. Те кто не знает английский, почти наверняка, не смогут прикрутить к данной реализации IPC.


между "знает" и "не знает" есть еще куча народа "могу, но ломает", так что если теперь мне придется вместо 10 страниц на англицком разбираться в 5 на русском и в 5 на аглицком — БОЛЬШОЕ спасибо переводчику этих 5 страниц.
... << RSDN@Home 1.2.0 alpha rev. 654>>
Re: К сожалению это малополезная информация
От: Аноним  
Дата: 07.08.06 09:12
Оценка: 16 (2)
Здравствуйте, Роман Бурда

Описанный метод весьма опсен,
Если вы не собираетесь заменять метод входа в систему а нужны только события то есть SENS API
см MSDN поиск ISensLogon

The ISensLogon interface inherits the methods of the standard COM interfaces:

IUnknown
IDispatch
In addition, ISensLogon defines the following methods.

Method Description
Logon A user has logged on.
Logoff A user has logged off.
StartShell Shell has been started.
DisplayLock Screen display has been locked.
DisplayUnlock Screen display has been unlocked.
StartScreenSaver Screen saver has been started.
StopScreenSaver Screen saver has been stopped.


ISensLogon2
In addition, ISensLogon2 defines the following methods.

Method Description
Logon A user has logged on.
Logoff A user has logged off.
SessionDisconnect A session has been disconnected.
SessionReconnect A session has been reconnected.
SessionPostShell A user has logged on and Windows Explorer (Shell) is up and running.


кроме того есть еще и ISensNetwork ISensOnNow
Re[2]: К сожалению это малополезная информация
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 07.08.06 10:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Роман Бурда


А>Описанный метод весьма опсен,


Согласен.

А>Если вы не собираетесь заменять метод входа в систему а нужны только события то есть SENS API

А>см MSDN поиск ISensLogon

Это другой способ решения поставленной задачи. Работа с COM немного сложнее чем с Win32 API и требует больше времени для того чтобы разобраться. Согласен с тем что на COM все выглядит красивее, хотя для многих менее понятно и очевидно.
За замечания спасибо.

>>К сожалению это малополезная информация


Категорически не согласен. Если в Вашем компьютере заведется вирус, основанный на WLNP, Вы его не сможете найти не зная ничего о этой технологии. Это во первых. Во вторых очень важным преимуществом метода является его простота. В этом плане API всегда выигрывало перед COM. Но, как всегда, у каждого метода есть свои недостатки.

За замечания спасибо, заинтересованный пользователь сможет выбирать.
Любая задача имеет решение, даже когда решения не существует
Re[3]: К сожалению это малополезная информация
От: Аноним  
Дата: 07.08.06 18:29
Оценка:
Я не буду долго графоманить.
Спор на тему гипотетического вируса будет офтопиком.
Если для кого-то COM слишком сложен то GINA ему противопоказана во избежании 50 ребутов и нервного срыва.
Опять же про сложность — судите сами — вот код что я набросал 2 года назад когда хотел пощупать что за зверь такой SENS.

CComBSTR GuidToBSTR(REFGUID guid)
{
// 39 — length of string representation of GUID + 1
CComBSTR b(39,L"");
int nRet = StringFromGUID2(guid, b.m_str, 39);
return b;
}

class CNotify : private ISensLogon
{
STDMETHOD_(ULONG,AddRef)() { return 1; }
STDMETHOD_(ULONG,Release)() { return 1; }
STDMETHOD (GetTypeInfoCount)(UINT*) { return E_NOTIMPL; }

STDMETHOD (GetTypeInfo)(UINT,LCID,ITypeInfo**){ return E_NOTIMPL; }
STDMETHOD (GetIDsOfNames)(REFIID,LPOLESTR*,UINT,LCID,DISPID*){ return E_NOTIMPL; }
STDMETHOD (Invoke)(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*){ return E_NOTIMPL; }


STDMETHOD(QueryInterface)(REFIID riid, void** ppvObject)
{
*ppvObject = NULL;
if (riid == IID_IUnknown || riid == IID_IDispatch ||
riid == IID_ISensLogon)
{ *ppvObject = this; }
return (*ppvObject != NULL)? S_OK : E_NOINTERFACE;
}

STDMETHOD(Logon)(BSTR bstrUserName){ return S_OK; }
STDMETHOD(Logoff)(BSTR bstrUserName){ return S_OK; }
STDMETHOD(StartShell)(BSTR bstrUserName){ return S_OK; }
STDMETHOD(DisplayLock)(BSTR bstrUserName){ return S_OK; }
STDMETHOD(DisplayUnlock)(BSTR bstrUserName){ return S_OK; }
STDMETHOD(StartScreenSaver)(BSTR bstrUserName){ return S_OK; }
STDMETHOD(StopScreenSaver)(BSTR bstrUserName){ return S_OK; }
public:
bool Init()
{
CComPtr<IEventSystem> es;
CComPtr<IEventSubscription> ess;
HRESULT hr;

es.CoCreateInstance(PROGID_EventSystem);
ess.CoCreateInstance(PROGID_EventSubscription);

ess->put_SubscriptionName(CComBSTR("SADFSDF"));

ess->put_EventClassID(GuidToBSTR(SENSGUID_EVENTCLASS_LOGON));
ess->put_SubscriberInterface(this);
es->Store(PROGID_EventSubscription,ess);
return true;
}
}x;

int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
x.Init();

MSG msg;
while(GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;
}

PS:Я его проверил — на моем 2к3 server отлично работает.
Re[2]: Winlogon notification package
От: acronim  
Дата: 08.08.06 21:25
Оценка:
LD>Роман, спасибо за пример к статье. Он мне помог избавиться от трояна, ставящегося как Winlogon notification package. При удалении его записи из реестра, троян восстанавливал ее снова. Я скачал ваш пример (самому было лень писать , поменял имена функций и с помощью MoveFileEx заменил после перезагрузки оригинальный package на ваш. После перезагрузки все стало нормально.

Просто попался плохой троян, раз не мониторит эту ветку
PS Я мониторю с Winlogona, хоть и не троян
Все должно быть просто
Re: mpr.exe
От: Аноним  
Дата: 22.08.06 02:06
Оценка:
Здравствуйте, Роман Бурда, Вы писали:


РБ>Стоит отметить, что этого ключа не существует в ОС Win9x, но существует недокументированный аналог – HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\MPRServices. С помощью этого ключа можно указать процессу mpr.exe (этот процес является некоторым аналогом Winlogon для Win9x, поскольку также отвечает за вход пользователей в систему) загружать в свое адресное пространство необходимую динамическую библиотеку. Таким образом, теоретически можно получить доступ к событиям входа и выхода пользователя из системы.


Можно узнать подробнее как использовать это. В голову приходит только одно: загрузиться используя mpr.exe и поставить хук на все сообщения.Можно ли сделать по другому? Мне нужно мониторить загрузку\выключение компьютера и вход\выход пользователя в win9x.
Буду благодарен за совет.
Re[2]: mpr.exe
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 22.08.06 16:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Можно узнать подробнее как использовать это.

А>В голову приходит только одно: загрузиться используя mpr.exe и поставить хук на все сообщения.Можно ли сделать по другому? Мне нужно мониторить загрузку\выключение компьютера и вход\выход пользователя в win9x.
А>Буду благодарен за совет.

Вход в систему мониторится очень просто — можно положить что вход в систему произведен когда была вызвана функция EntryPoint. В принципе так оно и есть. Функция вызываеться в какой то момент до появления приглашения для входа пользователя в систему.
Во всех остальных случаях мне неизвестны механизмы обработки событий с использованием указанного метода.

P.S. Я писал програмку, которая создавала отдельный поток в адресном пространстве mpr.exe и мониторила вход и выход пользователя. Но сделано было это не очень хорошо, поскольку я опрашивал текущего пользователя в цикле с паузой. Но я заметил одну интересную вещь. До какого-то момента (не помню какого именно) функция GetUserName не могла получить имя пользователя (возвращала FALSE). Может это чем то поможет в ваших поисках...
Любая задача имеет решение, даже когда решения не существует
Re[2]: К сожалению это малополезная информация
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 12.10.06 13:42
Оценка:
А>Описанный метод весьма опсен,
этот метод опасен только тем, что код исполняется в контексте winlogon и взрыв в таких местах фактически приравнивается к падению ОС или как минимум приведет к неработающему функционалу. справедливости ради отмечу, что некоторые падения не скажутся на стабильности ОС в силу
try
{
    Boot->Notify->EntryPoints[ Boot->Operation ]( &Info );
}
except( WlpNotifyExceptionFilter( GetExceptionInformation(), Boot ) )
{
    NOTHING ;
}


итого: если писать аккуратно то опаснотей особых нет. в любом случае по дизайну это часто гораздо лучше чем получать эту же ф-ть через драйвера и залежи любопытного кода в user mode, потому статья, считаю, нужная даже если в MSDN все это и есть, как тут кто-то заметил выше по ветке. Там вообще сейчас почти все есть, кстати — но это ж не значит что надо всем теперь молчать, не так ли?

А>Если вы не собираетесь заменять метод входа в систему а нужны только события то есть SENS API

А>см MSDN поиск ISensLogon
да, это интересный вариант, но просто хочу отметить, что winlogon notification packages
— предоставляют гораздо больше информации, чем можно получить через SENS. например, имя windows station, desktop & token handles (чего в SENS не найдете). Зачастую идентификатора сессии и имени пользователя, вошедшего в систему (собственно это все что есть в SENS) недостаточно для решения задач. А получение такой информации вполне может оказаться неоправданной тратой ресурсов (речь о времени разработчиков) по сравнению с использованием WNLP.
— не требуют COM+ Event System service running (который часто просто отключен со всеми вытекающими)
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]: Winlogon notification package
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 12.10.06 14:33
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

SA>В статье нет самого главного — как с этой написанной библиотекой общаться другим программам. От библиоекти, которая просто пишет что-то в лог толку нет никакого.

Это все сами себе сделают, если надо. Статья же не о том как писать такую библиотеку, мало ли чего еще где нет? А то что обозвали WLNP библиотекой — это конечно лучше бы было заменить на что нибудь менее сбивающее с толку, тут согласен полностью.

SA>Так же кто-то говорил, что ловится будет не все. Но я проверял, ловится и Fast User Switching, и удаленные подключения.

не могли бы Вы мне напомнить, если проверяли, конечно: ловятся ли на всех ОС, начиная, скажем, с 2000 SP3, логоны всех основных типов, перечисленных в параметре DWORD dwLogonType ф-ии LogonUser:

LOGON32_LOGON_BATCH
LOGON32_LOGON_INTERACTIVE
LOGON32_LOGON_NETWORK
LOGON32_LOGON_SERVICE

или только LOGON32_LOGON_INTERACTIVE?

SA>Ну и, наконец, в статье нет про события "Reconnect" и "Disconnect" (это как раз при Fast User Switching).

да, автору не мешало бы пошарить просто по установленным на последних ОС с последними SP & updates записям в реестре — на предмент какие еще есть, кроме перечисленных в статье? это бы позволило обнаружить еще "PostShell" в пару к упомянутому "StartShell" — не правда ли, логично чтобы все события тут были парными и если у кого-то пары не хватает, то это же не значит что ее нет
... << RSDN@Home 1.2.0 alpha rev. 655>>
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[3]: Winlogon notification package
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 13.10.06 00:04
Оценка:
Hello Valery A. Boronin, you wrote:

> не могли бы Вы мне напомнить, если проверяли, конечно: ловятся ли на всех ОС, начиная, скажем, с 2000 SP3, логоны всех основных типов,перечисленных в параметре DWORD dwLogonType ф-ии LogonUser:


Нет не проверял.
Я проверял на Win XP:
1) Обычный вход в систему находящуюся в домене.
2) Обычный вход в систему не в домене.
3) Fast user switching.
4) Вход через Remote Desktop.

--
Всего хорошего, Слава.
Если в вопросе нет никакого смысла, то не стоит его искать и в ответе.
http://deadbeef.narod.ru (ICQ: 197577902)
Posted via RSDN NNTP Server 2.0
Re[4]: Winlogon notification package
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 14.10.06 01:45
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

>> не могли бы Вы мне напомнить, если проверяли, конечно: ловятся ли на всех ОС, начиная, скажем, с 2000 SP3, логоны всех основных типов,перечисленных в параметре DWORD dwLogonType ф-ии LogonUser:


SA>Нет не проверял.

SA>Я проверял на Win XP:
SA>1) Обычный вход в систему находящуюся в домене.
SA>2) Обычный вход в систему не в домене.
SA>3) Fast user switching.
SA>4) Вход через Remote Desktop.
все верно, Слава! для Ваших целей все тут как надо
и большое спасибо за замечания к статье — они очень качественно дополняют перевод из MSDN.

Кстати, еще есть моменты, которые мне не нравятся в статье до конца — уже замечания по коду т.к. буквально только что посмотрел как сделан вариант с логом в файл — это же просто не всегда работает! Жалею что не получилось ознакомиться со статьей по техническим причинам и не глянул код к статье, когда ее подписывали в печать. Тем кто сомневается предлагаю вывести отладочные сообщения в отладчик через OutputDebugString и сравнить потом с логами в файле, позаходить разными юзерами в параллель... ладно, пусть будет домашним заданием экспериментаторам.

поясню, почему задал вопрос: сессии, запущенные с помощью методов типа RunAs — а именно отличного от interactive logon session типа — не поймаются через WLNP в принципе. просто потому что дизайн связки winlogon+GINA предназначен для обслуживания LSA для поддержки именно LSA interactive logons. Для non-interactive logon sessions нужны другие методы. Вероятно, именно этот момент Вы и слышали:
SA>Так же кто-то говорил, что ловится будет не все. Но я проверял, ловится и Fast User Switching, и удаленные подключения.
получается правы и Вы и Ваш источник. Просто, возможно, разные вещи имелись ввиду и этот момент на всякий случай в этой ветке отмечаю для будущих читателей.
... << RSDN@Home 1.2.0 alpha rev. 653>>
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.
Windows Logon Notification Package Sample
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 22.01.07 19:44
Оценка:
Приветствую всех!

Ради проверки информации
Автор: Andrew.W Worobow
Дата: 18.01.07
по блокировке приложений вспомнил и вот решил переиспользовать свой старый WLNP проектик, а заодно и делюсь им со всеми желающими. Надеюсь кому-то код окажется полезным!

РБ>Статья:

РБ>Winlogon notification package
Автор(ы): Роман Бурда
Дата: 23.05.2006
Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.


РБ>Авторы:

РБ> Роман Бурда

РБ>Аннотация:

РБ>Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.

Альтернативный пример к статье:
Исходники берем здесь

Автор:
Валерий Боронин

Аннотация:
Пример иллюстрирует и дополняет
Автор: Valery A. Boronin
Дата: 12.10.06
оригинальную статью
Автор(ы): Роман Бурда
Дата: 23.05.2006
Рассматривается использование Winlogon notification package для обработки событий входа и выхода пользователей, включения и выключения операционной системы и некоторых других.
.
Представляет собой проект Win32 DLL, экспортирующей некоторый API, подлежащий проверке.

краткая инструкция: кладем wlnp.dll в %systemroot%\system32. Если хотим тестить WLNP — пускаем wlnp.reg, если хотим тестить блокировку приложений, регистрируемся через AppCertDlls.reg. Reboot. Достаем DbgView/WinDbg и смотрим логи.


PS Идеально подходит в качестве быстрого старта для подобных тестовых нужд, потому и родился на свет. Например см. 2 в 1: Блокировка запуска приложений и WLNP. Test App.
Автор: Valery A. Boronin
Дата: 22.01.07


PPS Мастер от студии генерит немножко не то, там def файла нет
... << RSDN@Home 1.2.0 alpha rev. 655>>
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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.