Точки останова DLL, для которых не выбрана опция «символы удаленной отладки», почему и какие-либо риски безопасности с ними? - PullRequest
5 голосов
/ 25 января 2012

У меня была большая проблема с тем, что точки останова не попадали в DLL-библиотеку Delphi 6 DirectShow. Я бы загрузил DLL (AX) в IDE и запустил ее с Graph Edit в качестве программы Host, и ни одна из точек останова не сработала бы. Я попытался переместить FastMM4 DLL в каталог проекта, полностью удалил FastMM4, включил и выключил DCU отладки, очистил каталоги проекта, отменил регистрацию и перерегистрацию DLL - все, что я мог придумать. Ничего не получалось. Каждый раз, когда я запускал хост-программу, я видел загрузку моей DLL с сообщением «Нет данных отладки» в средстве просмотра событий. Затем в отчаянном поиске в Google я нашел сообщение для C ++ Builder, в котором рекомендовано использовать опцию компоновщика «Удаленные символы отладки»:

Проект -> Параметры -> Компоновщик (вкладка) -> Параметры EXE и DLL (групповое поле) -> «Включить символы удаленной отладки» (проверено)

Внезапно мои контрольные точки начали бить. Вот мои вопросы:

1) Почему это работает? Это из-за опции или из-за того, что эта опция запускала какую-то другую операцию компилятора / компоновщика, которая исправляла вещи? Я хотел бы знать, чтобы я мог надежно исправить эту проблему в будущем, когда это произойдет снова.

2) Могут ли враждебные программисты использовать символы удаленной отладки для глубокого отслеживания моей программы? Другими словами, представляют ли они угрозу безопасности, если остаются без дела?

1 Ответ

5 голосов
/ 25 января 2012

1) Это было из-за варианта. Без информации об отладочных символах ваша IDE не знает, где устанавливать точки останова. Отладочные DCU не имеют к этому никакого отношения - эта опция связывает другой набор VCL DCU, которые содержат отладочную информацию, так что вы можете устанавливать точки останова. Полезный совет: в зависимости от версии Delphi эти DCU фактически не всегда синхронизируются с их символами отладки.

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

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

...