Основные принципы функционирования

Для нормального функционирования отладчика уровня ядра требуется внесение изменений в ядро операционной системы. Довольно часто это решается при помощи внедрения в ядро дополнительных модулей. Фактически отладчик уровня ядра перехватывает глобально системные функции, которые отвечают за:

Так же отладчик ядра контролирует обращение к различным таблицам ядра. Ещё один важный момент это управление состоянием процессора, так как процессоры поддерживают пошаговую трассировку и точки останова на аппаратном уровне.

Наиболее известные представители данного класса ПО

  • softICE. Проприетарный отладчик разработанный фирмой Numega и распространяемый с продуктом DriverStudio. Были сделаны неофициальные сборки softICE различными хакерскими группами. softICE обеспечивал отладку кода на различных версиях Windows и был благодаря своим широким возможностям неофициальным стандартом в кругах, связанных с обратной инженерией ПО. Однако впоследствии оказался заброшен. Сейчас он уже используется все меньше и меньше, так как не совместим с Windows Vista и 7[2] В то же время softICE стал во многом фундаментом идеологии использования таких инструментов. Работает только на Windows платформе
  • WinDbg, KD, LiveKD. WinDbg официальный бесплатный отладчик c закрытыми исходными текстами, входящий в состав Debugging Tools for Windows от Microsoft. Он ориентирован на GUI интерфейс. Наборы символов для него позволяют исследовать ядро Windows. KD ещё один отладчик от Microsoft, который предназначен для исследования ядра Windows. LiveKD это бесплатный отладчик ядра от Sysinternals, который позволяет отлаживать систему без использования второго компьютера, что требуют два предыдущих отладчика. Более подробно это описано в книге Марка Руссиновича и Дэвида Соломона Внутреннее устройство Windows.
  • Syser. Наследник softICE, разработанный китайскими программистами. Поддерживает интерфейс в стиле SoftICE. Совместим с новыми операционными системами Windows, поддерживает многопроцессорные системы. Платный продукт с закрытым исходным текстом.
  • KDB. Отладчик уровня ядра для *nix от фирмы SGI. Активируется при помощи наложения патча на ядро. OpenSource проект.
  • Linice. Ещё один OpenSource отладчик ядра для *nix. Существуют некоторые проблемы совместимости с новыми ядрами Linux

Очень важно что отладчик должен быть совместим с ядром операционной системы, где используется, так как отладчик модифицирует основные структуры ядра, которые имеют свойство меняться от версии к версии. Применение некорректной версии отладчика может привести к непредсказуемому поведению системы.

Иной довольно серьёзной проблемой является конфликт между драйверами уровня ядра других приложений и отладчика. Примером может служить невозможность работы программы Daemon Tools при активном отладчике ядра. Некоторые программы отказываются функционировать, если обнаружат наличие отладчика в системе или попытки их отладки.

ACADEMIA. Михаил Угрюмов. Основные принципы функционирования мозга. 1 лекция. Канал Культура


Читать еще…

Понравилась статья? Поделиться с друзьями: