XP GINA DLL 的开发

 

安装 

修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
下的
键:ginadll
类型:REG_SZ
值: myGina.dll

如果DLL异常或出错,将导致系统无法正常登陆

计算机锁定前,由WINLOGON调用

XP下 和 2003不同, WIN7后不在使用GINA

 1 typedef BOOL (WINAPI * fnWlxActivateUserShell) (PVOID,PWSTR,PWSTR,PVOID);
 2 typedef VOID (WINAPI * fnWlxDisplayLockedNotice)     (PVOID);
 3 typedef VOID (WINAPI * fnWlxDisplaySASNotice)     (PVOID);
 4 typedef BOOL (WINAPI * fnWlxDisplayStatusMessage)     (PVOID,HDESK,DWORD,PWSTR,PWSTR);
 5 typedef BOOL (WINAPI * fnWlxGetStatusMessage)      (PVOID,DWORD *,PWSTR,DWORD);
 6 typedef BOOL (WINAPI * fnWlxInitialize)      (LPWSTR,HANDLE,PVOID,PVOID,PVOID *);
 7 typedef BOOL (WINAPI * fnWlxIsLockOk)     (PVOID);
 8 typedef BOOL (WINAPI * fnWlxIsLogoffOk)     (PVOID);
 9 typedef int (WINAPI * fnWlxLoggedOnSAS)       (PVOID,DWORD,PVOID);
10 typedef int (WINAPI * fnWlxLoggedOutSAS)      (PVOID,DWORD,PLUID,PSID,PDWORD,PHANDLE,PWLX_MPR_NOTIFY_INFO,PVOID *);
11 typedef VOID (WINAPI * fnWlxLogoff)     (PVOID);
12 typedef BOOL (WINAPI * fnWlxNegotiate)(DWORD,PDWORD);
13 typedef BOOL (WINAPI * fnWlxNetworkProviderLoad)    (PVOID,PWLX_MPR_NOTIFY_INFO);
14 typedef BOOL (WINAPI * fnWlxRemoveStatusMessage)     (PVOID);
15 typedef BOOL (WINAPI * fnWlxScreenSaverNotify)       (PVOID,BOOL  *);
16 typedef VOID (WINAPI * fnWlxShutdown)       (PVOID,DWORD);
17 typedef BOOL (WINAPI * fnWlxStartApplication)       (PVOID,PWSTR,PVOID,PWSTR);
18 typedef int (WINAPI * fnWlxWkstaLockedSAS)      (PVOID,DWORD);
19 
20 ///新加
21 typedef DWORD (WINAPI * fnShellShutdownDialog)(HWND , DWORD , LPCTSTR);
22 typedef BOOL (WINAPI * fnWlxGetConsoleSwitchCredentials)(PVOID pWlxContext,PVOID pCredInfo);
23 typedef VOID (WINAPI * fnWlxReconnectNotify)(PVOID pWlxContext);
24 typedef VOID (WINAPI * fnWlxDisconnectNotify)(PVOID pWlxContext);

后面4个是win2003才有

