本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 3469|回复: 5

隐藏进程驱动问题,隐藏不全 [复制链接]

Rank: 1

发表于 2012-12-20 14:44:11 |显示全部楼层
这段代码是隐藏记事本做测试,如果我启动2以上个记事本程序,就会又几个是隐藏不了的谁知道原因,指点下

NTSTATUS  HookZwQuerySystemInformation(   
                                                                           IN  ULONG  SystemInformationClass,   
                                                                           IN  PVOID  SystemInformation,   
                                                                           IN  ULONG  SystemInformationLength,   
                                                                           OUT PULONG ReturnLength   
                                                                           )   
{   
        NTSTATUS ntStatus;
        UNICODE_STRING _ProName;

        ntStatus = (RealZwQuerySystemInformation)(
                SystemInformationClass,
                SystemInformation,
                SystemInformationLength,
                ReturnLength );

        RtlInitUnicodeString(&_ProName,L"notepad.exe");  
        if( NT_SUCCESS(ntStatus))
        {
                if(SystemInformationClass == 5)
                {
                        struct _SYSTEM_PROCESSES *curr = (struct _SYSTEM_PROCESSES *)SystemInformation;
                        struct _SYSTEM_PROCESSES *prev = NULL;

                        while(curr)
                        {
                                if (curr->ProcessName.Buffer != NULL /*&& ProName != NULL*/)
                                {
                                        //if(0 == memcmp(curr->ProcessName.Buffer,ProName, wcslen(ProName)))
                                        if(RtlCompareUnicodeString(&_ProName, &curr->ProcessName, 1) == 0)
                                        {
                                                if(prev)
                                                {
                                                        if(curr->NextEntryDelta) //要删除的信息在中间  
                                                                prev->NextEntryDelta += curr->NextEntryDelta;
                                                        else  //要删除的信息在末尾  
                                                                prev->NextEntryDelta = 0;
                                                       
                                                }
                                                else
                                                {
                                                        if(curr->NextEntryDelta)        ////要删除的信息在开头                                                                                       
                                                                (char *)SystemInformation += curr->NextEntryDelta;
                                                        else                
                                                                SystemInformation = NULL;
                                                }

                                                if(curr->NextEntryDelta)  //如果链下一个还有其他的进程信息,指针往后移  
                                                        ((char*)curr+=curr->NextEntryDelta);                    
                                                else  
                                                {  
                                                        curr = NULL;  
                                                        break;
                                                }  
                                        }
                                }
                               
                                if (curr!=NULL)
                                {
                                        prev = curr;
                                        if(curr->NextEntryDelta) ((char *)curr += curr->NextEntryDelta);
                                        else curr = NULL;
                                }
                        }
                }

        }
        return ntStatus;       
}   

Rank: 1

发表于 2012-12-20 19:35:03 |显示全部楼层
怎么没人看我的帖子

Rank: 2

发表于 2012-12-20 21:43:15 |显示全部楼层
动手调试下
遍历下  看看那些处理了 那些没处理就搞定了
可能有兴趣回答的人不多

Rank: 1

发表于 2012-12-21 09:56:53 |显示全部楼层
我看了,{要删除的信息在中间  } 部分
,其实已经处理了,但不知道为什么没隐藏

Rank: 1

发表于 2012-12-21 13:54:39 |显示全部楼层
  这个骗一下任务管理器还行啊,直接抹句柄表.

Rank: 1

发表于 2012-12-21 16:13:30 |显示全部楼层
这个方法不支持x64,现在不支持x64要out了
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-5-21 01:53 , Processed in 0.022318 second(s), 8 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部