防止任务管理器中的进程被关闭

2023-12-01

我正在开发一个小程序来提高工作效率。它应该在预设的分钟数后断开用户与互联网的连接或关闭您的计算机。不应使用任务管理器关闭该程序。我可以编译该程序并运行它,但我可以使用任务管理器关闭它。我的灵感来自于这一页:

#include <iostream>
#include <Windows.h>

#include <AccCtrl.h>
#include <AclAPI.h>
#include <tchar.h>

#include "shutdown.cpp"
#include "disconnect.cpp"



static const bool ProtectProcess()
{
    
    HANDLE hProcess = GetCurrentProcess();
    EXPLICIT_ACCESS denyAccess = {0};
    DWORD dwAccessPermissions = GENERIC_WRITE|PROCESS_ALL_ACCESS|WRITE_DAC|DELETE|WRITE_OWNER|READ_CONTROL;
    BuildExplicitAccessWithName( &denyAccess, _T("CURRENT_USER"), dwAccessPermissions, DENY_ACCESS, NO_INHERITANCE );
    PACL pTempDacl = NULL;
    DWORD dwErr = 0;
    dwErr = SetEntriesInAcl( 1, &denyAccess, NULL, &pTempDacl );
    // check dwErr...
    dwErr = SetSecurityInfo( hProcess, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pTempDacl, NULL );
    // check dwErr...
    LocalFree( pTempDacl );
    CloseHandle( hProcess );
    return dwErr == ERROR_SUCCESS;

}


int main() 
{
    using namespace std;
    int abfrage;

    ProtectProcess();

    for (;;)
    {
        cout << "10.Cut your Internet connection" << endl
             << "11.Cut your Internet connection after 'x' minutes of surfing" << endl
             << "20.Shutdown"                   << endl;
        cin >> abfrage;
    
        switch(abfrage)
        {
            case 10: disconnectnow(); break;
            case 11: disconnectlater(); break;
            case 20: shutdown(); break;

            default: cout << "nothing to see here" << endl;
        }
    }
    return EXIT_SUCCESS;
}

这个功能是故意不支持并积极使其变得棘手:

为什么不能捕获 TerminateProcess?

如果用户启动任务管理器并单击“应用程序”选项卡上的“结束任务”按钮,Windows 首先会尝试正常关闭您的程序,方法是发送WM_CLOSE给 GUI 程序的消息和CTRL_CLOSE_EVENT控制台程序的事件。但你没有机会拦截TerminateProcess。为什么不?

TerminateProcess是低级进程终止函数。它绕过了DLL_PROCESS_DETACH以及过程中的其他任何事情。当你用TerminateProcess,该进程中将不再运行用户模式代码。它消失了。不过去就走。不要收取 200 美元。

如果你能拦截TerminateProcess,您将加剧程序和用户之间的军备竞赛。假设你可以拦截它。好吧,那么如果你想让你的程序无法被杀死,你只需交出你的TerminateProcess处理程序!然后人们会要求“一种方法来杀死一个拒绝被杀死的进程TerminateProcess,”然后我们就会回到开始的地方。