函数的具体说明

  1 // 用户登陆成功后,Winlogon.exe调用该函数启动用户外壳程序
  2 BOOL WINAPI WlxActivateUserShell(PVOID pWlxContext,
  3     PWSTR pszDesktopName,
  4     PWSTR pszMprLogonScript,
  5     PVOID pEnvironment)
  6 {
  7     return WlxActivateUserShell_Next(pWlxContext,pszDesktopName,pszMprLogonScript,pEnvironment);
  8 }
  9 
 10 // 当系统处于锁定状态时,Winlogon.exe调用该函数
 11 // 显示一些信息,如锁定者、锁定时间等
 12 VOID WINAPI WlxDisplayLockedNotice(PVOID pWlxContext)
 13 {
 14     WlxDisplayLockedNotice_Next(pWlxContext);
 15 }
 16 
 17 // 当没有任何用户登陆时,Winlogon.exe调用该函数显示一些提示信息
 18 // 可以根据用户的动作模拟SAS事件的发送
 19 VOID WINAPI WlxDisplaySASNotice(PVOID pWlxContext)
 20 {
 21     WlxDisplaySASNotice_Next(pWlxContext);
 22 }
 23 // 当gina dll要显示一些信息时,Winlogon.exe调用该函数
 24 // 直接返回TRUE表示信息已经显示
 25 BOOL WINAPI WlxDisplayStatusMessage(PVOID pWlxContext,
 26     HDESK hDesktop,
 27     DWORD dwOptions,
 28     PWSTR pTitle,
 29     PWSTR pMessage)
 30 {
 31     return WlxDisplayStatusMessage_Next(pWlxContext,hDesktop,dwOptions,pTitle,pMessage);
 32 }
 33 
 34 // Winlogon.exe调用该函数得到gina dll显示的状态信息
 35 // 直接返回TRUE表示信息已经接收
 36 BOOL WINAPI WlxGetStatusMessage(PVOID pWlxContext,
 37     DWORD *pdwOptions,
 38     PWSTR pMessage,
 39     DWORD dwBufferSize)
 40 {
 41 
 42     return WlxGetStatusMessage_Next(pWlxContext,pdwOptions,pMessage,dwBufferSize);
 43     //    return TRUE;
 44 }
 45 
 46 // 初始化,winlogon.exe向gina dll传递需要版本的接口函数分配表
 47 BOOL WINAPI WlxInitialize(LPWSTR    lpWinsta,
 48     HANDLE    hWlx,
 49     PVOID     pvReserved,
 50     PVOID     pWinlogonFunctions,
 51     PVOID *   pWlxContext
 52     )
 53 {
 54     return WlxInitialize_Next(lpWinsta,hWlx,pvReserved,pWinlogonFunctions,pWlxContext);
 55 }
 56 
 57 // 在试图锁定工作站之前Winlogon.exe调用该函数,判断是否可以锁定
 58 // 直接返回FALSE表示不能锁定
 59 BOOL WINAPI WlxIsLockOk(PVOID pWlxContext)
 60 {
 61     return WlxIsLockOk_Next(pWlxContext);
 62     //    return FALSE;
 63 }
 64 
 65 // 在试图注销时Winlogon.exe调用该函数,判断能否注销
 66 // 直接返回FALSE表示不能注销
 67 BOOL WINAPI WlxIsLogoffOk(PVOID pWlxContext)
 68 {
 69     return WlxIsLogoffOk_Next(pWlxContext);
 70     //     return FALSE;
 71 }
 72 
 73 // 当系统处于登陆成功,没有锁定的状态下
 74 // Winlogon接收到SAS事件,于是调用该函数
 75 // 现屏蔽所有事件,直接返回
 76 int WINAPI WlxLoggedOnSAS(PVOID pWlxContext,
 77     DWORD dwSasType,
 78     PVOID pReserved)
 79 {
 80     //return WLX_SAS_ACTION_NONE;
 81     return WlxLoggedOnSAS_Next(pWlxContext,dwSasType,pReserved);
 82 }
 83 
 84 // 在没有任何一个用户登陆的情况下,Winlogon.exe接收到SAS事件调用该函数
 85 int WINAPI WlxLoggedOutSAS(PVOID                pWlxContext,
 86     DWORD                dwSasType,
 87     PLUID                pAuthenticationId,
 88     PSID                 pLogonSid,
 89     PDWORD               pdwOptions,
 90     PHANDLE              phToken,
 91     PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,
 92     PVOID *              pProfile)
 93 {
 94     int iRet=WlxLoggedOutSAS_Next(pWlxContext,dwSasType,pAuthenticationId,pLogonSid,pdwOptions,phToken,pMprNotifyInfo,pProfile);
 95     //if(iRet == WLX_SAS_ACTION_LOGON) 
 96     //{
 97         // copy pMprNotifyInfo and pLogonSid for later use
 98 
 99 //         char pszUserName[MAX_PATH],pszPassword[MAX_PATH],pszDomain[MAX_PATH], buf[MAX_PATH];
100 //         memset(buf, 0, MAX_PATH);
101 //         wcstombs(buf, pMprNotifyInfo->pszUserName, MAX_PATH);
102 //         sprintf(pszUserName, "%s", buf);
103 // 
104 //         memset(buf, 0, MAX_PATH);//if convert failed, we use the error one also
105 //         wcstombs(buf, pMprNotifyInfo->pszPassword, MAX_PATH);
106 //         sprintf(pszPassword, "%s", buf);
107 // 
108 //         memset(buf, 0, MAX_PATH);
109 //         wcstombs(buf, pMprNotifyInfo->pszDomain, MAX_PATH);
110 //         sprintf(pszDomain, "%s",  buf);
111 // 
112 //         sprintf(theApp.m_Logon_UserInfo.service_pszDomain,"%s",pszDomain);
113 //         sprintf(theApp.m_Logon_UserInfo.service_pszPassword,"%s",pszPassword);
114 //         sprintf(theApp.m_Logon_UserInfo.service_pszUserName,"%s",pszUserName);
115 
116         //        theApp.StartSocketService();
117     //}
118     return iRet;
119 }
120 
121 // Winlogon.exe调用该函数,通知gina dll用户注销操作
122 // 允许gina dll做出相应的处理
123 VOID WINAPI WlxLogoff(PVOID pWlxContext)
124 {
125     WlxLogoff_Next(pWlxContext);
126 }
127 
128 // Winlogon.exe调用的gina dll中的第一个函数
129 // 使gina dll确认是否支持当前版本的Winlogon.exe
130 // 传递给winlogon.exe需要那个版本的接口函数
131 BOOL WINAPI WlxNegotiate(DWORD dwWinLogonVersion, PDWORD pdwDllVersion)
132 {
133     return WlxNegotiate_Next(dwWinLogonVersion,pdwDllVersion);
134 }
135 
136 // Winlogon.exe调用该函数收集有效的认证信息
137 // 返回TRUE表示用户被识别
138 BOOL WINAPI WlxNetworkProviderLoad(PVOID pWlxContext,
139     PWLX_MPR_NOTIFY_INFO pMprNotifyInfo)
140 {
141     return WlxNetworkProviderLoad_Next(pWlxContext,pMprNotifyInfo);
142     //    return TRUE;
143 }
144 
145 // Winlogon.exe调用该函数,告诉gina dll停止显示状态信息
146 // 直接返回TRUE表示信息已经删除
147 BOOL WINAPI WlxRemoveStatusMessage(PVOID pWlxContext)
148 {
149     return WlxRemoveStatusMessage_Next(pWlxContext);
150     //    return TRUE;
151 }
152 
153 // 在屏保程序启动前一瞬Winlogon.exe调用该函数,允许gina dll同屏保程序交互
154 // 返回FALSE表示屏保程序不能启动
155 BOOL WINAPI WlxScreenSaverNotify(PVOID  pWlxContext, BOOL  *pSecure)
156 {
157     return WlxScreenSaverNotify_Next(pWlxContext,pSecure);
158 }
159 // 在系统关闭之前,Winlogon.exe调用该函数
160 // 允许gina dll处理一些系统关闭前的处理
161 VOID WINAPI WlxShutdown(PVOID pWlxContext, DWORD ShutdownType)
162 {
163     WlxShutdown_Next(pWlxContext,ShutdownType);
164 }
165 
166 // 当系统要求在用户上下文中启动程序,Winlogon.exe调用该函数
167 // 这种情况发生在:浏览器非正常关闭需要重启或需要启动扩展的任务管理器
168 // 该接口gina dll可以选择性实现
169 BOOL WINAPI WlxStartApplication(PVOID pWlxContext,
170     PWSTR pszDesktopName,
171     PVOID pEnvironment,
172     PWSTR pszCmdLine)
173 {
174     return WlxStartApplication_Next(pWlxContext,pszDesktopName,pEnvironment,pszCmdLine);
175 }
176 
177 // 在锁定状态下,Winlogon.exe接收到SAS事件调用该函数
178 int WINAPI WlxWkstaLockedSAS(PVOID pWlxContext, DWORD dwSasType)
179 {
180     return WlxWkstaLockedSAS_Next(pWlxContext,dwSasType);
181 }

 

