Настройка WinDbg

    WinDbg — позволяет отлаживать 32/64 битные приложения пользовательского уровня, драйвера, может быть использован для анализа аварийных дампов памяти, WinDbg поддерживает автоматическую загрузку отладочных символов, имеется встроенный скриптовый язык для автоматизации процесса отладки, скачать отладчик можно тут.

    WorkSpace


    Может содержать в себе следующее:

    Информация текущей сессии

    • Все точки останова.
    • Открытые исходные файлы (если они есть).
    • Все «алиасы» пользователя.

    Настройки отладки

    • Путь к отладочным символам.
    • Путь к отлаживаемому приложению.
    • Путь к папке с исходниками.
    • Настройки kernel отладки.
    • Настройки логирования.

    Настройки графического интерфейса

    • Шрифт
    • Позиция окон относительно рабочего стола.
    • Все открытые окна.
    • Параметры окна регистров.
    • Цветовые параметры для каждого окна.
    • Установленные флаги для окон (Calls windows, Locals window, Watch Window).


    Каждый отладчик имеет свою сильную сторону, если нужна отладка 64 битных приложений или необходимо отладить драйвер, то мой выбор падает на WinDbg. При первом запуске WinDbg, получаем довольно не удобный workspace, именно это в начале отталкивает тех, кто использует OllyDbg.

    image

    Специально для «приятной» отладки сделал вменяемый workspace, с удобным расположением окон и темной цветовой схемой, приближенной к OllyDbg. Скачать можно здесь.

    image

    Список часто используемых команд


    Контроль исполнения

    • g — продолжить выполнение.
    • p — шаг через функцию.
    • t — шаг внутрь функции.
    • pa addr — шаг в адрес.
    • pc — шаг в следующий вызов.
    • pt — шаг к следующему возврату.
    • pct — шаг к следующему вызову или возврату.


    Точки останова

    • bp — установка точки останова, например bp nt!NtCreateFile.
    • bl — список точек останова.
    • bd — <число> убрать точку останову под номером.
    • bc — <число> очистить точку останова под номером.
    • ba — точка останова на доступ.
    • be — точка останова на исполнение.
    • bw — точка останова на запись.
    • sxe ld:kernel32 — точка останова на загрузке DLL модуля.


    Дамп

    • d <адрес> — дамп памяти по адресу (b-byte;w-word;d-dword).
    • dd <регистр> — дамп содержимого регистра.
    • ddp <адрес> — дамп содержимого по адресу.
    • u <адрес> — дизасcемблировать по адресу.


    Разное

    • .load <имя dll> — загружает дополнение для WinDbg.
    • !peb — дамп Process Environment Block.
    • !teb — дамп Thread Environment Block.
    • !lmi kernel32 — дамп информации по модулю.
    • k — показать стек вызовов.
    • r — показать регистры.
    • x *! — полный список модулей.
    • lm — список базовых модулей.
    • dt <имя структуры> — показать структуру если есть отладочные символы.
    • .extmatch /D /e ntdll * — показать все экспортируемые функции для библиотеки.
    • !dlls — показать загруженные модули.
    • !process 0 0 explorer.exe — получить структуру EPROCESS
    • ? 0x2D — получить представление числа в десятичной системе.
    • s -u 0x00000000 L?0xffffffff «trythis» — поиск строки в памяти.
    • eu addr «trythi1» — изменение строки по адресу.
    • .sympath .SRV*D:\symbols*http://msdl.microsoft.com/download/symbols/ — адрес загрузки необходимых отладочных символов.
    • !token — показать информацию о привелегиях.
    • .tlist — показать все запущенные процессы.


    Полезные ссылки


    Расширения

    Debugging Extensions — использует Wait Chain Traversal API для нахождения «ждущих» потоков и автоматически обнаруживает дедлоки.
    Viscope — рисует графы для кода.
    Core Analyzer — показывает анализ памяти и отображает взаимосвязь кажодого обьекта.
    pykd — позволяет использовать python в качестве языка для автоматизации отладки и анализа.
    !exploitable — автоматический анализ дампов и оценка риска.
    windbgshark — интеграция WinDbg с wireshark.
    ollymigrate — плагин позволяет «передать» отладку от одного отладчика к другому (Поддерживаемые отладчики: OllyDbg1, OllyDbg2, Immunity Debugger, WinDbg, IDA Pro)
    blwdbgue — подсветка в окне команд.
    WinDbg Highlighted — подсветка asm инструкций в окне дизассемблера и команд.

    Помощь

    Common WinDbg Commands — полный список команд WinDbg группированных тематически.
    WinDbg Hotkeys — список доступных горячих клавиш.
    WinDbg Tutorials — серия статей по отладке от Microsoft.
    WinDbg Uncovered — проект учит отладке и анализу используя WinDbg.
    Crash Dump Analysis Poster — cheat sheet по анализу дампов.
    Kate Butenko blog — блог в котором описывается работа с аварийными дампами, утечкой памяти.
    Какой отладчик вы используете для user-level приложений?

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 17
    • +1
      В дополнение к этой статье я бы рекомендовал обратить внимение на этот блог
      Там очень подробно и простым языком рассказывается как собирать и анализировать дампы памяти в различных ситуациях (крашдамп, утечка памяти, высокая загрузка процессора)
    • +1
      Пользую blwdbgue — полезная штука. Стоит ли говорить, что подсветка легко включается в Disassembly view при помощи HEX редактора?
      • 0
        если не вызывает дополнительных проблем, то конечно стоит.
        • 0
          Принцип работы плагина прост, как все гениальное. FindWindow и SetWindowHook. Правка строковой константы (имени окна) плохо не сделает. Другое дело — злой автор, но мы же никому не расскажем?
      • +1
        WinDbg. From A to Z! — неплохая презентация по основам WinDbg.
        • 0
          Что-нибудь бы удобное для DOS DPMI игр бы, а то в голые числа dosbox debugger грустно смотреть, есть проект IDADOS, но он только real mode умеет, и не работает в защищенном режиме.
          • 0
            Bochs?
            Скриншот консольного отладчика

            Скриншот GUI отладчика
            • 0
              IDADOS бы кто допилил, вот там можно развернуться.
              Мощь IDA и dosbox позволят легче переводить старые игры.
              Пытаюсь сейчас vmware + softice dos осваивать.
          • 0
            Интересно, кстати, пользовался ли кто-нибудь windbgshark…
            • 0
              Этому дебаггеру не хватает только одной функции: возможности повесить команды на свои кнопки…
              • 0
                этот недостаток можно исправить написав расширение которое будет делать простой rebind клавиш.
                • 0
                  Серьезно? А где можно почитать про то, как их писать? А то у меня и олька и студия работают на одном сочетании клавиш, даже в Иде WinDbg работает на нем же… А вот чистый WinDbg — на своем. Крайне печальные результаты у этого :-(
            • 0
              Не в обиду сказано, но единственная нормальная документация к отладчику это .hh
              • 0
                А dotnet файлы Вы не отлаживаете? О них просто ни слова не упомянули!

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.