CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何改变Windows开机时登陆的验证机制

楼主mybcb(bcb)2006-03-01 15:35:57 在 VC/MFC / 基础类 提问

我知道用gina可以定义自己的登陆界面,我也找了一些例子,但是还是需要windows的密码。我的目的是登陆界面用原来的,但是密码用我自己的机制。这个验证的方法,我写在一个DLL里面,只要这个输入的方法通过这个DLL的验证,就算密码成功,可以登陆到windows,并且不需要输入原来的密码。 问题点数:100、回复次数:11Top

1 楼rabo(不哭死人)回复于 2006-03-01 16:10:46 得分 20

winlogonTop

2 楼mybcb(bcb)回复于 2006-03-13 11:34:46 得分 0

楼上的,能不能说得详细一点呢。Top

3 楼Mackz(在相互)回复于 2006-03-13 11:47:18 得分 20

他的意思是让你替换winlogon文件吧。  
   
  不过实在想不出来你这么做有什么必要。Top

4 楼striking(庸人自扰)回复于 2006-03-13 11:53:44 得分 0

lz是不是要写木马程序?~Top

5 楼mybcb(bcb)回复于 2006-03-13 11:54:11 得分 0

TO楼上:  
  比如说我要实现象指纹识别这样的功能,指纹识别通过了,就不用输入windows的密码。  
  我也想只输入我们自己写的一套密码认证算法,不用再输入原来的windows密码就能登陆。  
  我找了一些替换msgina的例子,但是还是要输入原来的windows密码呀。Top

6 楼moloto2004()回复于 2006-03-14 13:43:37 得分 0

想一想,没有Windows密码,Windows怎么认你?你说你指纹通过了,MS又不知道,呵呵Top

7 楼mybcb(bcb)回复于 2006-03-14 21:49:34 得分 0

楼上的,可是现在的T43已经实现了这个功能啊。指纹通过了,不需要再输入原来的Windows密码Top

8 楼ChrisAK(LOLICON)回复于 2006-03-14 22:13:53 得分 0

好像还是Gina~  
  具体的不太清楚.Top

9 楼TianChong(*︿_︿* ○Ооo○泡泡oо㊣VC高手群:2997669)回复于 2006-03-15 00:37:47 得分 60

GINA的全称为“Graphical   Identification   and   Authentication”--图形化识别和验证。它是几个动态数据库文件,被Winlogon.exe所调用,为其提供能够对用户身份进行识别和验证的函数,并将用户的账号和密码反馈给Winlogon.exe。在登录过程中,“欢迎屏幕”和“登录对话框”就是GINA显示的。一些主题设置软件,例如StyleXP,可以指定Winlogon.exe加载商家自己开发的GINA,从而提供不同的Windows   XP的登录界面。  
   
  我有一篇关于替换GINA的论文,比较长可惜现在不在身上,你如果能等的话,我在半月后回家给你取来,不过希望能加分.  
   
  Top

10 楼TianChong(*︿_︿* ○Ооo○泡泡oо㊣VC高手群:2997669)回复于 2006-03-15 00:42:29 得分 0

