首页
社区
课程
招聘
[求助]通过csrss.exe获取句柄,ObjectTypeNumber参数没有等于5的啊求助啊
发表于: 2013-10-12 17:20 11341

[求助]通过csrss.exe获取句柄,ObjectTypeNumber参数没有等于5的啊求助啊

2013-10-12 17:20
11341
部分核心代码如下,512就是csrss.exe的pid,进程打开了但是ObjectTypeNumber参数没有等于5的啊
ObjectTypeNumber参数等于5是什么意思啊?

ZwAllocateVirtualMemory(GetCurrentProcess(),&pBuf,0,&buflen,MEM_COMMIT,PAGE_READWRITE);

        NTQUERYSYSTEMINFORMATION ZwQuerySystemInformation=(NTQUERYSYSTEMINFORMATION)GetProcAddress(hModule,"ZwQuerySystemInformation");
        ZWDUPLICATEOBJECT ZwDuplicateObject=(ZWDUPLICATEOBJECT)GetProcAddress(hModule,"ZwDuplicateObject");

        ZwQuerySystemInformation(SystemHandleInformation,pBuf,0x0400000,&buflen);
        ULONG szHandleNum=*(ULONG *)pBuf;
        PSYSTEM_HANDLE_INFORMATION h_info=(PSYSTEM_HANDLE_INFORMATION)((ULONG)pBuf+4);
        for(ULONG i=0;i<szHandleNum;i++)
        {
                if((h_info->ProcessId==512)&&(h_info->ObjectTypeNumber==5))
                {
                        MessageBoxA(NULL,"找到游戏进程!",NULL,MB_OK);       
                        ZwDuplicateObject(hProcess,(PHANDLE)h_info->Handle,GetCurrentProcess(),&hDup,0,0,DUPLICATE_SAME_ACCESS);
                        break;
                }
                h_info++;
        }
                        MessageBoxA(NULL,"没有找到游戏进程!",NULL,MB_OK);       
                        ZWFREEVIRTUALMEMORY ZwFreeVirtualMemory=(ZWFREEVIRTUALMEMORY)GetProcAddress(hModule,"ZwFreeVirtualMemory");

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
XX参数等于X是什么意思。请看MSDN。
2013-10-12 17:53
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
貌似关键判断写错了
2013-10-12 18:01
0
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
http://blog.csdn.net/wowbell/article/details/6166770
2013-10-12 18:32
0
雪    币: 171
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个没有问题吧?
2013-10-13 06:44
0
雪    币: 171
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我就是参照这篇文章做的啊!帮我分析一下怎么没有等于5的啊?我是win7
2013-10-13 06:46
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
win7的不同于xp,具体是多少可以从1到10试出来
2013-10-13 07:54
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个id是按系统启动时创建对象类型(object type)的顺序的编排的,不同的系统不一样,例如假设xp顺序是file \ device \ symbolic link \ thread \ job \ process, 那么process就是5,如果win7在中间插一个,假设是file \ device \symbolic link \ driver \ thread \ process , 那么process就是6了

所以通过id来判断是不通用的,当然,你也可以自己取不同的系统id是什么,但是一来这样很麻烦,二来对于楼主的水平也不现实

所以比较笨的一个办法是你其实可以不判断哪个类型,全部duplicate过来,然后对那个句柄用你想要用的操作(比如terminateprocess? readprocessmemory),如果失败了说明就不是进程句柄了
2013-10-13 10:46
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
if((h_info->ProcessId==512)&&(h_info->ObjectTypeNumber==5))
如LZ所述,512是csrss.exe的pid,而ObjectTypeNumber为5代表的是进程对象类型
但是系统中没有csrss.exe的进程句柄,所以找不到
2013-10-13 16:46
0
游客
登录 | 注册 方可回帖
返回
//