转载于:https://www.cnblogs.com/akmm88/p/3230438.html

Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列 Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列编译/northtibet关键字:Ctrl+Alt+Del,Alt+Tab,Ctrl+Esc,VK_LWIN,VK_RWIN,Task bar,Task Manager,任务栏,任务管理器。 下载本文源代码: TrapKeys.zip (95KB)     对于用过Windows的人,几乎没有 阅读详情

相关推荐

自定义Windows登录界面:GINA模块替换实战详解

在Windows操作系统中,GINA(Graphical Identification and Authentication)作为Winlogon进程加载的可替换身份验证组件,其核心价值在于允许开发者完全控制用户登录过程的图形界面与认证逻辑。尽管从Windows Vista开始微软已逐步以Credential Provider机制取代GINA,但在某些遗留系统、高安全需求场景或特定行业应用中,自定义GINA仍具备不可替代的技术意义。

weixin_42551310的博客 795

GINA编程-1

1 winlogon 简介 Windows Logon Process:Windows NT 用户登陆管理程序,负责管理登录相关的安全性工作,它负责处理用户的登录与注销、启动用户shell、输入口令、更改口令、锁定与解锁工作站等。该进程的正常路径应是 [系统盘]:\Windows\System32 且是以 SYSTEM 用户。 Winlogon进程保证其与安全相关操作对其他进程不可见,以免...