先说说登录过程吧,首先声明,winlogon.exe可不是随意可更换的,我们更换的是GINA,而非winlogon.exe,如果处理不当,可能WINDOWS就起不来了.  
   
  在“交互式登录”过程中,Winlogon调用了GINA组文件,把用户提供的账号和密码传达给GINA,由GINA负责对账号和密码的有效性进行验证,然后把验证结果反馈给Winlogon程序。在与Winlogon.exe对话时,GINA会首先确定Winlogon.exe的当前状态,再根据不同状态来执行不同的验证工作。通常Winlogon.exe有三种状态:  
   
    1.已登录状态  
   
    顾名思义,用户在成功登录后,就进入了“已登录状态”。在此状态下,用户可以执行有控制权限的任何操作。  
   
    2.已注销状态  
   
    用户在已登录状态下,选择“注销”命令后,就进入了“已注销状态”,并显示Winlogon桌面,而由GINA负责显示登录对话框或欢迎屏幕。  
   
    3.已锁定状态  
   
    当用户按下“Win+L”键锁定计算机后,就进入了“已锁定状态”。在此状态下,GINA负责显示可供用户登录的对话框。此时用户有两种选择,一种是输入当前用户的密码返回“已登录状态”,另一种是输入管理员账号和密码,返回“已注销状态”,但原用户状态和未保存数据丢失。  
   
    ////登录到本机的过程  
   
    1.用户首先按Ctrl+Alt+Del组合键。    
   
    2.Winlogon检测到用户按下SAS键,就调用GINA,由GINA显示登录对话框,以便用户输入账号和密码。  
   
    3.用户输入账号和密码,确定后,GINA把信息发送给LSA进行验证。  
   
    4.在用户登录到本机的情况下,LSA会调用Msv1_0.dll这个验证程序包,将用户信息处理后生成密钥,同SAM数据库中存储的密钥进行对比。  
   
    5.如果对比后发现用户有效,SAM会将用户的SID(Security   Identifier--安全标识),用户所属用户组的SID,和其他一些相关信息发送给LSA。  
   
    6.LSA将收到的SID信息创建安全访问令牌,然后将令牌的句柄和登录信息发送给Winlogon.exe。  
   
    7.Winlogon.exe对用户登录稍作处理后,完成整个登录过程。  
   
    ////登录到域的过程  
   
    登录到域的验证过程,对于不同的验证协议也有不同的验证方法。如果域控制器是Windows   NT   4.0,那么使用的是NTLM验证协议,其验证过程和前面的“登录到本机的过程”差不多,区别就在于验证账号的工作不是在本地SAM数据库中进行,而是在域控制器中进行;而对于Windows   2000和Windows   2003域控制器来说,使用的一般为更安全可靠的Kerberos   V5协议。通过这种协议登录到域,要向域控制器证明自己的域账号有效,用户需先申请允许请求该域的TGS(Ticket-Granting   Service--票据授予服务)。获准之后,用户就会为所要登录的计算机申请一个会话票据,最后还需申请允许进入那台计算机的本地系统服务。  
   
    其过程如下:  
   
    1.用户首先按Ctrl+Alt+Del组合键。  
   
    2.Winlogon检测到用户按下SAS键,就调用GINA,由GINA显示登录对话框,以便用户输入账号和密码。  
   
    3.用户选择所要登录的域和填写账号与密码,确定后,GINA将用户输入的信息发送给LSA进行验证。  
   
    4.在用户登录到本机的情况下,LSA将请求发送给Kerberos验证程序包。通过散列算法,根据用户信息生成一个密钥,并将密钥存储在证书缓存区中。  
   
    5.Kerberos验证程序向KDC(Key   Distribution   Center--密钥分配中心)发送一个包含用户身份信息和验证预处理数据的验证服务请求,其中包含用户证书和散列算法加密时间的标记。    
   
    6.KDC接收到数据后,利用自己的密钥对请求中的时间标记进行解密,通过解密的时间标记是否正确,就可以判断用户是否有效。    
    7.如果用户有效,KDC将向用户发送一个TGT(Ticket-Granting   Ticket--票据授予票据)。该TGT(AS_REP)将用户的密钥进行解密,其中包含会话密钥、该会话密钥指向的用户名称、该票据的最大生命期以及其他一些可能需要的数据和设置等。用户所申请的票据在KDC的密钥中被加密,并附着在AS_REP中。在TGT的授权数据部分包含用户账号的SID以及该用户所属的全局组和通用组的SID。注意,返回到LSA的SID包含用户的访问令牌。票据的最大生命期是由域策略决定的。如果票据在活动的会话中超过期限,用户就必须申请新的票据。  
   
    8.当用户试图访问资源时,客户系统使用TGT从域控制器上的Kerberos   TGS请求服务票据(TGS_REQ)。然后TGS将服务票据(TGS_REP)发送给客户。该服务票据是使用服务器的密钥进行加密的。同时,SID被Kerberos服务从TGT复制到所有的Kerberos服务包含的子序列服务票据中。       
   
    9.客户将票据直接提交到需要访问的网络服务上,通过服务票据就能证明用户的标识和针对该服务的权限,以及服务对应用户的标识。  
  Top

11 楼TianChong(*︿_︿* ○Ооo○泡泡oо㊣VC高手群:2997669)回复于 2006-03-15 00:51:04 得分 0

以下是要用到的一些函数,不是很全,对你会有帮助的:  
   
  初始化时GINA已经收到VOID   WlxUseCtrlAltDel(HANDLE   hWlx);这个函数它的作用就是通知winlogon.exe,GINA默认使用ctrl+alt+del这个标准SAS.如果要用自己定义SAS序列的话,开发者必须在编制自己的GINA.dll时  
  自行HOOK热键.并且通过:    
  WlxSasNotify(hGlobalWlx,   dwSasType);  
  这个函数来报告将使用的SAS。  
  GINA将提供给winlogon.exe一个函数:  
  VOID   WINAPI   WlxDisplaySASNotice(PVOID   pContext);  
  用于显示欢迎画面以及验证是否使用了自定义的SAS序列。  
   
  在windows中,缺省的GINA就是msgina.dll   ,它是运行在winlogon.exe的进程空间中的,由注册表中\HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GinaDLL=yourgina.dll   定义,默认情况下则就是msgina.dll,而自定义GINA的实现机理则就是通过修改注册表,将原来的msgina.dll替换为自己的GINA.  
   
  Top

相关问题

  • 如何改变Windows开机时登陆的验证机制
  • 如何改变Windows开机时登陆的验证机制
  • 登陆密码验证
  • 文件打开机制
  • 密码验证登陆问题!
  • PHP做邮件登陆客户验证
  • 有关登陆验证的问题????
  • session验证登陆安全吗?
  • 关于登陆验证:equals的用法!
  • 如何实现用户登陆验证?

关键词

  • 验证
  • 用户
  • 密码
  • tgs
  • 账号
  • windows
  • 注销
  • 控制器
  • 函数
  • gina

得分解答快速导航

  • 帖主:mybcb
  • rabo
  • Mackz
  • TianChong

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo