找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 24071|回复: 32

[填坑]在XP上使用ObQueryNameString查询文件对象发现的大坑

 火.. [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2017-1-23 09:04:11 | 显示全部楼层 |阅读模式
早听说ObQueryNameString有问题,最近无聊想把枚举句柄名称的代码支持到XP,结果就一头撞进了这个大坑里。
这是一段很普通的查询对象名称的代码:
  1. BOOLEAN QueryObjectName(PVOID pAnyObject, PWCHAR *OutputBufferFreeByCaller)
  2. {
  3.         NTSTATUS status;
  4.         ULONG returnedLength;
  5.         BOOLEAN foundCompleteName = FALSE;
  6.         PUNICODE_STRING pObjectName = NULL;
  7.         status = ObQueryNameString(pAnyObject, NULL, 0, &returnedLength);
  8.         if(status == STATUS_INFO_LENGTH_MISMATCH)
  9.         {
  10.                 pObjectName = ExAllocatePool(PagedPool, returnedLength);
  11.                 status = ObQueryNameString(pAnyObject, (POBJECT_NAME_INFORMATION)pObjectName, returnedLength, &returnedLength);
  12.                 if(NT_SUCCESS(status))
  13.                 {
  14.                         *OutputBufferFreeByCaller = ExAllocatePool(PagedPool,pObjectName->Length+2);
  15.                         RtlZeroMemory(*OutputBufferFreeByCaller,pObjectName->Length+2);
  16.                         memcpy(*OutputBufferFreeByCaller,pObjectName->Buffer,pObjectName->Length);
  17.                         foundCompleteName = TRUE;
  18.                 }
  19.                 ExFreePool(pObjectName);
  20.         }
  21.         return foundCompleteName;
  22. }
复制代码
但是在(且仅在)XP上查询FILE_OBJECT时有机会蓝屏(代码是BAD_POOL_CALLER),其他系统,或在XP查询其它对象都不蓝屏。然后上网一查,吐槽ObQueryNameString的帖子里,大多跟查询FILE_OBJECT有关。不过我就不吐槽了,因为有个很简单的解决方案:
游客,如果您要查看本帖隐藏内容请回复

1

主题

80

回帖

1

精华

铂金会员

积分
1818
发表于 2017-1-23 09:05:48 | 显示全部楼层
看看怎么填坑的.学习一下.

0

主题

7

回帖

0

精华

初来乍到

积分
15
发表于 2017-1-23 09:16:26 | 显示全部楼层
好大的一个坑,前排占座围观

0

主题

52

回帖

0

精华

钻石会员

积分
3863
发表于 2017-1-23 12:08:00 | 显示全部楼层
学习一下

0

主题

87

回帖

0

精华

金牌会员

积分
1046
发表于 2017-1-23 12:43:33 | 显示全部楼层
大坑,这个要收藏

3

主题

75

回帖

0

精华

银牌会员

积分
440
发表于 2017-1-23 15:31:04 | 显示全部楼层
看看是怎么解决的

0

主题

117

回帖

0

精华

铜牌会员

积分
258
发表于 2017-1-23 16:15:10 | 显示全部楼层
看看了。。。

4

主题

145

回帖

0

精华

金牌会员

积分
1189
发表于 2017-1-23 23:37:20 | 显示全部楼层
如果在应用层,还有一个死锁的问题,也是查句柄名称的,不过在内核实现就没这个问题.

0

主题

49

回帖

0

精华

铜牌会员

积分
137
发表于 2017-1-26 12:05:28 | 显示全部楼层
看看怎么填坑的.学习一下.

0

主题

49

回帖

0

精华

铜牌会员

积分
137
发表于 2017-1-26 12:06:29 | 显示全部楼层
看看怎么填坑的.学习一下.

0

主题

9

回帖

0

精华

初来乍到

积分
30
发表于 2017-2-7 13:42:25 | 显示全部楼层
ObQueryNameString查询文件对象发现的大坑

5

主题

68

回帖

2

精华

钻石会员

积分
2738
QQ
发表于 2017-5-23 14:04:49 | 显示全部楼层
看一看

0

主题

21

回帖

0

精华

铜牌会员

积分
150
发表于 2017-5-27 11:50:40 | 显示全部楼层
感谢分析学习下

0

主题

11

回帖

0

精华

铜牌会员

积分
52
发表于 2017-6-5 00:50:56 | 显示全部楼层
看看怎么填坑的.学习一下.

0

主题

6

回帖

0

精华

铜牌会员

积分
34
发表于 2017-6-15 12:56:51 | 显示全部楼层
看看

0

主题

10

回帖

0

精华

初来乍到

积分
29
发表于 2017-7-6 17:37:32 | 显示全部楼层
学习学习

0

主题

29

回帖

0

精华

铜牌会员

积分
87
发表于 2017-7-15 12:51:28 | 显示全部楼层
来看看究竟有什么坑!

0

主题

45

回帖

0

精华

初来乍到

积分
29
发表于 2017-7-21 04:38:26 | 显示全部楼层
以前遇到过

0

主题

103

回帖

0

精华

初来乍到

积分
3
发表于 2018-6-6 19:50:56 | 显示全部楼层
学习一下

1

主题

122

回帖

0

精华

铜牌会员

积分
182
发表于 2021-4-29 09:22:33 | 显示全部楼层
来看看 学习学习

3

主题

122

回帖

0

精华

铜牌会员

积分
291
发表于 2021-4-30 20:59:39 | 显示全部楼层
学习一下

0

主题

16

回帖

0

精华

初来乍到

积分
20
发表于 2021-5-23 15:10:11 | 显示全部楼层

看看怎么填坑的.学习一下.

0

主题

7

回帖

0

精华

初来乍到

积分
17
发表于 2022-1-24 13:03:27 | 显示全部楼层
看看是啥黑科技

6

主题

123

回帖

0

精华

初来乍到

积分
5392
发表于 2022-1-25 15:39:26 | 显示全部楼层
look look

1

主题

61

回帖

0

精华

铜牌会员

积分
99
发表于 2022-3-1 14:29:15 | 显示全部楼层
学习一下

0

主题

30

回帖

0

精华

初来乍到

积分
21
发表于 2022-8-14 23:15:14 | 显示全部楼层
我来看看!

3

主题

25

回帖

0

精华

初来乍到

积分
2047
发表于 2022-9-2 23:44:05 | 显示全部楼层
看看怎么填坑的.学习一下.

0

主题

36

回帖

0

精华

铜牌会员

积分
36
发表于 2022-11-7 23:13:05 | 显示全部楼层
必须支持                          

0

主题

40

回帖

0

精华

铜牌会员

积分
64
发表于 2022-11-21 16:23:23 | 显示全部楼层
看看填坑,谢谢分享有用知识.

5

主题

116

回帖

0

精华

铜牌会员

积分
174
发表于 2023-12-10 20:52:26 | 显示全部楼层
我来学习

5

主题

116

回帖

0

精华

铜牌会员

积分
174
发表于 2023-12-10 20:55:27 | 显示全部楼层
在连接字符蓝屏吗?
我试过直接拷贝FileObject.FileName会蓝屏
25.png

0

主题

40

回帖

0

精华

金牌会员

积分
868
发表于 2024-1-2 17:08:33 | 显示全部楼层

看看怎么填坑的.学习一下.
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表