//调用下面两个函数就可以了
procedure RunFuckCAD;   //屏蔽Ctrl+Alt+Del
procedure StopFuckCAD;  //取消屏蔽Ctrl+Alt+Del
点击下载源文件
主要代码为:

unit Fuck_CAD_Unit; interface uses Windows, TLHelp32,SysUtils; const MyKernel='SnowmanLockScreenHook.Dll'; //释放完得文件名,可以自己改 Winlogon='winlogon.exe'; MyKernelSize=9216; MyKernelBuf:Array [0..9215] of Byte = ( //... 数组内容太多,略,见源文件 ); procedure RunFuckCAD; procedure StopFuckCAD; implementation procedure GetDebugPrivs; //提升到Debug权限 var hToken: THandle; tkp: TTokenPrivileges; retval: dword; begin If (OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)) then begin LookupPrivilegeValue(nil, 'SeDebugPrivilege' , tkp.Privileges[0].Luid); tkp.PrivilegeCount := 1; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, False, tkp, 0, nil, retval); end; end; function NameToPID(ExeName:pchar):longword; //通过进程文件名返回一个Pid,如果多个同名进程返回第一个进程的Pid var hSnap:longword; ProcessEntry: TProcessEntry32; c:boolean; begin result:=0; hSnap:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); ProcessEntry.dwSize:= Sizeof(TProcessEntry32); c:= Process32First(hSnap,ProcessEntry); While c do begin if LstrcmpiA(ExeName,ProcessEntry.szExeFile)= 0 then begin result:=ProcessEntry.th32ProcessID; break; end; c:=Process32Next(hSnap,ProcessEntry); end; CloseHandle(hSnap); end; function GetSysPath:pchar; //最后没加'/' var a:pchar; begin GetMem(a,255); GetSystemDirectory(a,255); Result:=a; end; procedure DelKernel; begin DeleteFile(pchar(string(GetSysPath)+'/'+string(MyKernel))) ; end; function CreateKernelFile(SaveFile:String):Boolean; var hFile:THandle; BytesWrite: dword; begin Result:=False; hFile := CreateFile(Pchar(SaveFile),GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ,nil,CREATE_ALWAYS,0,0); if hFile = INVALID_HANDLE_VALUE then Exit; if WriteFile(hFile,MyKernelBuf,MyKernelSize, BytesWrite, nil) then Result:=True; CloseHandle(hFile); end; Function GetModule(ProcessName,ModuleName:Pchar):longword; //This is a function written by Hke. //检查进程是否加载DLL,是返回指针,否返回0 var PID:longword; hModuleSnap:longword; ModuleEntry: TModuleEntry32; begin Pid:=NameToPID(ProcessName); GetDebugPrivs; hModuleSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Pid); ModuleEntry.dwSize:=SizeOf(TModuleEntry32); result:=0; if Module32First(hModuleSnap,ModuleEntry) then if (LstrcmpiA(ModuleEntry.szModule,ModuleName)=0) then Result:=ModuleEntry.hModule else begin while Module32Next(hModuleSnap,ModuleEntry) do begin if LstrcmpiA(ModuleEntry.szModule,ModuleName)=0 then begin Result:=ModuleEntry.hModule; break; end; end; end; CloseHandle(hModuleSnap); end; procedure InjectKernelModule(ProcessName ,DllName: Pchar); //This is a function written by Hke. //利用远程线程讲把Dll注入进程 var tmp:longword;//这个专门来占格式收集垃圾 Mysize:longword;//放字符串长度 Parameter:pointer;//放那个参数的指针(位置在目标进程内) hThread:longword; MyHandle,PID:longword; Tkernel:pchar;//为了取得指针 begin if GetModule(ProcessName , DllName)=0 then //如果已经注入就不重复了 begin Tkernel:= DllName; Pid:=NameToPID(ProcessName); GetDebugPrivs; Myhandle:=OpenProcess(PROCESS_ALL_ACCESS, False, Pid); Mysize:=strlen(MyKernel)+1; Parameter:= VirtualAllocEx(Myhandle, nil, Mysize, MEM_COMMIT, PAGE_READWRITE); WriteProcessMemory(Myhandle, Parameter, Pointer(Tkernel), MySize, tmp); hThread:= CreateRemoteThread(Myhandle,nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'), Parameter, 0 , tmp); if hThread <> 0 then begin WaitForSingleObject(hThread, INFINITE); //等待线程运行完 CloseHandle(hThread); end; VirtualFreeEx(MyHandle, Parameter, 0, MEM_RELEASE); //把用完的内存释放掉 CloseHandle(MyHandle); end; end; procedure UnInjectKernelModule(ProcessName ,DllName: Pchar); //This is a function written by Hke. //从目标进程卸载一个DLL var tmp:longword;//这个专门来占格式收集垃圾 hThread:longword; MyHandle,PID:longword; ModuleEntry:longword; begin Pid:=NameToPID(ProcessName); GetDebugPrivs; Myhandle:=OpenProcess(PROCESS_ALL_ACCESS, False, Pid); ModuleEntry:=GetModule(ProcessName ,DllName); if ModuleEntry<>0 then //没加载就不卸载了 begin hThread:= CreateRemoteThread(Myhandle,nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'FreeLibrary'), pointer(ModuleEntry), 0 , tmp); WaitForSingleObject(hThread, INFINITE); //等待线程运行完 CloseHandle(hThread); end; CloseHandle(MyHandle); end; procedure RunFuckCAD; //导出函数调用后屏蔽Ctrl+Alt+Del begin CreateKernelFile(string(GetSysPath)+'/'+string(MyKernel)); //释放DLL到系统目录 InjectKernelModule(Winlogon ,MyKernel); //把释放完DLL注入Winlogon进程 end; procedure StopFuckCAD; //导出函数取消屏蔽Ctrl+Alt+Del begin UnInjectKernelModule(Winlogon ,MyKernel); //从Winlogon卸载DLL DelKernel; //把Dll从系统目录删除 end; end.

