gpt4 book ai didi

windows - 在 WOW64 中创建 Trapping HANDLE

转载 作者:可可西里 更新时间:2023-11-01 13:27:10 32 4
gpt4 key购买 nike

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

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

Handle f0
Type File
Attributes 0
GrantedAccess 0x120189:
ReadControl,Synch
Read/List,ReadEA,ReadAttr,WriteAttr
HandleCount 2
PointerCount 4
No Object Specific Information available

我想知道这个对应的是什么设备。但是 Sysinternals Process Explorer 不在其进程句柄列表中包含此句柄。

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

作为引用,这里是在 Windows x64 上跟踪 NtCreateFile(akak ZwCreateFile)的命令:

bp ntdll!NtCreateFile "!ustr poi(@r8+10) ; r $t0 = @rcx ; gu ; dd @$t0 L1 ; gc"

Thanks to Skywing for pointing me in the right direction on that .

File 类型的 HANDLE 还能从哪里来?难道其他 HANDLE 创建函数不会委托(delegate)给 NtCreateFile 进行实际的系统调用(我猜不是)?

最佳答案

看起来你只能在进行内核调试时才能获得文件句柄信息。所以有 3 个选项。

  1. 进行本地机器内核调试,这应该不是问题,因为您只需要获取文件句柄信息并且该信息将保持静态。请参阅以下内容:http://msdn.microsoft.com/en-us/library/windows/hardware/ff553382(v=vs.85).aspx
  2. 对虚拟机进行远程内核调试。 “更安全”的意思是您不会炸毁您的机器。
  3. 蓝屏你的盒子并以这种方式查看转储。对你的盒子做同样不是一件好事,但我过去做过类似的事情,当时我需要能够在机器状态不改变的情况下对机器进行全面分析。

关于windows - 在 WOW64 中创建 Trapping HANDLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9831080/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com