• MFC变通实现屏蔽任务管理器


    查找了网上的资料,发现无非就是几种:

    1、用低级钩子,但是这种方法试下发现根本就是假的,钩子根本拦截不到Ctrl+Alt+Del的消息,只能屏蔽类似于Alt+F4,之类的按键消息。

    而且第一次安装安全软件会提示用户。

    2、用注册表禁用,即程序向注册表的CurrentVersion\System分支添加EnableTaskmgr的值为0的REG_Z?(是这样写的吗)的键值,但是涉及到注册表操作,只要开启了杀毒软件,防木马等安全工具,就会被提前拦截,而且在按下快捷键时会跳出任务管理器已被管理员禁用的错误提示框。

    3、先写好屏蔽Ctrl+Alt+Del的动态链接库,再用程序在Winlogon中动态开辟内存空间并装载,即远程注入。这种方法是最正确的了,但是程序涉及很复杂的代码(网上找的好多都是汇编实现的),对于我这种菜鸟来说简直就是天书。

    4、下面这就是我要说的变通实现的方法了。

    1)新建一个MFC的程序工程,在类的声明中公有成员中加入

                CFile hookTaskmgr;

    2)在需要屏蔽的地方加入如下代码:

                hookTaskmgr.Open("C:\\Windows\\system32\\taskmgr.exe",           //任务管理器的文件地址

                                                 CFile::shareDenyRead|CFile::shareDenyWrite, NULL);        //不可被其他程序访问

    3)在解除屏蔽的地方加入如下代码:

                hookTaskmgr.Close();

    //代码写地比较简便,其实还应该加入获取系统目录等代码,在屏蔽前还要加入FindWindow和PostMessage来结束任务管理器(如已打开)。

    程序完成了。屏蔽后试试吧,是不是什么都不弹出来了?

    更新:由于任务管理器的位置具有不确定性,可能存在映像劫持,所以可以加入如下代码预先判断:

    HKEY hKEY;

    HKEY  hKeyRoot = HKEY_LOCAL_MACHINE;

    long ret = ::RegOpenKeyEx(hKeyRoot,

    "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\taskmgr.exe",

    0, KEY_READ, &hKEY);

    if(ret != ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行

    {

    AfxMessageBox("taskmgr.exe not found");

    }

    _TCHAR getValue[255] = “”;

    DWORD keyType = REG_SZ;//定义数据类型

    DWORD DataLen = 80;//定义数据长度

    CString strUser = _T("Debugger");//要查询的键名称

    long ret1=::RegQueryValueEx(hKEY, strUser, NULL, &keyType, (LPBYTE)getValue, &DataLen);

    if(ret1!=ERROR_SUCCESS)

    {

    AfxMessageBox("错误:无法查询有关的注册表信息");

    return;

    }

    CString a;

    a.Format("%s", getValue);

    AfxMessageBox(a);

    //所得到的getValue即为任务管理器地址。如果不存在,则进行获取系统目录的操作,再获取taskmgr.exe的地址,即可屏蔽了。

  • 相关阅读:
    Ambiguous mapping. Cannot map 'labelInfoController' method
    在写ssh项目时浏览器页面出现http status 404 – not found
    JS页面出现Uncaught SyntaxError: Unexpected token < 错误
    Data truncation: Truncated incorrect DOUBLE value:
    个人最终总结
    结对编程--黄金点游戏
    Windows操作系统----锁住命令行窗口
    Windows操作系统下给文件夹右键命令菜单添加启动命令行的选项
    命令行下运行 java someClass.class出现 “错误:找不到或无法加载主类someClass ” 的解决方案
    Qt Quick程序的发布
  • 原文地址:https://www.cnblogs.com/ZzzZzz/p/2307408.html
Copyright © 2020-2023  润新知