- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Win7修改Winlogonexe进程代码禁止CtrlAltDel、WinL等任意系统热键演示程序
本教程由深圳天荷伞业()的整理 专业雨伞厂 有您的支持我们会更专注。由于想做个屏幕锁程序,因此想研究了下Win7的Ctrl+Alt+Del,我对win7的安全机制一点都不懂,希望有不对的地方来大家多多指点首先说下xp下的快捷键,xp下的快捷键是通过CreateWindowEx函数创建标题为SAS Window的窗口。而Ctrl+Alt+Del、Ctrl+Shift+Esc快捷键以热键的方式注册到SAS Window上,因此注入到Winlogon.exe进程调用UnregisterHotKey就可以取消快捷键,但取消后无法恢复那win7下的是怎样的呢?起码在Winlogon.exe的输入表没看到CreateWindowEx,另外我通过注入Winlogon.exe进程, 枚举窗口,一个窗口都枚举不了,这说明在安全桌面一个窗口都没有,那Winlogon.exe到底是怎样响应Ctrl+Alt+Del的呢?想法一我以前有一个想法,就是Hook SwitchDesktop来禁止Winlogon.exe切换到安全桌面,这样Ctrl+Alt+Del就自然失效 了,但这样还是有一些问题,看下面的这段Winlogon.exe切换桌面的代码,发现如果SwitchDesktop调用失败后并不会立马返回,而是重 复调用SwitchDesktop,直到SwitchDesktop调用成功
代码:
DWORD __stdcall sub_100212B(HDESK hDesktop, int a2, int a3)
{
unsigned int v3; // ebx@1
DWORD i; // edi@1
DWORD v5; // esi@2
int v6; // eax@3
v3 = 0;
for ( i = 0; ; Sleep(i) )
{
v5 = 0;
v6 = a3 ? SwitchDesktopWithFade(hDesktop, a3) : SwitchDesktop(hDesktop);
if ( v6 )
break;
v5 = GetLastError();
if ( off_103C144 != off_103C144 )
{
if ( *((_BYTE *)off_103C144 + 28) 4 )
{
if ( *((_BYTE *)off_103C144 + 25) = 2u )
sub_1002A84(*((_DWORD *)off_103C144 + 4), *((_DWORD *)off_103C144 + 5), 11, dword_1010308, v5, a3);
}
}
if ( v3 = 0xA )
{
if ( !a2 )
return v5;
}
else
{
++v3;
i += 100;
}
}
return v5;
}
想法二另外一个想法是直接挂起Winlogon.exe进程,由于Winlogon.exe只负责登录和注销等工作,因此挂起它也没什么,但还是上面的问题,如 果在挂起Winlogon.exe进程期间,按下了Ctrl+Alt+Del,等我们恢复掉挂起的Winlogon.exe进 程,Ctrl+Alt+Del还是会得到响应想法三难道禁止Ctrl+Alt+Del真的不可能吗?这是我对Ctrl+Alt+Del的一点分析流程,希望能对大家有帮助众所周知Ctrl+Shift+Esc是打开任务管理器的快捷键,因此我打算从任务管理器入手,由于我虚拟机装不了win7 32位,只能拿我的真实机win7 64位来做实验,相信win7 32和64区别应该不大用IDA打开winlogon.exe后,我们打开字符串窗口,点击SoftwareSASGeneration往上查看,俨然看到几个字符串osk.exe -s,DisableChangePassword,DisableSwitchUserOption,DisableTaskMgr,taskmgr.exe /%lu 。双击对taskmgr.exe /%lu 的引用,来到下面这段代码,很明显这是打开任务管理器,我最在意的是谁调用的这段代码,可惜IDA没显示谁 调用了函数,但是有数据引用。后来通过WinDbg才知道这个函数名字叫WLGeneric_TaskManager_Enter
代码:
int __stdcall sub_102916D(int
文档评论(0)