DbgException: File: dia\symexport.cpp Line: 27 Not Implemented

Nov 13, 2015 at 6:23 AM
Добрый день
установил pykd, конфигурация следующая:
win7 (32-bit)
windbg 6.3.9600.17200
pykd 0.3.0.33

в windbg настроил символы
srvq:\Symbolshttp://msdl.microsoft.com/download/symbols
.reload
dt ntdll!_PEB работает

!py
ntdll = module('ntdll')
ntdll.enumSymbols('Zw*')
Traceback (most recent call last):
File "<console>", line 1, in <module>
DbgException: File: dia\symexport.cpp Line: 27 Not Implemented
pykd.dbgCommand(r'x reload') отрабатывает
peb = typedVar("ntdll!_PEB")
Traceback (most recent call last):
File "<console>", line 1, in <module>
SymbolException: _PEB symbol is not found
В чем может быть проблема ?
Coordinator
Nov 13, 2015 at 10:22 AM
Два варината:
1) Символов нет.
Проверить просто:
выполнить команду lmvm ntdll
или в питоне:
ntdll = module('ntdll')
print ntdll

2) pykd установлен неправильно и не может найти msdia.
Рекомендуется установить pykd командой pip install pykd

Кстати, в любом случае тут есть баг:
Если нет символов, pykd берет список экспортов. При этом он имеет все возможности их проэнумерировать или поискать по маске.
Так что вот это исключение "незаконно":
DbgException: File: dia\symexport.cpp Line: 27 Not Implemented
Nov 13, 2015 at 1:00 PM
ставил через pip и символы есть

0:000> lmvm ntdll
start end module name
77210000 7734c000 ntdll (pdb symbols) q:\symbols\ntdll.pdb\CD4062A231154A17A18DAE7D1A0FBACC2\ntdll.pdb
Loaded symbol image file: C:\Windows\SYSTEM32\ntdll.dll
Image path: ntdll.dll
Image name: ntdll.dll
Timestamp:        Thu Aug 29 05:51:24 2013 (521EA91C)
CheckSum:         00141148
ImageSize:        0013C000
File version:     6.1.7601.18247
Product version:  6.1.7601.18247
File flags:       0 (Mask 3F)
File OS:          40004 NT Win32
File type:        2.0 Dll
File date:        00000000.00000000
Translations:     0409.04b0
CompanyName:      Microsoft Corporation
ProductName:      Microsoft® Windows® Operating System
InternalName:     ntdll.dll
OriginalFilename: ntdll.dll
ProductVersion:   6.1.7601.18247
FileVersion:      6.1.7601.18247 (win7sp1_gdr.130828-1532)
FileDescription:  NT Layer DLL
LegalCopyright:   © Microsoft Corporation. All rights reserved.

print ntdll
Module: ntdll
Start: 77210000 End: 7734c000 Size: 13c000
Image: ntdll.dll
Symbols: export symbols
Timestamp: 521ea91c
Check Sum: 141148
попробую поставить более ранню версию
Nov 13, 2015 at 1:04 PM
более старую версию через пип можно поставить иди только руками ?
описание ручной установки есть ?
Nov 13, 2015 at 1:19 PM
перезапустил отладчик и ошибки стали другими
print ntdll
Module: ntdll
Start: 77210000 End: 7734c000 Size: 13c000
Image: ntdll.dll
Symbols: q:\Symbols\ntdll.pdb\CD4062A231154A17A18DAE7D1A0FBACC2\ntdll.pdb
Timestamp: 521ea91c
Check Sum: 141148

ntdll.enumSymbols('Zw*')
[]

peb = typedVar("ntdll!_PEB")
Traceback (most recent call last):
File "<console>", line 1, in <module>
DbgException: pyDia: Call IDiaSymbol::get_locationType failed
Symbol name: _PEB, tag= 11
Return value is 0x1:
Incorrect function.
вопрос про установку более старой версии остается актуальным
Nov 13, 2015 at 1:27 PM
в этой строчке я сам ошибся
peb = typedVar("ntdll!_PEB")
надо
peb = typedVar("ntdll!_PEB", getCurrentProcess())
тогда все работает

осталось разобраться, почему тут пусто
ntdll.enumSymbols('Zw*')
[]
Coordinator
Nov 16, 2015 at 5:55 AM
Проверил на двух установках:
pykd 0.3.0.33 x64 - не воспроизводится
pykd 0.3.0.33 x86 - воспроизводится, причем только с маской, без маски символы нормально получаются
Coordinator
Nov 16, 2015 at 5:27 PM
Исправлено в 0.3.0.34