S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

不用hook 实现挂机锁

Posted on 2010-02-08 21:28 S.l.e!ep.¢% 阅读(654) 评论(0)  编辑 收藏 引用 所属分类: RootKit
不用hook 实现挂机锁
创建作业对象,关联winlogon.exe 进程 Winlogon控制重启,关机,注销等动作。设置作业对象的属性为JOB_OBJECT_UILIMIT_EXITWINDOWS (参考

即可 Prevents processes associated with the job from calling the ExitWindows or ExitWindowsEx function.

// 挂机
BOOL res = FALSE;
JOBOBJECT_BASIC_UI_RESTRICTIONS JobInfo;
ZeroMemory(&JobInfo, sizeof(JOBOBJECT_BASIC_UI_RESTRICTIONS));
JobInfo.UIRestrictionsClass = JOB_OBJECT_UILIMIT_EXITWINDOWS;

EnableDebugPriv(SE_DEBUG_NAME);
// 建立JOB 对象 命名为WINLOCK
HANDLE hjob = CreateJobObject(NULL, TEXT("WINLOCK"));

SetInformationJobObject(hjob, JobObjectBasicUIRestrictions, &JobInfo, sizeof(JobInfo));


DWORD Pid = GetProcessId("winlogon.exe");
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);

if (hProcess == NULL)
{
   MessageBox("打开winlogon进程失败");
   return;
}

res = AssignProcessToJobObject(hjob,hProcess);//将进程和对象关联起来
if (!res)
{
   MessageBox("挂机失败");
}


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理