Not a kernel guy

… in the Windows kernel team

Saturday, December 29, 2007

Как посмотреть содержимое реестра из-под отладчика.

Сижу дома простуженный. Ни о чём писать не хочется, поэтому буду краток.

Команда !dreg в WinDbg позволяет просматривать содержимое реестра прямо в процессе отладки. Это особенно удобно в двух случаях:

  1. При удалённой отладке, когда сессия отладчика – это единственный вид доступа к удалённой машине. Такое встречается сплошь и рядом, например, если удалённая машина находится в другой сети или домене;
  2. В случае, когда отладчик пользовательского режима контролируется ядерным отладчиком. Это тоже, в общем-то, вариант удалённой отладки, только в этом случае до отлаживаемой машины достучаться кроме как через отладчик вообще никак нельзя.

К сожалению !dreg не работает в ядерном отладчике, вернее работает, но показывает реестр той машины где запущен kd.exe, а не целевой, так бы этого не хотелось. Иначе бы счастье было бы полным.

Итак, начнем:

0:000> .load ntsdexts

!dreg может показывать все подключи данного ключа:

0:000> !dreg hklm\software\microsoft\windows search
Subkey: Applications
Subkey: CatalogNames
Subkey: ContentIndexCommon
Subkey: CrawlScopeManager
Subkey: Databases
Subkey: DataDirectory
Subkey: Gather
Subkey: Gathering Manager
Subkey: Indexer
Subkey: InstallDirectory
Subkey: PerformanceCounters
Subkey: ProtocolHandlers
Subkey: SearchService
Subkey: UsnNotifier

Также можно показать все значения данного ключа:

0:000> !dreg hklm\software\microsoft\windows search\protocolhandlers!*
Value: "Mapi" - REG_SZ: "Search.Mapi2Handler.1"
------------------------------------------------------------------------
Value: "File" - REG_SZ: "Search.FileHandler.1"
------------------------------------------------------------------------
Value: "Csc" - REG_SZ: "Search.CscHandler.1"
------------------------------------------------------------------------
Value: "OneIndex" - REG_SZ: "Search.OneIndexHandler.1"
------------------------------------------------------------------------

А можно посмотреть конкретное значение конкретного ключа:

0:000> !dreg hklm\software\microsoft\windows search\protocolhandlers!Mapi
REG_SZ: "Search.Mapi2Handler.1"
Posted at 10:24 pm •

RSS feed | Trackback URI

5 Comments »

[...] from blog.not-a-kernel-guy.com. Filed under: Отладка, Маленькие [...]

 
Comment by Volodymyr Shcherbyna — December 31, 2007 @ 1:50 am

Удобно.

WinDbg мощный инструмент. Единственное что меня в нем раздражает - отладка без исходного кода программы. Это просто кошмар, т.к. когда начинаешь прокручивать код вниз или вверх, то кажется что IP (instruction pointer, а точнее, подсветка текущей команды) прыгает как сумасшедший. Более того, опция “показывать код до точки останова” показывает максимум 20-30 строчек сверху. Далее крутишь - упираешься в “No prior disassembly possible”. Нет удобного отображения стека. Нет, не стека вызовов функции, а стека процесса…

Как альтенративу, привожу OllyDbg - сочетвает в себе свойства WinDbg для отладки в user mode, и интеллектуальность IDA, т.к. OllyDbg позволяет распознавать параметры для функции, удобно отображать стек, и много прочих “удобностей”. + OllyDbg бесплатный.

Интересно, почему MS сделала WinDbg таким примитивным в плане реверсинга?

Comment by Not a kernel guy — January 2, 2008 @ 9:43 am

GUI в WinDbg это “Ужас, ужас!” (с). У меня есть две гипотезы на этот счёт, но обе - полнейшее IMHO:

- Либо GUI там делается по остаточному принципу, типа “нам и консольных kd/ntsd/cdb хватает, а GUI нам ни к чему”;
- Либо не хотят отбирать хлеб у отладчика в Visual Studio.

В общем не понятно. Можоно задать и другой вопрос - почему отладчик в Visual Studio не позволяет использовать расширения от WinDbg и не даёт пользоваться командной строкой? Золотой отладчик был бы.

 
 
Comment by Volodymyr Shcherbyna — January 3, 2008 @ 1:21 am

Я как-то покопал в направлении написать плагин под WinDbg, который будет заменять полностью disassembly окно более интеллектуальным окном - аналогом OllyDbg. Но вероятно я плохо копал, т.к. не нашел возможности сделать это малой кровью …

Comment by Not a kernel guy — January 3, 2008 @ 7:54 am

Сомневаюсь, что это возможно. Там всё на командную строку рассчитано, как мне кажется.

 
 

Your Comment (smaller | larger)

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress