紫水晶编程技术论坛 - 努力打造成全国最好的编程论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7296|回复: 12

[已解決]求教調用NTQUERYDIRECTORYFILE問題

[复制链接]

7

主题

421

帖子

1

精华

铂金会员

Rank: 5

积分
2173
发表于 2013-4-18 16:59:07 | 显示全部楼层 |阅读模式
本帖最后由 kk1025 于 2013-7-29 08:40 编辑

在調用NTQUERYDIRECTORYFILE時會出現STATUS_INFO_LENGTH_MISMATCH的NTSTATUS,不知哪位大大知道怎麼解這個問題。


typedef NTSTATUS ( *NTQUERYDIRECTORYFILE)(IN HANDLE  FileHandle,
                                         IN HANDLE  Event,
                                         IN PIO_APC_ROUTINE  ApcRoutine,
                                         IN PVOID  ApcContext,
                                         OUT PIO_STATUS_BLOCK  IoStatusBlock,
                                         OUT PVOID  FileInformation,
                                         OUT ULONG  Length,
                                         IN FILE_INFORMATION_CLASS  FileInformationClass,
                                         IN BOOLEAN  ReturnSingleEntry,
                                         IN PUNICODE_STRING  FileName,
                                         IN BOOLEAN  RestartScan);

NTQUERYDIRECTORYFILE NtQueryDirectoryFile;

status = (NTQUERYDIRECTORYFILE)(NtQueryDirectoryFile)(
                        FileHandle,
                        Event,
                        ApcRoutine,
                        ApcContext,
                        IoStatusBlock,
                        FileInformation,
                        Length,
                        FileInformationClass,
                        ReturnSingleEntry,
                        FileName,
                        RestartScan);
kp("NTSTATUSA = %x",status);

854

主题

3481

帖子

2

精华

管理员

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

Rank: 125Rank: 125Rank: 125Rank: 125Rank: 125

积分
36100
发表于 2013-4-19 12:21:07 | 显示全部楼层
你去搜索一下论坛,有人发过一个利用此函数来枚举文件的代码。

7

主题

421

帖子

1

精华

铂金会员

Rank: 5

积分
2173
 楼主| 发表于 2013-4-19 14:00:47 | 显示全部楼层
Tesla.Angela 发表于 2013-4-19 12:21
你去搜索一下论坛,有人发过一个利用此函数来枚举文件的代码。

感謝。我找一下~~

7

主题

421

帖子

1

精华

铂金会员

Rank: 5

积分
2173
 楼主| 发表于 2013-6-9 08:59:29 | 显示全部楼层
Tesla.Angela 发表于 2013-4-19 12:21
你去搜索一下论坛,有人发过一个利用此函数来枚举文件的代码。

不知大大有沒有遇過。調用原函数時,會出現STATUS_ACCESS_VIOLATION的問題

854

主题

3481

帖子

2

精华

管理员

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

Rank: 125Rank: 125Rank: 125Rank: 125Rank: 125

积分
36100
发表于 2013-6-9 15:35:50 | 显示全部楼层
kk1025 发表于 2013-6-9 08:59
不知大大有沒有遇過。調用原函数時,會出現STATUS_ACCESS_VIOLATION的問題

把代码写到try...catch里面。

7

主题

421

帖子

1

精华

铂金会员

Rank: 5

积分
2173
 楼主| 发表于 2013-6-9 17:08:13 | 显示全部楼层
Tesla.Angela 发表于 2013-6-9 15:35
把代码写到try...catch里面。

謝謝大大。不過問題還是一樣,
我參考大大的Hook SSDT 找到(50)的NtQueryDirectoryFile,然後Hook到Fake_NtQueryDirectoryFile , 在Fake_NtQueryDirectoryFile中再CALL NtQueryDirectoryFile要取得FileInformation時就會出現STATUS_ACCESS_VIOLATION的錯誤而失敗, 使用try... catch也是一樣~~不知大大有建議嗎~

854

主题

3481

帖子

2

精华

管理员

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

Rank: 125Rank: 125Rank: 125Rank: 125Rank: 125

积分
36100
发表于 2013-6-9 18:09:55 | 显示全部楼层
不知道NtQueryDirectoryFile要在内核线程里才能调用吗?
或者说,线程要处于KernelMode才能成功执行这个函数吗?

7

主题

421

帖子

1

精华

铂金会员

Rank: 5

积分
2173
 楼主| 发表于 2013-6-9 22:27:32 | 显示全部楼层
Tesla.Angela 发表于 2013-6-9 18:09
不知道NtQueryDirectoryFile要在内核线程里才能调用吗?
或者说,线程要处于KernelMode才能成功执行这个函 ...

謝謝大大, 第一次玩耍WIN64 ,我功力很弱,因為在WIN32上寫過類似的是可以,
所以想問大大,要怎麼樣才能在WIN64走內核線程,難道一定要用KERNEL﹣CODE 的憑證SIGN過才行嗎,

854

主题

3481

帖子

2

精华

管理员

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

Rank: 125Rank: 125Rank: 125Rank: 125Rank: 125

积分
36100
发表于 2013-6-10 00:12:55 | 显示全部楼层
kk1025 发表于 2013-6-9 22:27
謝謝大大, 第一次玩耍WIN64 ,我功力很弱,因為在WIN32上寫過類似的是可以,
所以想問大大,要怎麼樣才 ...

看置顶贴。

7

主题

421

帖子

1

精华

铂金会员

Rank: 5

积分
2173
 楼主| 发表于 2013-6-10 10:28:29 | 显示全部楼层
Tesla.Angela 发表于 2013-6-10 00:12
看置顶贴。

OK。。。研究一下~
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

手机版|Archiver|紫水晶工作室 ( 粤ICP备05020336号 )

GMT+8, 2024-4-19 13:33 , Processed in 0.028233 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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