首页
社区
课程
招聘
[求助]pscreatesystemthread 的问题
发表于: 2013-4-27 19:35 5670

[求助]pscreatesystemthread 的问题

2013-4-27 19:35
5670
NTSTATUS  MyPsCreateSystemThread(
                                                    OUT PHANDLE ThreadHandle,                              
                                IN ULONG DesiredAccess,                              
                                IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,      
                                IN HANDLE ProcessHandle OPTIONAL,                    
                                OUT PCLIENT_ID ClientId OPTIONAL,                    
                                IN PKSTART_ROUTINE StartRoutine,                       
                                                    IN PVOID StartContext
                                                                                   
  )
                                                                                   
{
        
    NTSTATUS     rc;
    HANDLE      PID;
   
      
    rc = (NTSTATUS)OriginalPsCreateSystemThread(ThreadHandle,DesiredAccess,ObjectAttributes,
                                                       ProcessHandle,ClientId,StartRoutine,StartContext);
        if( (ClientId != NULL) )
        {
                PID = ClientId->UniqueThread;          
                KdPrint(( "------------------------- PID=%d--------------\n",(int*)PID ));
               
                // 如果是被保护的PID,则拒绝访问,并将句柄设置为空
                if(PID )
                {
                        KdPrint(("被保护线程 MyPID=%d \n",(int)PID));
                        //调试输出 类似C语言的 Printf
                        ThreadHandle = NULL; //这个是关键
                        rc = STATUS_ACCESS_DENIED; //这个返回值
                       
                        EP=PsGetCurrentProcess();                         
                        KdPrint((" ACESS Process Name  --:%s--   \n",(PTSTR)((ULONG)EP+0x174)));
                       
                }
        }

   
    return rc;
   
}

这样写过滤函数 为什么某程序还能创建内核线程

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 601
活跃值: (256)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
2
创建后再过滤,还有用吗?
2013-4-27 19:46
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
应该调用PspTerminateThreadByPointer杀死创建的线程……你在那里返回的话没有用的
2013-4-27 21:42
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
要过滤“行为”,当然是在执行动作之前过滤啊,就好比你是法官,把犯人无罪释放才发现:哦,原来这家伙真的是个杀人犯!当然如果像3楼一样再把它抓回来判决死刑也可以,但这样多折腾一下,多麻烦啊~
2013-4-27 23:10
0
雪    币: 72
活跃值: (230)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
懂了 谢谢楼上的回答
2013-4-29 10:11
0
游客
登录 | 注册 方可回帖
返回
//