Я создал набор мультиплатформенных компонентов C ++ для загрузки и управления различными типами совместно используемых библиотек с цифровой подписью.Это обрабатывает все аспекты загрузки и инициализации, включая отображение их в вызывающий процесс, применение исправлений ветвлений, связывание любых импортов и вызов точки входа инициализации.Компоненты не могут использовать LoadLibrary (), поскольку это зависит от платформы, и не все общие библиотеки имеют формат PE.
Одной из немногих оставшихся проблем, с которыми я сталкиваюсь, является обеспечение соответствующей поддержки отладчика для целевых платформ и сред разработки.В средах MS Windows это включает в себя отладчики для загрузки символьной информации, сгенерированной компилятором и компоновщиком (или преобразованной из другого источника).Поскольку загрузка и инициализация библиотек происходит за пределами ядра, отладчик никогда не получает события LOAD_DLL_DEBUG_EVENT и UNLOAD_DLL_DEBUG_EVENT.Это приводит к следующим вопросам:
- Существует ли API или системный вызов, позволяющий отправлять такие события, как LOAD_DLL_DEBUG_EVENT, непосредственно в отладчик?
- Есть ли документированный способ связинепосредственно с менеджерами отладки программы или сеанса или со службой диспетчера отладки машины?
- Имеется ли доступный API или системный вызов для уведомления ядра и впоследствии отладчика о том, что DLL была загружена?Поскольку PE-файлы являются одним из основных поддерживаемых форматов, это наиболее желательный вариант.Он также имеет потенциальное преимущество, позволяя библиотеке появляться в списке модулей процесса.
- Применяется ли WinDBG SDK к отладке в Windows в целом и могут ли расширения WinDBG использоваться для указания отладчику загружатьсяинформация о символе?
Я активно искал информацию по вышеупомянутым темам, но не смог.Я нашел немного информации о структурах данных, используемых отладчиком Windows, но ничего не относилось к моей конкретной ситуации.
Я открыт для вызовов API / системных вызовов и подходов, которые задокументированы или недокументированы, а также тех, которые требуют повышенных привилегийфункционировать.