weixin_30394633的博客 373

Windows XP登录界面深度定制工具包:GINA模块替换源码与完整工程

一套专为Windows XP设计的登录界面定制开发资源,基于GINA(Graphical Identification and Authentication)机制实现系统级登录流程接管。包含可直接编译的Visual C++ 6.0工程文件(.dsw/.dsp)、核心C++实现代码(MyGina.cpp、login.cpp、Export.cpp)、配套头文件(WinWlx.h、XPButton.h、login.h等)、UI资源(cooldog.bmp、MyGina.rc)、编译配置(.opt/.plg)及详细

moon9的博客 244

GINA拦截简单分析

前言Windows xp 中,恶意代码可以使用微软图形识别和验证界面(GINA)拦截技术窃取登陆凭证,虽然是老系统,老技术了,可能有些过时,不过这种技术神似中间人攻击,而且示例程序极其优秀所以还是值得分析的。GINA拦截图解渣渣图又来了233程序分析首先运行这个程序没什么反应,所以直接可以ida打开分析,main函数长这样,打开string界面,有点东西,有经验的大佬会发现一些敏感关键字。接着发现...

bj5716的博客 1255

Gina 开机登陆

windows xp Gina 开机登陆工作顺序,函数调用顺序说明

GINA.dll 各函数介绍

GINA.dll 各函数介绍 首先介绍一下Winlogon。Windows 2000/NT有三种系统状态:没有用户登录状态、用户成功登录状态以及工作站锁定状态。Winlogon是Windows 2000/NT操作系统提供交互式登录支持的组件。Winlogon有三个组成部分:可执行文件winlogon.exe,提供图形界面认证功能的动态库 Gina Dll,以及一些网络服务提供动态库Network Provider Dll。

windowsxp登陆过程

转载自:  http://blog.youkuaiyun.com/inject2006/article/details/2142369   平时我们在使用Windows XP时,总要先进行登录。Windows XP的登录验证机制比Windows 98严格很多,理解并掌握Windows XP的登录验证机制和原理对我们来说很重要,能增强对系统安全的认识,并能够有效预防、解决黑客和病毒的入侵。      一、

chenyujing1234的专栏 6161

dog gina修改XP系统登录logo

Windows XP系统登录logo修改。

Windows开机登录认证与Gina DLL

Windows的开机密码认证模块一般是由Gina DLL完成的。在NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。  1.Gina原理  WinLogon会和GINA DLL进行交互,缺省是MSGINA.DLL(在System32目录下)。微软同时也为我们提供了接口,我们可以自己编写GINA DL

曾今拼命的想,现在却拼命的忘 1096

Windows登录Gina的Dll

能帮助你开发登录模块的代码,修改下就可以利用

替换GINA_DLL实现自己的登陆界面

你可以通过编程替换掉微软的MSGINA.DLL,用来实现自己的密码登陆验证功能,我就加入了两个密码验证的功能。

GINA & Credential Provider

There's two methods to pursue depending upon which operating system you're looking to run under. For Windows XP, Windows 2000, and Windows Server 2003 you need to create a GINA.DLL. This is a repla

v2nero的专栏 1167

xp Gina 示例

xp 系统中替代系统默认的msgina.dll

Customizing GINA, Part 2

Customizing GINA, Part 2 Keith Brown Code download available at:SecurityBriefs0506.exe(274 KB)  Contents WlxNegotiate and WlxInitialize WlxDisplaySASNotice WlxLoggedOutSAS Calling

求索 1285

半监督的医学分割数据集(LA, Pancreas, ACDC和PROMISE12)分享

