H
huiyugan
Unregistered / Unconfirmed
GUEST, unregistred user!
说明:以下只是简单说明。
我并没有写详细,我也不想写了。
请到
http://delphi.mychangshu.com/dispdoc.asp?id=991
下载代码
也谈在Windows2000下屏蔽Ctrl-Alt-Del键
概述:本文通过应用DLL注入,函数替换(HOOK API)等技术达到了在Windows2000下不修改注册表,不重新启动的情况下屏蔽了Ctrl-Alt-Del键
有幸拜读了《程序员》杂志2001年11期上的陆其明先生的《Win2K/NT下屏蔽Ctrl+Alt+Del的响应》,通过这篇文章的启发,我完成了一个可以在应用程序需要屏蔽Ctrl-Alt-Del的时候就屏蔽,不需要屏蔽的时候就取消的方法,不用需要书写一个额外的gina.dll文件,也不需要重新启动系统和修改注册表。
该方法的基本原理是通过HOOK winlogon.exe所使用的gina.dll中的WlxLoggedOnSAS函数,大家通过《Win2K/NT下屏蔽Ctrl+Alt+Del的响应》这篇文章都知道,当按下Ctrl-Alt-Del键时,WinLogon.exe就会调用msgina.dll中的函数WlxLoggedOnSAS来进行验证,此时如果我们能够修改这个函数的返回值,我们也就可以使Windows不进入Logon窗口了。
可是,我们应该怎样做才可以修改WlxLoggedOnSAS函数的返回值?对比大量论坛上讨论的屏幕取词等等技术,我们不难看到答案,使用函数替换(HookAPI)技术,修改WlxLoggedOnSAS函数的入口地址就可以做到这一点,我们只要自己完成一个WlxLoggedOnSAS的替换函数就可以了,在替换函数里,我们返回我们需要的值就达到了修改函数返回值的效果,进而就达到了屏蔽Ctrl-Alt-Del键的目的。
通过上面的讨论,在这个方法中我们至少需要使用到如下的技术:DLL注入,函数替换(Hook API)。为了配合理解本文提供完整的能够运行的Delphi代码,在Windows2000+Delphi5下通过,可以在CSDN相关栏目中进行下载。
DLL注入
所谓的DLL注入是指将DLL文件加载到其他的进程空间中。目前,常用的方法有使用钩子(SetWindowsHook),使用创建远程线程(CreateRemoteThread),以及切换线程执行上下文(SuspendThread,GetThreadContext,SetThreadContext,ResumeThread)等等方法。本文使用的是创建远程线程的方法。
函数替换(HOOK API)
关于这种技术的讨论,网上也同样有大量的论述,在这里我只是讲述我所使用的方法。
我并没有写详细,我也不想写了。
请到
http://delphi.mychangshu.com/dispdoc.asp?id=991
下载代码
也谈在Windows2000下屏蔽Ctrl-Alt-Del键
概述:本文通过应用DLL注入,函数替换(HOOK API)等技术达到了在Windows2000下不修改注册表,不重新启动的情况下屏蔽了Ctrl-Alt-Del键
有幸拜读了《程序员》杂志2001年11期上的陆其明先生的《Win2K/NT下屏蔽Ctrl+Alt+Del的响应》,通过这篇文章的启发,我完成了一个可以在应用程序需要屏蔽Ctrl-Alt-Del的时候就屏蔽,不需要屏蔽的时候就取消的方法,不用需要书写一个额外的gina.dll文件,也不需要重新启动系统和修改注册表。
该方法的基本原理是通过HOOK winlogon.exe所使用的gina.dll中的WlxLoggedOnSAS函数,大家通过《Win2K/NT下屏蔽Ctrl+Alt+Del的响应》这篇文章都知道,当按下Ctrl-Alt-Del键时,WinLogon.exe就会调用msgina.dll中的函数WlxLoggedOnSAS来进行验证,此时如果我们能够修改这个函数的返回值,我们也就可以使Windows不进入Logon窗口了。
可是,我们应该怎样做才可以修改WlxLoggedOnSAS函数的返回值?对比大量论坛上讨论的屏幕取词等等技术,我们不难看到答案,使用函数替换(HookAPI)技术,修改WlxLoggedOnSAS函数的入口地址就可以做到这一点,我们只要自己完成一个WlxLoggedOnSAS的替换函数就可以了,在替换函数里,我们返回我们需要的值就达到了修改函数返回值的效果,进而就达到了屏蔽Ctrl-Alt-Del键的目的。
通过上面的讨论,在这个方法中我们至少需要使用到如下的技术:DLL注入,函数替换(Hook API)。为了配合理解本文提供完整的能够运行的Delphi代码,在Windows2000+Delphi5下通过,可以在CSDN相关栏目中进行下载。
DLL注入
所谓的DLL注入是指将DLL文件加载到其他的进程空间中。目前,常用的方法有使用钩子(SetWindowsHook),使用创建远程线程(CreateRemoteThread),以及切换线程执行上下文(SuspendThread,GetThreadContext,SetThreadContext,ResumeThread)等等方法。本文使用的是创建远程线程的方法。
函数替换(HOOK API)
关于这种技术的讨论,网上也同样有大量的论述,在这里我只是讲述我所使用的方法。