【发布时间】:2014-04-19 11:02:25
【问题描述】:
我找不到准确的答案,所以我决定问一下。
我一直在阅读“Windows 内部调试”,在示例中它告诉我在 kernel32!CreateProcessW 上设置断点。
但在此之前,它使用 .symfix 调试器命令将调试器符号搜索路径设置为指向 Microsoft 在线符号服务器。当我尝试设置断点时,我收到一个错误,它无法解析函数(或类似的东西)。看起来像这样。
0:000> bp kernel32!CreateProcessW
Couldn't resolve error at 'kernel32!CreateProcessW'
可能是因为下面的列表中没有“kernel32!CreateProcessW”。
0:000> x kernel32!CreateProcess*
76b90cb9 KERNEL32!CreateProcessWithTokenW (void)
76b90d84 KERNEL32!CreateProcessAsUserW (void)
76b90d84 KERNEL32!CreateProcessWithLogonW (void)
76b4e225 KERNEL32!CreateProcessWStub = <no type information>
76b72e04 KERNEL32!CreateProcessInternalAStub = <no type information>
76b72e15 KERNEL32!CreateProcessInternalWStub = <no type information>
76b72de2 KERNEL32!CreateProcessAStub = <no type information>
76b72df3 KERNEL32!CreateProcessAsUserWStub = <no type information>
如果我将断点设置为 kernel32!CreateProcessWStub 一切正常,但我想知道为什么我找不到并将断点设置为 kernel32!CreateProcessW。 p>
这本书可能侧重于使用 Windows 7 的读者。我使用的是 Windows 8.1,并且认为 kernel32!CreateProcessW 可能已被弃用...
我对这个领域非常陌生,如果这是一个完全愚蠢的问题,我深表歉意。不过还是感谢您阅读。
【问题讨论】:
-
我也注意到了这一点,并认为这是由于 API 的变化。你会在
KERNELBASE.DLL中找到CreateProcessW。虽然使用依赖仍然会在KERNEL32.DLL中显示CreateProcessW,所以我对如何正确解释事物也有些困惑。