实际上,试图逃避检测和任务终止的程序会尝试将自己重命名为接近 Windows 系统进程的同种型。不要这样做。它保证您的程序将作为恶意软件提交,并会破坏您的信誉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止任务管理器中的进程被关闭 的相关文章

  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 让 Jenkins 对远程用户不可见

    我的本地 Windows 设备上有一个 Jenkins 服务器 但我想让它对外界不可见 有关服务器的办公室规则 明显且不隐晦的 效果令人满意的方法是设置防火墙规则来阻止对其端口的传入访问 但我认为必须有一个 Jenkins 设置来阻止它向除
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • “拖动”移动 uibutton,使其行为类似于 uiScrollView

    我需要在屏幕上上下滑动 uibutton 仅限 Y 它需要被限制在一个区域内 我希望能够点击它并拖动or轻拂它 就像 uiScrollView 一样 它与 uiScrollView 不同的原因是您必须从按钮开始 而不是从 uiScrollV
  • 批处理文件成功和错误记录

    有没有办法在批处理文件中记录批处理文件的错误和成功 我正在尝试将文件从我的计算机复制到 200 台机器 效果很好 但想知道哪个失败以及失败的原因 因为屏幕消失得很快 echo off if 1 goto usage echo mapping
  • Antlr左递归问题

    我的 Antlr 语法中存在左递归问题 虽然我认为我理解为什么会出现问题 但我无法想出解决方案 问题出在我的数据类型规则的最后一行 我已经包含了完整的语法供您查看 grammar Test options output AST ASTLab
  • ggplot 将不会绘制缺失的类别

    我正在与 ggplot 作斗争 我总是这样做 有许多very关于强制 ggplot 在图例中包含零值类别的类似问题 here and here 例如 但是我 think I 有一个稍微不同的要求 我对scale x discrete和sca
  • VHDL:对固定信号值进行零扩展

    如何对固定信号值进行零扩展 我有以下信号 signal shamt std logic vector 4 downto 0 在将其分配给另一个大小为 31 到 0 的变量之前 我必须将 shamt 归零 我有以下代码 但我不确定它是否正确
  • 如何查找 PCSC 读卡器的设备实例 ID

    仅具有 PCSC 读取器的句柄和上下文 使用winscard在 Windows gt XP 上 有什么方法可以获取其设备实例 ID 或其他可以在SetupDi 用于查明为所述阅读器加载了哪个驱动程序的 API SCardGetReaderD
  • VS 2013 SDK:如何仅为代码窗口编辑器绑定热键?

    In C 要不然VB Net 使用 Visual StudioPackage 我想为CommandBarButton 例如Ctrl E R 然后 当按下时 关联的CommandBarButton应该调用它的Execute方法 我想是这样 我
  • 从unity上传图片到facebook

    我正在开发一个 Unity 游戏 你可以在其中拍照并将这张照片连同一些标签和东西 很像 Friendsmash 从 Unity 上传到 Facebook 问题是我没有可以放置屏幕截图的网络服务器 并且 Fb Feeb picture 属性只
  • WooCommerce:将产品添加到购物车并覆盖价格?

    replace order new WC Cart replace order gt empty cart true replace order gt add to cart 256 1 以上代码添加产品256到购物车1时间 但我遇到的问题
  • AngularAMD + ui-router + 动态控制器名称?

    我试图在我的应用程序中编写通用路由 并根据路由参数动态解析视图和控制器名称 我有以下有效的代码 stateProvider state default angularAMD route url module action id templa
  • 带有 JWT 令牌的 Google 云存储 JSON API

    我正在尝试使用 Google Cloud Storage 的 JSON API 从 Google Cloud Storage 检索文件 我不被允许使用 SDK 是否可以从 ServiceAccount json 文件创建 JWT 并使用 J
  • CodeIgniter index.php URL 重写 OVH

    我读了很多关于这个主题的主题 但没有人起作用 首先我分享我的配置 虚拟主机文件
  • bash 中的转义字符(对于 JSON)

    我使用 git 然后将提交消息和其他位作为 JSON 有效负载发布到服务器 目前我有 MSG git log n 1 format oneline grep o 它将 MSG 设置为如下所示 Calendar can t go back p
  • 在ios中的谷歌地图上添加多个图钉

    我想在加载谷歌地图时在谷歌地图上添加多个图钉 我有附近位置的纬度和经度值的列表 我怎样才能用图钉在地图上显示所有这些位置 我正在使用适用于 iOS 的 Google SDK 我正在使用以下代码 但它对我不起作用 NSMutableArray
  • 如何独立管理和重新加载多个 QuickFIX/J 会话?

    我可以在一个 QuickFIX J 设置文件中配置多个会话 然后使用一个SocketInitiator 但我希望能够修改一个或多个会话的配置 然后仅重新启动这些会话而不影响任何其他会话 我可以通过拥有多个设置文件并使用一个来做到这一点Soc
  • 自定义 TensorFlow 指标:给定假阳性率下的真阳性率

    我有一个二元分类问题 类别背景 bg 0 信号 sig 1 我正在为此训练神经网络 出于监控目的 我尝试在 Keras 中使用 TensorFlow 后端实现自定义指标 该指标执行以下操作 1 计算我的 NN 输出的阈值 这将导致 X 的误
  • 像 gitolite 这样的程序如何工作?

    我很好奇 gitolite 等程序是如何工作的 特别是它们如何与 SSH 协议交互以提供定制的体验 有人可以提供一个例子来说明我如何完成类似以下的事情以及我可以在哪里了解有关该主题的更多信息吗 ssh email protected PTY
  • 准备好的陈述有简写吗?

    最近我开始使用准备好的语句 但是 我觉得我的代码变得有点过于混乱 包含所有临时变量和仅进行单个查询所需的额外行 到目前为止 我的代码如下所示 stmt conn gt prepare SELECT FROM locations WHERE
  • 无需本地信任库的客户端证书身份验证

    好吧 一开始这可能听起来很奇怪 所以请耐心听我说 我需要解决的问题是这样的 我需要以某种方式在 Spring Boot 应用程序中启用客户端身份验证 允许客户端自己创建证书 without服务器需要使用服务器私钥对 CSR 进行签名 我怎样
  • 防止任务管理器中的进程被关闭

    我正在开发一个小程序来提高工作效率 它应该在预设的分钟数后断开用户与互联网的连接或关闭您的计算机 不应使用任务管理器关闭该程序 我可以编译该程序并运行它 但我可以使用任务管理器关闭它 我的灵感来自于这一页 include