Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Скрытие названий классов в релизных сборках Delphi

Delphi , Компоненты и Классы , RTTI

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

Проблема

При компиляции релизной версии проекта на Delphi в исполняемый файл .exe попадают названия классов, созданных разработчиком. Эти названия, такие как TPolygon или TRectangle, могут быть прочитаны как текстовые данные внутри исполняемого файла с помощью бинарных редакторов. Это может представлять угрозу для конфиденциальности исходного кода.

Попытки решения

Разработчики пытались решить проблему, отключая RTTI (Run-Time Type Information) в файле dpr:

{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

Однако, несмотря на эти попытки, проблема не была решена.

Альтернативные подходы

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

Подтвержденное решение

Удаление названий классов из исполняемого файла приведет к тому, что приложение перестанет работать, так как .dfm файлы, компилируемые в приложение, содержат эти названия. Система потоковой передачи данных во время выполнения (runtime streaming framework) должна иметь возможность искать эти классы в регистре классов, и без названий формы и их свойства не смогут быть потоковыми.

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

Рекомендуемые методы обфускации

Один из методов обфускации заключается в использовании проприетарных директив и препроцессора для изменения названий классов на криптические. Это можно сделать, заключив символические названия, которые должны быть обфускированы, между блоками {#ENCRYPT+} ... {#ENCRYPT-} для упрощения процесса разбора. В следующем этапе все такие блоки во всех исходных файлах разбираются, и символические названия заменяются на шифрованные. Результат сохраняется в промежуточные файлы, из которых с помощью командной строки компилятора создается исполняемый файл.

Пример кода

{#ENCRYPT+}TMyCustomForm{#ENCRYPT-} = class(TForm)
...
end;

Используя подобные методы, вы можете скрыть названия классов в вашем приложении, что повысит уровень его защиты от неавторизованного анализа и копирования.

Заключение

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

Создано по материалам из источника по ссылке.

В контексте рассматривается проблема защиты исходного кода приложений, созданных на Delphi, путём скрытия названий классов в релизных сборках для повышения уровня безопасности.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: RTTI ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 20:50:14/0.003262996673584/0