如何从Windows桌面中的任务管理器隐藏Windows服务

时间:2009-10-13 05:10:46

标签: windows-services

我在桌面上创建Windows服务,同时在任务管理器上运行它。那么有任何api或任何程序的隐藏服务图解。你可以发送一些示例代码服务,可以隐藏任务管理器。

5 个答案:

答案 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)

任务管理器在“服务”选项卡中显示“服务”。 enter image description here

但是,有一种避免它的方法。我们更改了服务的安全描述符。这是使用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"));
    }