首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WOW64中捕获句柄创建

在WOW64中捕获句柄创建
EN

Stack Overflow用户
提问于 2012-03-22 21:49:09
回答 2查看 691关注 0票数 7

我正在尝试解决第三方二进制文件(无源)缓慢启动的问题。它是一个运行在64位Windows 7上的32位应用程序.

我使用了一个调试器,当它在启动时挂起0%的CPU使用率时,它会进入应用程序,并且它似乎在等待ReadFile返回。ReadFile的第一个参数是句柄值000000f0。windbg的!handle命令告诉我:

处理f0类型文件属性0 GrantedAccess 0x120189: ReadControl,同步读取/列表,ReadEA,ReadAttr,WriteAttr HandleCount 2 PointerCount 4

我想知道这是什么装置。但是Sysinternals并没有将这个句柄包含在其进程句柄列表中。

我使用windbg跟踪对ntdll!NtCreateFile的所有调用,并打印路径和返回句柄:这个句柄不在其中。不会触发kernel32!CreateNamedPipeWkernel32!CallNamedPipeWkernel32!WaitNamedPipeW上的断点(这很奇怪,因为Process显示了路径\Device\NamedPipe\的另一个句柄)。

作为参考,下面是在Windowsx64上跟踪NtCreateFile (akak ZwCreateFile)的命令:

代码语言:javascript
复制
bp ntdll!NtCreateFile "!ustr poi(@r8+10) ; r $t0 = @rcx ; gu ; dd @$t0 L1 ; gc"

感谢天翼为我指明了正确的方向

File类型的句柄还能从哪里来?其他句柄创建函数不是为实际的syscall委托给NtCreateFile的吗(我想不是吧)?

EN

回答 2

Stack Overflow用户

发布于 2012-03-22 22:54:44

看起来,只有在执行内核调试时才能获得文件句柄信息。所以有三种选择。

  1. 做一个本地的机器内核调试,这不应该是一个问题,因为你只需要获得文件处理信息,这将保持静态。请参见以下内容:http://msdn.microsoft.com/en-us/library/windows/hardware/ff553382(v=vs.85).aspx
  2. 对VM机器进行远程内核调试。“更安全”在某种意义上你不能炸毁你的机器。
  3. 把你的盒子拿去看看那边的垃圾堆。对你的盒子也不太好,但是我过去也做过类似的事情,我需要对机器做一个完整的分析,而不改变机器的状态。
票数 1
EN

Stack Overflow用户

发布于 2012-03-23 00:14:50

句柄可以继承,也可以由DuplicateHandle()创建。您可以尝试在句柄上调用GetFileInformationByHandleEx并查询FileNameInfo。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9831080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档