Я пытаюсь выполнить базовую c отладку с помощью WinDbg, но я застрял в начале, так как моя среда не может найти символы для ntdll
, и они необходимы для команды !address
:
0:000> !address
No symbols for ntdll. Cannot continue.
Странная вещь в том, что при использовании lm
я вижу, что отладчик знает о файле символов! Так почему он не может использовать этот файл? Этот файл был импортирован с использованием утилиты symchk
, поэтому он должен быть правильным символьным файлом.
Вот вывод окна command
:
0:000> .sympath
Symbol search path is: srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
0:000> lm
start end module name
007b0000 007db000 notepad (no symbols)
71b50000 71d5f000 COMCTL32 (deferred)
747b0000 747ba000 CRYPTBASE (deferred)
747c0000 747e0000 SspiCli (deferred)
747e0000 748ff000 ucrtbase (deferred)
749c0000 74a39000 advapi32 (deferred)
74a40000 74afb000 RPCRT4 (deferred)
74db0000 74fac000 KERNELBASE (pdb symbols) c:\symbols\wkernelbase.pdb\8BC9719D7B1E26272FB1CB98D403792C1\wkernelbase.pdb
75120000 7517f000 bcryptPrimitives (deferred)
75200000 75276000 sechost (deferred)
75330000 75347000 win32u (deferred)
757a0000 7585f000 msvcrt (deferred)
76430000 7658a000 gdi32full (deferred)
76590000 76727000 USER32 (deferred)
76730000 767ac000 msvcp_win (deferred)
768c0000 769a0000 KERNEL32 (deferred)
76aa0000 76b24000 shcore (deferred)
76c50000 76ec6000 combase (deferred)
76fb0000 76fd1000 GDI32 (deferred)
76ff0000 7718a000 ntdll (pdb symbols) c:\symbols\wntdll.pdb\D85FCE08D56038E2C69B69F29E11B5EE1\wntdll.pdb
Вы можете видеть, что расположение файл символов идентифицирован (lm
вывод команды) Но он утверждает, что символ не найден.
Что еще интереснее, WinDbg может показать мне символы функций внутри ntdll
двоичного файла:
0:000> x ntdll!*Virtual*
76ff44c0 ntdll!RtlpQueryReadVirtualMemory (void)
76f9bcc7 ntdll!RtlpSecMemFreeVirtualMemory (void)
76fb2df0 ntdll!NtLockVirtualMemory (<no parameter info>)
76fb1fa0 ntdll!ZwQueryVirtualMemory (<no parameter info>)
76fb2bd0 ntdll!NtFlushVirtualMemory (<no parameter info>)
76fb36f0 ntdll!ZwSetInformationVirtualMemory (<no parameter info>)
...
Но, тем не менее, всякий раз, когда я пытаюсь использовать команду !address
, у меня появляется такая же ошибка.