Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как можно заблокировать вход в Windows Xp, блокирование входа пользователя 
:(
    Опции темы
kosyak
Дата 16.5.2011, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.5.2011

Репутация: нет
Всего: нет



Есть ли возможность перехватить и не дать выполнить аутентификацию пользователя? Возможно есть способ сделать кнопку ОК (Вход) неактивным, пока не не ступит определенное действие. Смотрел на форуме, ответа на вопрос не нашел, возможно  поможет написание dll и загрузки ее winlogon`om, но не понятно как отловить действия входа и временно приостановить процесс аутентификации. Возможно можно приостановить сервис lsass.exe? Заранее спасибо.
PM MAIL   Вверх
bems
Дата 16.5.2011, 05:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



общая информация о кастомизации аутентификации:
старые винды http://msdn.microsoft.com/en-us/library/aa...v=VS.85%29.aspx
новые винды http://msdn.microsoft.com/en-us/library/bb...v=VS.85%29.aspx


--------------------
Обижено школьников: 8
PM MAIL   Вверх
MetalFan
Дата 16.5.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Что-то напоминает написание ВинЛокеров всяких с просьбой послать смс для получения кода разблокировки...
Не?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
kosyak
Дата 16.5.2011, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.5.2011

Репутация: нет
Всего: нет



Нет, это не вредоносное ПО,  к тому же мне не нужно менять и выводить информацию в  окно аутентификации, 
мне нужно чтобы можно было заблокировать или приостановить вход пользователя, пока не будет положительного условия
PM MAIL   Вверх
kosyak
Дата 16.5.2011, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.5.2011

Репутация: нет
Всего: нет



Цитата(bems @ 16.5.2011,  05:10)
общая информация о кастомизации аутентификации:
старые винды http://msdn.microsoft.com/en-us/library/aa...v=VS.85%29.aspx
новые винды http://msdn.microsoft.com/en-us/library/bb...v=VS.85%29.aspx

Спасибо за ссылки, после беглого просмотра, я так понимаю, для решении задачи потребуется переписать msgina.dll?  Скорей всего прозвучит глупо, но может кто нить занимался данным вопрос и есть на делфях написанная dll? которая реализует все основные функции, которые msgina  экспортирует winlogon`у? Пожалуйста не пинайте сильно, эт нужно для диплома и сроки очень поджимают
PM MAIL   Вверх
bems
Дата 16.5.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Ну не переписать, а например сделать длл-переходник, которая будет дергать таковую от ms
Про готовые исходники на дельфи мне ничего не известно


--------------------
Обижено школьников: 8
PM MAIL   Вверх
kosyak
Дата 16.5.2011, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.5.2011

Репутация: нет
Всего: нет



Цитата(bems @ 16.5.2011,  15:09)
Ну не переписать, а например сделать длл-переходник, которая будет дергать таковую от ms
Про готовые исходники на дельфи мне ничего не известно

Так кажется кое что начинает проясняться, как я понял,  мне в принципе нужно только перехватить функцию WlxLoggedOutSAS. из RSDN "GINA, обработав данное событие, может либо перевести Winlogon в состояние "Есть залогиненный пользователь. Станция разблокирована", либо оставить его в текущем состоянии." Вот мне как раз нужно чтоб "оставить его в текущем состоянии", т.е. по сути можно написать промежуточную dll между winlogon`ом и msgina.dll, которая будет проверять только одну функцию?
PM MAIL   Вверх
bems
Дата 16.5.2011, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



вроде как, но вообще смотря что за событие. Может просто ждать в ней, и не логинить пользователя пока не произошло событие, но и не выходить. А чего те ждать надо?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
kosyak
Дата 16.5.2011, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.5.2011

Репутация: нет
Всего: нет



Цитата(bems @ 16.5.2011,  16:56)
вроде как, но вообще смотря что за событие. Может просто ждать в ней, и не логинить пользователя пока не произошло событие, но и не выходить. А чего те ждать надо?

Делаю аутентификацию с железом, конкретно с флешкой, нужно ждать пока не будет   вставлена  "правильная" флешка и после чего залогинить пользователя, нет флешки, нет входа в систему
PM MAIL   Вверх
bems
Дата 16.5.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



ну тогда отказывать при отсутствии, да


--------------------
Обижено школьников: 8
PM MAIL   Вверх
kosyak
Дата 16.5.2011, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.5.2011

Репутация: нет
Всего: нет



Цитата(bems @ 16.5.2011,  17:08)
ну тогда отказывать при отсутствии, да

Есть какие нить мысли как выполнить отказ, ведь winlogon обменивается сообщениями с msgina.dll, есть возможность написать dll она будет вызывать все функции из msgina.dll  кроме WlxLoggedOutSAS, при вызове этой функции я создаю условие наличия флешки, если нет флешки то фукция не передается msgina.dll? а если флешка есть, то вызываю эту фукцию из msgina, такой подход логичен или нет?

еще возник вопрос,  где указывается путь к загрузке msgina.dll? скорей всего в реестре winlogon`a, но найти не могу( 

Это сообщение отредактировал(а) kosyak - 16.5.2011, 17:49
PM MAIL   Вверх
bems
Дата 16.5.2011, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(kosyak @  16.5.2011,  17:16 Найти цитируемый пост)
она будет вызывать все функции из msgina.dll  кроме WlxLoggedOutSAS, при вызове этой функции я создаю условие наличия флешки, если нет флешки то фукция не передается msgina.dll? а если флешка есть, то вызываю эту фукцию из msgina
ну да

Цитата(kosyak @  16.5.2011,  17:16 Найти цитируемый пост)
еще возник вопрос,  где указывается путь к загрузке msgina.dll? скорей всего в реестре winlogon`a, но найти не могу( 

http://msdn.microsoft.com/en-us/library/aa...v=VS.85%29.aspx

Добавлено через 1 минуту и 19 секунд
Это чтоб прописать твою. Нну а дефолная длл от ms всегда в одном и том же месте 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
kosyak
Дата 16.5.2011, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.5.2011

Репутация: нет
Всего: нет



по поводу прописать в ключе реестра winlogon ginadll и указать свою dll, то так уже делал, минус в том что окно аутентификации и выхода из системы принимает классический вид, как я понял этого не избежать( и еще наблюдается более долгая загрузка explorer.exe? возможно криво в dll написал, хотя по большому счету там кроме как экспортирование функций из msgina и нет ниче 
PM MAIL   Вверх
kosyak
Дата 17.5.2011, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.5.2011

Репутация: нет
Всего: нет



На одном из форумов нашел вот этот код, он рабочий, спецы помогите разобраться, как я понял функция WlxLoggedOutSAS возвращает три состояния:
WLX_SAS_ACTION_LOGON, WLX_SAS_ACTION_NONE и WLX_SAS_ACTION_SHUTDOWN. каким образом мне послать winlogon`у WLX_SAS_ACTION_NONE, если нет нужной флешки?

Код

library GINA;
uses
  Windows,
  Forms,
  JwaWinNT in 'jwawinnt.pas',
  JwaWinType in 'jwawintype.pas';


type
    TInfoForHash = array [0..10] of string; 
  PWLX_MPR_NOTIFY_INFO = ^WLX_MPR_NOTIFY_INFO;
  {$EXTERNALSYM PWLX_MPR_NOTIFY_INFO}
  _WLX_MPR_NOTIFY_INFO = record
    //
    // The name of the account logged onto (e.g. REDMOND\Joe).
    // The string pointed to by this field must be separately
    // allocated and will be separately deallocated by Winlogon.
    //
    pszUserName: PWSTR;
    //
    // The string pointed to by this field must be separately
    // allocated and will be separately deallocated by Winlogon.
    //
    pszDomain: PWSTR;
    //
    // Cleartext password of the user account.  If the OldPassword
    // field is non-null, then this field contains the new password
    // in a password change operation.  The string pointed to by
    // this field must be separately allocated and will be seperately
    // deallocated by Winlogon.
    //
    pszPassword: PWSTR;
    //
    // Cleartext old password of the user account whose password
    // has just been changed.  The Password field contains the new
    // password.  The string pointed to by this field must be
    // separately allocated and will be separately deallocated by
    // Winlogon.
    //
    pszOldPassword: PWSTR;
  end;
  {$EXTERNALSYM _WLX_MPR_NOTIFY_INFO}
  WLX_MPR_NOTIFY_INFO = _WLX_MPR_NOTIFY_INFO;
  {$EXTERNALSYM WLX_MPR_NOTIFY_INFO}
  TWlxMprNotifyInfo = WLX_MPR_NOTIFY_INFO;
  PWlxMprNotifyInfo = PWLX_MPR_NOTIFY_INFO;

/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//
// WLX_TERMINAL_SERVICES_DATA is used by the GINA during a
// WlxQueryTerminalServicesData() callback into WinLogon from the
// WlxLoggedOutSAS() context, after the user name and domain are known.
// This structure relates to TS user configuration information which is
// retrieved from the Domain Controller and SAM database. Having WinLogon
// pass this information means the GINA does not need to do the same
// off-machines lookups again.
//


const

  MSGina='MSGina.dll';
 
procedure WlxActivateUserShell;external MSGina;
procedure WlxDisconnectNotify;external MSGina;
procedure WlxDisplayLockedNotice;external MSGina;
procedure WlxDisplaySASNotice;external MSGina;
procedure WlxDisplayStatusMessage;external MSGina;
procedure WlxGetConsoleSwitchCredentials;external MSGina;
procedure WlxGetStatusMessage;external MSGina;
function  WlxInitialize(lpWinsta: LPWSTR; hWlx: HANDLE; pvReserved: PVOID;
pWinlogonFunctions: PVOID; var pWlxContext: PVOID): BOOL; stdcall; external MSGina;
procedure WlxIsLockOk;external MSGina;
procedure WlxIsLogoffOk;external MSGina;
procedure WlxLoggedOnSAS; external MSGina;
///////////////////////////////////////////////////////////////////////
function WlxLoggedOutSAS(pWlxContext: PVOID; dwSasType: DWORD;
  var pAuthenticationId: LUID; var pLogonSid: SID; var pdwOptions: DWORD;
  var phToken: HANDLE; var pNprNotifyInfo: WLX_MPR_NOTIFY_INFO;
  var pProfile: PVOID):Integer;stdcall; external MSGina;
///////////////////////////////////////////////////////////////////////
procedure WlxLogoff;external MSGina;
procedure WlxNegotiate;external MSGina; 
procedure WlxNetworkProviderLoad;external MSGina;
procedure WlxReconnectNotify;external MSGina;
procedure WlxRemoveStatusMessage;external MSGina;
procedure WlxScreenSaverNotify;external MSGina;
procedure WlxShutdown;external MSGina;
procedure WlxStartApplication;external MSGina;
procedure WlxWkstaLockedSAS;external MSGina;

/////////////////////////////////////////////////////////////
var _WlxLoggedOutSAS: Pointer;

function MyWlxLoggedOutSAS(pWlxContext: PVOID; dwSasType: DWORD;
  var pAuthenticationId: LUID; var pLogonSid: SID; var pdwOptions: DWORD;
  var phToken: HANDLE; var pNprNotifyInfo: WLX_MPR_NOTIFY_INFO;
  var pProfile: PVOID): Integer; stdcall; 
begin

//////////////////////////////

Сюда что то надо писать

///////////////////////////////

  GetProcedureAddress(_WlxLoggedOutSAS, msgina, 'WlxLoggedOutSAS');
  asm
        MOV     ESP, EBP
        POP     EBP
        JMP     [_WlxLoggedOutSAS]
  end;

end;
//////////////////////////////////////////////////////////////

var _WlxInitialize: Pointer;
  
function MyWlxInitialize(lpWinsta: LPWSTR; hWlx: HANDLE; pvReserved: PVOID;
pWinlogonFunctions: PVOID; var pWlxContext: PVOID):Integer; stdcall;

begin

GetProcedureAddress(_WlxInitialize, msgina, 'WlxInitialize');
  asm
        MOV     ESP, EBP
        POP     EBP
        JMP     [_WlxInitialize]
  end;
     //Result:=1;
end;

exports

  WlxActivateUserShell,
  WlxDisconnectNotify,
  WlxDisplayLockedNotice,
  WlxDisplaySASNotice,
  WlxDisplayStatusMessage,
  WlxGetConsoleSwitchCredentials,
  WlxGetStatusMessage,
  MyWlxInitialize    Name 'WlxInitialize',
  WlxIsLockOk,
  WlxIsLogoffOk, 
  WlxLoggedOnSAS,
  MyWlxLoggedOutSAS  Name'WlxLoggedOutSAS',
  WlxLogoff,
  WlxNegotiate,
  WlxNetworkProviderLoad,
  WlxReconnectNotify,
  WlxRemoveStatusMessage,
  WlxScreenSaverNotify,
  WlxShutdown,
  WlxStartApplication,
  WlxWkstaLockedSAS;
begin
end.



Очень жду вашей помощи!

Это сообщение отредактировал(а) kosyak - 17.5.2011, 00:49
PM MAIL   Вверх
Dik0n
Дата 17.5.2011, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 11.5.2011

Репутация: 1
Всего: 10



Цитата(kosyak @  17.5.2011,  00:47 Найти цитируемый пост)
Сюда что то надо писать

Ну дак проверяй свое условие, вставлена ли нужная флешка

Код

if если не та флешка then
begin
  Result := WLX_SAS_ACTION_NONE;
  Exit;
end;

--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0786 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.