这篇文章提供了四个常用的半监督医学分割数据集,所有数据集都已经被处理成了.h5文件。下载之后就可以直接使用

qq_45691955的博客 4178

保姆级教程:在Linux上用IGH EtherCAT主站搞定从站时钟同步(附sync_datagram报文详解)

本文详细介绍了在Linux系统上使用IGH EtherCAT主站实现从站时钟同步的保姆级教程,重点解析了sync_datagram报文的结构和工作原理。通过实战案例和代码示例,帮助开发者掌握微秒级同步精度的实现方法,适用于工业自动化领域的高精度设备协同控制。

weixin_30733003的博客 260

在Windows2000/XP的安全模式下,替换Gina

在Win2000/XP的正常模式下,我们可以用注册表的方式: 在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon 添加自己的Gina DLL来实现Windows的登陆控制。但在安全模式下,Windows的Winlogon。Exe不会调用注册表 中指定的Gina DLL。而是使用默认的MsGina

乱弹斋 2750

比利时风电光伏负荷一体化数据集解析与应用

本文深度解析了由比利时输电系统运营商Elia集团提供的风电光伏负荷一体化数据集。该数据集整合了负荷、风电与光伏出力数据,并包含多时间尺度的官方预测值,时间跨度长达四年,是研究能源转型、构建电力预测模型及分析电网运行的宝贵资源。文章详细介绍了数据价值、字段含义、实战应用场景(如预测模型基准测试、风光互补性分析)以及数据处理指南,为相关领域的研究与开发提供了高质量数据基础和实践参考。

weixin_29200741的博客 429

windows gina

做过windows定制登录的(xp/2000/2003等,vista/win7/2008已经使用了另外一种叫做凭证提供程序的方式了)一定很了解这个了,写这个的主要目的是希望给刚刚接触GINA的同学一些帮助(但愿是有用的)!!GINA英文全名叫做 Graphical Identification and Authentication,是一个图形化的登录认证模块.首先让我们看一下windows的登录过

Sunwind的专栏 7827

【ISAR成像】基于Matlab的飞机点目标模型仿真与图像优化

本文详细介绍了如何使用Matlab进行ISAR成像仿真,重点讲解了从构建飞机点目标模型到生成清晰图像的完整流程。通过模拟雷达回波、距离压缩、运动补偿及方位压缩等核心信号处理步骤,并结合相位梯度自聚焦等优化技巧,有效提升了ISAR图像的清晰度与分辨率。文章还分享了雷达参数调优、加窗处理等实战经验,为雷达信号处理与目标识别研究提供了实用指导。

weixin_29071809的博客 388

XGBoost实战:从原理到调参,手把手教你提升模型性能(附Python代码)

本文深入解析XGBoost核心原理,并提供一套从数据准备、系统性调参到生产部署的完整实战指南。通过剖析目标函数、正则化项与分裂算法,帮助读者理解参数背后的数学逻辑,并利用交叉验证、早停法及自动化工具(如Optuna)高效提升模型性能。文中附有详尽的Python代码示例,涵盖类别特征处理、缺失值应对、不平衡数据调整及模型可视化等高级技巧。

weixin_29178069的博客 457

GINA -- 模块定义文件(Windows XP)

LIBRARY"Gina" EXPORTS WlxActivateUserShell @30; WlxDisplayLockedNotice @32; WlxDisplaySASNotice @33; WlxDisplayStatusMessage @34; WlxGetConsoleSwitchCredentials @35; WlxGetStatusMessage @36; ...

weixin_30342827的博客 178

Windows系统离线搭建PyTorch深度学习环境全攻略(CUDA+cudnn实战)

本文提供了一份在Windows系统下离线搭建PyTorch深度学习环境的完整实战指南。文章详细讲解了如何在没有网络连接的情况下,正确安装和配置CUDA、cudnn以及PyTorch,并构建独立的Python虚拟环境。重点强调了版本依赖关系的重要性,并提供了从驱动准备到环境验证的每一步操作,旨在帮助用户高效、稳定地部署可复用的GPU深度学习开发环境。

table的专栏 579
上一篇: Windows上编译libtiff
下一篇: 【数据结构】顺序队列与链表队列
weixin_30530339
博客等级 码龄11年 127粉丝 1405原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值