WinDbg — позволяет отлаживать 32/64 битные приложения пользовательского уровня, драйвера, может быть использован для анализа аварийных дампов памяти, WinDbg поддерживает автоматическую загрузку отладочных символов, имеется встроенный скриптовый язык для автоматизации процесса отладки, скачать отладчик можно тут.
WorkSpace
Может содержать в себе следующее:
Информация текущей сессии
- Все точки останова.
- Открытые исходные файлы (если они есть).
- Все «алиасы» пользователя.
Настройки отладки
- Путь к отладочным символам.
- Путь к отлаживаемому приложению.
- Путь к папке с исходниками.
- Настройки kernel отладки.
- Настройки логирования.
Настройки графического интерфейса
- Шрифт
- Позиция окон относительно рабочего стола.
- Все открытые окна.
- Параметры окна регистров.
- Цветовые параметры для каждого окна.
- Установленные флаги для окон (Calls windows, Locals window, Watch Window).
Каждый отладчик имеет свою сильную сторону, если нужна отладка 64 битных приложений или необходимо отладить драйвер, то мой выбор падает на WinDbg. При первом запуске WinDbg, получаем довольно не удобный workspace, именно это в начале отталкивает тех, кто использует OllyDbg.
Специально для «приятной» отладки сделал вменяемый workspace, с удобным расположением окон и темной цветовой схемой, приближенной к OllyDbg. Скачать можно здесь.
Список часто используемых команд
Контроль исполнения
- 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 по анализу дампов.
Автор: Dinisoid