Самоучитель по программированию систем защиты

         

Если GINA получает от пользователя



Если GINA получает от пользователя нестандартную SAS, она вызывает функцию Winlogon WlxSasNotify, после чего Winlogon вызывает одну из вышеперечисленных функций GINA, в зависимости от контекста, в котором была получена SAS.

Для изучения процесса идентификации и аутентификации можно использовать приводимый ниже модуль (DLL), который является «переходником» между WinLogon и стандартной MSGINA. Прототипы экспортируемых MSGINA.DLL описаны в файле winwlx.h стандартной поставки MS SDK.

#include <tchar.h>

#include <windows.h>

finclude <winioctl.h>

finclude "winwlx.h"

tinclude <lm.h>

#include <io.h>

tinclude <stdio.h>

tfinclude <fcntl.h>

#include "xgina,h"

int glob_lock;

HINSTANCE hMSGinaDLL

HINSTANCE hDllInstance;

HANDLE hGlobalWlxPWLX_DISPATCH_VERSION_l_0 pWlxFuncs

typedef BOOL ( WINAPI *WLXNEGOTIATE )( DWORD, DWORD* );

typedef BOOL ( WINAPI *WLXINITIALIZE )( LPWSTR, HANDLE, PVOID,

PVOID, PVOID ) ;

typedef VOID ( WINAPI *WLXDISPLAYSASNOTICE )( PVOID );

typedef int ( WINAPI *WLXLOGGEDOUTSAS )( PVOID, DWORD, PLUID,

PSID, PDWORD, PHANDLE, PWLX_MPR_NOTIFY_INFO, PVOID* );

typedef BOOL ( WINAPI *WLXACTIVATEUSERSHELL ) ( PVOID, PWSTR,

PWSTR, PVOID );

typedef int ( WINAPI *WLXLOGGEDONSAS )( PVOID, DWORD, PVOID );

typedef BOOL ( WINAPI *WLXISLOCKOK )(PVOID );

typedef VOID ( WINAPI *WLXDISPLAYLOCKEDNOTICE ) ( PVOID );

typedef int ( WINAPI *WLXWKSTALOCKEDSAS )( PVOID, DWORD );

typedef BOOL ( WINAPI *WLXISLOGOFFOK) ( PVOID );

typedef VOID ( WINAPI *WLXLOGOFF) ( PVOID );

typedef VOID ( WINAPI *WLXSHUTDOWN )( PVOID, DWORD );

WLXNEGOTIATE g^lpWlxNegotiate = NULL; WLXINITIALIZE g_lpWlxInitialize = NULL; WLXDISPLAYSASNOTICE g_lpWlxDisplaySASNotice = NULL; WLXLOGGEDOUTSAS g_lpWlxLoggedOutSAS = NULL; WLXACTIVATEUSERSHELL g_lpWlxActivateUserShell = NULL; WLXLOGGEDONSAS g_lpWlxLoggedOnSAS = NULL; WLXISLOCKOK g_lpWlx!sLockOk = NULL; WLXDISPLAYLOCKEDNOTICE g_lpWlxDisplayLockedNotice = NULL;

WLXWKSTALOCKEDSAS g_lpWlxWkstaLockedSAS = NULL; WLXISLOGOFFOK g_lpWlx!sLogoffOk = NULL; WLXLOGOFF g_lpWlxLogoff = NULL; WLXSHUTDOWN g_lpWlxShutdown = NULL; BOOL InitMSGinaDll()

Содержание  Назад  Вперед