WinDBG无法为PyKd找到python解释器

时间:2017-04-28 20:19:28

标签: python windows security windbg pykd

我正在尝试使用PyKd将python扩展加载到WinDBG。

.load pykd成功。

当我正在运行!py时,我明白了:

  

找不到python解释器

我尝试过的事情:

  • 不同版本的python

  • 使用PyKd的dll和pyd文件

  • .reload / f

  • 不同的符号路径

  • 调试WinDBG和PyKd,也是通过源代码,没有成功

是的,使用Python路径正确设置了我的环境。

无法在网络上找到任何关于该问题的提及。 它总是在我拥有的不同系统和配置上顺利运行,但在我的新系统中,我得到了这个奇怪的消息。

详细信息:

Windows 10 Home,版本1607,x64

WinDBG x86,build 10.0.15063.0

Python 2.7.13,但我也尝试了很多其他版本。

符号路径:cache * c:\ symbols; srv * https://msdl.microsoft.com/download/symbols

戴尔XPS 15

5 个答案:

答案 0 :(得分:0)

人 我也安装了最新的pykd,并出现了同样的问题。

然后我发现我没有在这个虚拟机上安装python 2.7。

安装python 2.7会有效。 你已经安装了它。我建议你检查python安装路径是否在“path”环境变量

答案 1 :(得分:0)

  

WinDBG x86,build 10.0.15063.0   Python 2.7.13,但我也尝试了很多其他版本。

你需要python 2.7.13 x86

安装完成后,您可以使用命令pykd.info检查它对pykd的可见性 - 它应该显示python的路径。对于python 2.7,它通常是C:\ windows \ system32 \ python27.dll

答案 2 :(得分:0)

如果您没有以下注册路径:HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\xx\PythonPath,则应安装启用了Path的python-2.7(x64)。enter image description here

答案 3 :(得分:0)

在同一台计算机上安装多个python时出现此问题。可以通过手动创建所需的注册表项来解决此问题,因为我不想重新安装任何python版本,也不想更改全局path / pythonpath变量。

请注意,对于windbgx64,您将需要x64 python;对于windbgx86,将需要x86 python

假设您要使用安装在3.7x86上的python c:\python37_x86和安装在3.6x64上的python c:\python36_x64

  1. 在此处创建通向HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python\PythonCore\3.7-32\InstallPath的密钥,并将(Default)设置为c:\python37_x86\(尾随反斜杠很重要!)

  2. 类似地,在此处创建通向HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.6\InstallPath的键,并将(Default)设置为c:\python36_x64\

  3. 不幸的是,PYTHONPATH环境变量仍在使用,并且必须与引用的python版本匹配(否则,您将遇到Fatal Python error: unable to load the file system codec注意:仅当其中一个版本使用时,这可能很重要是2.x,其他是3.x。请尝试使其在没有此步骤的情况下正常工作

为避免上一个问题,我创建了.bat文件来修改环境并在正确的环境下启动windbg。

例如,启动32位windbg:

set PYTHONPATH=C:\python37_x86\Lib;[...Rest of the PYTHONPATH for this python version...]
start windbgx -debugArch x86 -c ".load c:\dev\tools\pykd\x86\pykd.dll"

答案 4 :(得分:0)

也有同样的问题,最后看你用的是哪个windbg版本,你安装的是什么python版本;

  • 如果是windbg x86,则需要安装python 32位。
  • 如果是windbg x64,则需要安装python 64位。

我不必向 PATH 添加任何特定版本,我的系统中有 3 个版本的 python; python2.7x86、python2.7x64和python3x64,如果我在windbgx86中运行!pykd.info,它识别x86 pythons,如果我在sindbgx64中运行它,它识别x64 python。

如果你的 !pykd.info 没有列出任何 python,你可能把它们搞混了(你在运行 windbgx64 时只有 pythonx86,或者在运行 windbgx86 时你只有 pythonx64)。