我在桌面上创建Windows服务,同时在任务管理器上运行它。那么有任何api或任何程序的隐藏服务图解。你可以发送一些示例代码服务,可以隐藏任务管理器。
答案 0 :(得分:4)
没有。 TaskManager旨在列出正在运行的应用程序。您无法从“TaskManager进程”选项卡中合法地隐藏应用程序。
你可以给你的应用程序一个聪明的名字来伪装它。但实际上,出于安全原因,所有流程都将被列出。
答案 1 :(得分:2)
您可以编写设备驱动程序,它们不会列在正常的“正在运行的进程”列表中,只能在设备管理器中列出。
答案 2 :(得分:1)
我认为没有办法实现这一点,因为它总是会显示为一个进程,而且您还需要将其隐藏在管理员/服务应用程序中。在这种情况下,它不是Windows服务,因为所有服务必须向服务管理器注册才能运行。
实现这一目标的唯一方法是在BIOS级别运行或作为运行Windows操作系统的单独内核运行。
如果您试图阻止人们停止服务,请编写两个相互支持的服务,如果第一个服务停止,则会自动启动其他服务。
答案 3 :(得分:1)
http://www.codeproject.com/Articles/32744/Driver-to-Hide-Processes-and-Files是你的回答。
还在Web上搜索“直接内核对象操作”以了解如何执行此操作 - 或阅读本文
http://www.blackhat.com/presentations/win-usa-04/bh-win-04-butler.pdf
或观看此视频 http://www.youtube.com/watch?v=hcr35ddvjHI
熟练的黑客在代码中创建溢出/竞争条件/ dkom /补丁的时间少于5分钟的原因之一主要是因为程序员的知识状态。
答案 4 :(得分:1)
但是,有一种避免它的方法。我们更改了服务的安全描述符。这是使用SDDL(代表安全描述符定义语言)完成的。
假设 serviceName (std::wstring)拥有服务的名称,而 hService (HANDLE)是服务的句柄,则以下代码将隐藏服务:
PSECURITY_DESCRIPTOR secDescPtr;
ULONG secDescSize = 0;
if (ConvertStringSecurityDescriptorToSecurityDescriptor(L"D:(D;;DCWPDTSD;;;IU)(D;;DCWPDTSD;;;SU)(D;;DCWPDTSD;;;BA)(A;;CCSWLOCRRC;;;IU)(A;;CCSWLOCRRC;;;SU)(A;;CCSWRPWPDTLOCRRC;;;SY)(A;;CCDCSWRPWPDTLOCRSDRCWDWO;;;BA)",
SDDL_REVISION_1,
&secDescPtr,
&secDescSize) == TRUE)
{
wprintf(L"Security Descriptor conversion ok");
if (SetServiceObjectSecurity(hService, DACL_SECURITY_INFORMATION, secDescPtr) == TRUE)
{
wprintf(L"Service %s hidden",serviceName);
ret = true;
}
else
{
switch (GetLastError())
{
case ERROR_ACCESS_DENIED:
wprintf(_T("Service Security setup failed - Access Denied"));
break;
case ERROR_INVALID_HANDLE:
wprintf(_T("Service Security setup failed - Invalid Handle"));
break;
case ERROR_INVALID_PARAMETER:
wprintf(_T("Service Security setup failed - Invalid Parameter"));
break;
case ERROR_SERVICE_MARKED_FOR_DELETE:
wprintf(_T("Service Security setup failed - Service Marked For Delete"));
break;
}
}
}
else
{
wprintf(_T("Security Descriptor conversion failed"));
}