转载于:https://www.cnblogs.com/xieyunc/archive/2009/04/27/9126748.html

Windows XP下屏蔽Ctrl_Alt_Del键的方法相关推荐

  1. windows xp下重装ie浏览器的方法

    假如您的ie浏览器出问题了,想重新装一下和原来版本一样的ie,如果您直接装是无法安装的,系统会提示您您已经安装了该浏览器,那这时该怎么办呢?别着急,原来以前在安装ie浏览器的时候安装程序自动的在系统注 ...

  2. xp计算机怎么共享网络,windows XP下如何实现共享上网的方法

    通常来说共享本地连接的电脑即网关电脑要有两块网卡(其中一块是有线或无线网卡),并且有交换机或集线器等网络设备,电脑与电脑之间通过网络设备或无线局域网连接下面是学习啦小编为大家整理的关于windows ...

  3. Windows XP下实现定时关机的简单方法

    定时关机 Windows XP下实现定时关机的简单方法. 指定系统在22分钟后自动关闭:点击"开始→运行",在"打开"中输入命令"Shutdown - ...

  4. xp 解除计算机锁定,Windows XP锁定屏幕的三种方法

    WindowsXP系统如何锁定屏幕?大家在操作电脑的过程中,免不了离开一下,又怕隐私被偷窥,所以很多伙伴都要进行锁定屏幕.那么,在WindowsXP系统下要如何锁定屏幕呢?请看下文介绍. Window ...

  5. windows xp下如何安装SQL server2000企业版

    [转自] http://www.xici.net/u15162693/d80638995.htm windows xp下如何安装SQL server2000企业版 SQL2000企业版本适用于WIN ...

  6. Windows XP 下如何安装 SQL server 2000 企业版

    windows xp下如何安装SQL server2000企业版 SQL2000企业版本 适用于WIN 2000系统,2003系统和XP一般装不了,需要选用个人版(其中,XP系统也可以 安装开发版,功 ...

  7. 有关WINDOWS XP登录密码的几种方法

    有关WINDOWS XP登录密码的几种方法 网上关于破解WINDOWS XP登录密码的几种方法很多,但许多根本不行.我现在总结自己试过几种,这几种方法其实均比较菜的,但可行的.WINDOWS XP登录 ...

  8. 局域网本地连接计算机,Windows XP下让电脑通过无线网卡共享本地连接实现局域网共享宽带上网...

    有时候,宿舍只有一根网线,而有3.4台笔记本需要上网,这时,我们该怎么办呢? 下面就让我们来看看吧!Windows XP下让电脑通过无线网卡共享本地连接实现局域网共享上网. 主要实现了一台使用网线连上 ...

  9. 实现Windows XP自动登录的两种方法

    实现Windows XP自动登录的两种方法 方法1: 在进入Windows XP桌面之前,每次都会出现一个用户登录界面,要求我们输入用户名与密码,可以加大了系统的安全性,也为多人共用一台电脑提供了方便 ...

最新文章

  1. web.xml配置错误页面,及输出错误信息
  2. 23个 Git 最常用命令速查手册,值得收藏!
  3. ubuntu apache2配置
  4. 三态门三个状态vhdl_人防门是什么?为什么会侵线导致重庆地铁事故
  5. CodeForces 839D - Winter is here | Codeforces Round #428 (Div. 2)
  6. HOL中的四种排序,Order By、Sort By、Distribute By、Cluster By
  7. android struts2 图片上传,xhEditor struts2实现图片上传
  8. 种树(信息学奥赛一本通-T1423)
  9. jeecg3.8popup弹出窗口触发失去焦点事件,引发验证弹窗,影响体验问题的解决办法
  10. Python中的mkdir -p功能[重复]
  11. 初接触RTMP流媒体实时消息传输协议
  12. 小试牛刀之Kolla单节点部署
  13. UOS桌面操作系统专业版字体
  14. Python学习笔记 第四天
  15. 墙面有几种装修方法_家里的墙面不知道怎么装?6种装饰方法任你选
  16. 全国计算机技术与软件专业技术考试----(高级资格/高级工程师)各资格证详细介绍
  17. 树莓派安装迅雷xware的失败经验
  18. 日期选择器 当前日期之前不允许选择
  19. win10玩cf不能全屏_win10虚拟机Oracle VM VirtualBox安装和使用教程
  20. 为什么有人把《海贼王》当作人生信条?

热门文章

  1. [MIPS汇编语言]输入输出演示(数组)
  2. 调用摄像头_摄像头 | 浏览器调用摄像头并实现截图保存的效果
  3. 机器人整机主要产品规格参数
  4. poj 1270(toposort)
  5. javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD
  6. BZOJ 1014 火星人prefix
  7. Javascript--Boolean运算符
  8. 数学分析 连续函数的孤立零点
  9. Ubuntu安装MySQL1 - 失败
  10. 未解决ora-01034、ora-03113、oracle使用RMAN删除归档日志