如何在win2000/NT/XP中屏蔽ctrl+alt+del,全部分送上,app2001请进来(100分)

  • 主题发起人 主题发起人 SuKiDelphi
  • 开始时间 开始时间
S

SuKiDelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在win2000/NT/XP中屏蔽ctrl+alt+del,全部分送上,app2001请进来
 
可以截获Window消息
 
也谈在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://www.vckbase.com/document/viewdoc/?id=242
 
不明白!!!
 
就是自己 编一个GINA DLL来替换MSGINA.DLL。自己的GINA DLL需要有下列函数:
WlxActivateUserShell
WlxDisplayLockedNotice
WlxDisplaySASNotice
WlxDisplayStatusMessage
WlxGetStatusMessage
WlxInitialize
WlxIsLockOk
WlxIsLogoffOk
WlxLoggedOnSAS
WlxLoggedOutSAS
WlxLogoff
WlxNegotiate
WlxNetworkProviderLoad
WlxRemoveStatusMessage
WlxScreenSaverNotify
WlxShutdown
WlxStartApplication
WlxWkstaLockedSAS

因为这些函数winlogon会调用

你只要在WlxLoggedOnSAS函数中做不处理,其他函数则直接调用MSGINA.DLL里的就可以了。
这个是C++的代码:
http://www.vckbase.com/document/journal/vckbase11/src/noreboot.zip
 
调用api不就可以了吗
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3355802
 
用钩子写的,我写过,其他方法在win2000下是不行的
 
并希望不用重启的情况下实现!!
 
www.tomore.com上有昨天我还下了,有2个
 
找不到啊!!!!
 
var
tmp:integer;
begin
tmp:=0;
SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@tmp,0); //屏蔽Ctrl+Alt+Del
end;

如果需要恢复:SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,@tmp,0);
如果屏蔽其他系统按键,修改第一个参数。
 
请你看清,我要的是在XP下实现的,你的API只能适用于 WIN98-ME!!
 
linfinder说的有道理。
完成你的需求,你需要了解两个知识:
1、远程注入
2、APIHOOK
实现的方法和linfinder说的差不多,你首先得远程注入到winlogon.exe中;
然后APIHOOK:gina.dll中的WlxLoggedOnSAS函数。
就可以了。
这样的资料网山很多,去找找吧。
 
找不到啊!!!!
 
键盘Hook,我以前写了屏蔽系统热健的软件是给游戏用的。有源码
 
有没人来帮我啊!!!
 
发给你了(抄来的)
 
后退
顶部