Winlogon原理

自己写Winlogon必须实现以下技术细节:

1.首先建立WindowStation,名字必须为Winsta0;因为某内核模式的程序里有对Winsta0的引用
2.建立三个桌面;首先必须建立winlogon名字的桌面,因为win32k.sys里有对winlogon名字桌面
的引用;接着建立default桌面,因为explorer必须运行在default桌面上,如果在winlogon桌面上,
会内存泄露,时间长了,有时会莫名其妙的挂起(这个我没有深究,估计"Default"桌面也在哪个
系统库里,显式的引用了)
3.对winlogn桌面进行安全设置(可不进行) Enable必须的特权,
4.启动services.exe;services.exe首先创建一个同步对象,然后WaitForSingleObject挂起等待它
5.启动lsass.exe;lsass用NtConnetPort到winlgon。NtConnectPort失败的话就挂起,这样整个
winlogon也就挂起不继续了,等效于死机了,然后lsass把services.exe建的同步对象状态设置成激活,
这样service.exe得到lsass启动的信号,就resume了.
所以这里必须创建lsass连接到winlogon的对象 这个对象暂时我还没有研究出来,但lsass.exe创建udp
500端口 可能为Ntcreateport创建端口 这个正在研究中

 

 

MS的winlogon首先建立WindowStation,即Winsta0,自己实现的话,
WindowStation的名字也必须是winsta0,否则...,然后建立三个桌面,
自己实现的话,必须建立名字叫winlogon的桌面,不能随便命名,因为
win32k.sys里面有对叫winlogon名字的桌面的引用。同时,应用程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值