【发布时间】:2016-01-28 11:38:55
【问题描述】:
我试图在 c++ windows 中保护一个进程, 代码是:
#include <iostream>
#include <Aclapi.h>
#include <iostream>
#include <windows.h>
#include <sddl.h>
#include <stdio.h>
using namespace std;
BOOL DenyAccess()
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
SetKernelObjectSecurity(hProcess, DACL_SECURITY_INFORMATION, sa.lpSecurityDescriptor);
return TRUE;
}
int main()
{
while(DenyAccess());
return 0;
}
但是我可以从任务管理器中杀死进程!怎么了?
【问题讨论】:
-
@Holonout 我不明白,这个 URL 是关于信号的,它和这个有什么关系吗?!你能解释更多吗?
-
对不起用户,错误的链接。这将更符合您的要求:security.stackexchange.com/questions/30985/…
-
IIRC,现代版本的 Windows 上的防病毒软件使用一种特殊技术(我认为类似于“受保护的进程”),但您必须为此获得 Microsoft 的特殊数字签名。较旧的防病毒软件被骗,部分运行在内核模式下,并以未记录和不受支持的方式干扰操作系统。 (这就是为什么有这么多人不幸倾向于导致 Windows 出现故障。)
-
总体目标是什么?无法杀死的进程?编写设备驱动程序。