Tesla.Angela 发表于 2017-1-23 09:04:11

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

早听说ObQueryNameString有问题,最近无聊想把枚举句柄名称的代码支持到XP,结果就一头撞进了这个大坑里。
这是一段很普通的查询对象名称的代码:BOOLEAN QueryObjectName(PVOID pAnyObject, PWCHAR *OutputBufferFreeByCaller)
{
        NTSTATUS status;
        ULONG returnedLength;
        BOOLEAN foundCompleteName = FALSE;
        PUNICODE_STRING pObjectName = NULL;
        status = ObQueryNameString(pAnyObject, NULL, 0, &returnedLength);
        if(status == STATUS_INFO_LENGTH_MISMATCH)
        {
                pObjectName = ExAllocatePool(PagedPool, returnedLength);
                status = ObQueryNameString(pAnyObject, (POBJECT_NAME_INFORMATION)pObjectName, returnedLength, &returnedLength);
                if(NT_SUCCESS(status))
                {
                        *OutputBufferFreeByCaller = ExAllocatePool(PagedPool,pObjectName->Length+2);
                        RtlZeroMemory(*OutputBufferFreeByCaller,pObjectName->Length+2);
                        memcpy(*OutputBufferFreeByCaller,pObjectName->Buffer,pObjectName->Length);
                        foundCompleteName = TRUE;
                }
                ExFreePool(pObjectName);
        }
        return foundCompleteName;
}但是在(且仅在)XP上查询FILE_OBJECT时有机会蓝屏(代码是BAD_POOL_CALLER),其他系统,或在XP查询其它对象都不蓝屏。然后上网一查,吐槽ObQueryNameString的帖子里,大多跟查询FILE_OBJECT有关。不过我就不吐槽了,因为有个很简单的解决方案:**** Hidden Message *****

3207145141 发表于 2017-1-23 09:05:48

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

fhpknight 发表于 2017-1-23 09:16:26

好大的一个坑,前排占座围观

baichimm 发表于 2017-1-23 12:08:00

学习一下

zoandcom 发表于 2017-1-23 12:43:33

大坑,这个要收藏

flac 发表于 2017-1-23 15:31:04

看看是怎么解决的

jzy1115 发表于 2017-1-23 16:15:10

看看了。。。

kz丶cn 发表于 2017-1-23 23:37:20

如果在应用层,还有一个死锁的问题,也是查句柄名称的,不过在内核实现就没这个问题.

n36437517 发表于 2017-1-26 12:05:28

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

n36437517 发表于 2017-1-26 12:06:29

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

hotwen 发表于 2017-2-7 13:42:25

ObQueryNameString查询文件对象发现的大坑

Murray 发表于 2017-5-23 14:04:49

看一看

ttblacka2 发表于 2017-5-27 11:50:40

感谢分析学习下

yyss258147 发表于 2017-6-5 00:50:56

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

hkxiaoyu 发表于 2017-6-15 12:56:51

看看

huangzeyuan 发表于 2017-7-6 17:37:32

学习学习

linkerrors 发表于 2017-7-15 12:51:28

来看看究竟有什么坑!

c3358 发表于 2017-7-21 04:38:26

以前遇到过

sc12345 发表于 2018-6-6 19:50:56

学习一下

Cloutain 发表于 2021-4-29 09:22:33

来看看 学习学习

lpmjknj 发表于 2021-4-30 20:59:39

学习一下

Intel-小林同学 发表于 2021-5-23 15:10:11


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

819773925 发表于 2022-1-24 13:03:27

看看是啥黑科技

YOUBADBAD 发表于 2022-1-25 15:39:26

look look

kanren 发表于 2022-3-1 14:29:15

学习一下

omenfk 发表于 2022-8-14 23:15:14

我来看看!

清寜 发表于 2022-9-2 23:44:05

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

2254649642 发表于 2022-11-7 23:13:05

必须支持                        

IBinary 发表于 2022-11-21 16:23:23

看看填坑,谢谢分享有用知识.

376408384 发表于 2023-12-10 20:52:26

我来学习

376408384 发表于 2023-12-10 20:55:27

在连接字符蓝屏吗?
我试过直接拷贝FileObject.FileName会蓝屏

lusefei 发表于 2024-1-2 17:08:33


看看怎么填坑的.学习一下.
页: [1] 2
查看完整版本: [填坑]在XP上使用ObQueryNameString查询文件对象发现的大坑