Как защитить исходный код приложения Delphi?

Как я могу защитить мое приложение Delphi от декомпиляции? Я знаю, что есть какое-то программное обеспечение, например, тезида, которое, я думаю, сделает это, но затем защищенный exe-файл активирует антивирус.

8 ответов

Решение

Это зависит от вашей цели.
Если это действительно просто защита источника, это уже сделано! При условии, что вы не включаете информацию об отладке и символах, а также добавляете несколько тяжелых вставок, удачи в восстановлении полезного кода Pascal из дизассемблирования исполняемого файла.
Если это мешает людям увидеть, как оно функционирует, и взломать его, то вы должны включить некоторую защиту от дизассемблирования. Это сложнее, но выполнимо. Часто делается как залог защиты от пиратства.

Все, что может прочитать процессор, также может быть "декомпилировано", поэтому нет предельной безопасности. Но обычно довольно сложно декомпилировать скомпилированный код Delphi, и почти все идентификаторы и все комментарии, конечно, исчезают.

Опубликованные части классов, информация о файле DFM и константы (включая строковые константы) представлены в файле exe в легко читаемом виде. Вы можете уменьшить эту проблему, зашифровав свои строки и не используя опубликованные и не используя файлы DFM. Однако вся информация по-прежнему будет присутствовать в вашем exe-файле, поэтому часто это просто тяжелая работа, которая не дает реальной безопасности.

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

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

Если вы используете Delphi Prism, то один из многих инструментов декомпиляции.Net сделает тривиальной задачей получение доступа к (форме) вашего исходного кода.

Единственное решение - использовать один из многочисленных инструментов.Net запутывания. К сожалению, я не могу дать рекомендацию, поскольку мне никогда не приходилось ее использовать, но Google должен показать вам путь...

Если вы компилируете в нативный Win32, то любая форма запутывания или даже анти-отладочный механизм - пустая трата времени. Есть люди, которые могут читать ассемблер так же легко, как вы или я - на нашем родном языке. Эти вещи только несколько замедляют процесс обратного инжиниринга (и только при этом).

Несколько лет назад мне пришлось переписать приложение, от которого отказался его разработчик.

Я могу восстановить все из DFM-ов, форм (с компонентами), строк запросов, хранящихся в TxyzQueries, растровых изображений из списков изображений, некоторых строк с декомпилятором, но не удается восстановить логику приложения, только имена методов с источником asm внутри.

Существуют загрузчики (например, UPX http://upx.sourceforge.net/), которые извлекают зашифрованное сжатое приложение в память и загружают его при запуске, но AV часто помечает такие приложения как зараженные.:(

Вы можете написать небольшое приложение, вот несколько советов:

www.codeproject.com/KB/cs/LoadExeIntoAssembly.aspx (.net) www.joachim-bauch.de/tutorials/load_dll_memory.html (для dll-ов)

В общем, вы не можете реально защитить свой код от декомпиляции. Однако с помощью такого инструмента, как Code Virtualizer, вы можете защитить ключевые области, такие как установочный код декодера. Виртуализированный код намного медленнее и имеет определенные ограничения, но он добавляет подходящее препятствие для случайных проблем хакеров. Лучше всего это сделать в сценарии сборки, чтобы он последовательно добавлялся для выпуска - таким образом вы каждый раз будете обеспечивать надлежащую защиту.

Я рекомендую отделить установочный код от защиты BTW, чтобы вы могли переключать защиту в любое время, не беспокоясь о существующих пользователях.

Наконец, формы Delphi легко доступны, но их, как правило, бесполезно менять.

Только приложения, защищенные украденными ключами Themida, должны запускать антивирус (например, Win32.Black, обнаруженный Kaspersky).

Простой способ защитить исполняемый файл - запустить его как веб-приложение на интернет-сервере. С помощью Delphi и библиотеки Ajax (например, ExtJS over extpascal или IntraWeb/VCL for Web) можно преобразовывать приложения для настольных компьютеров и клиент-серверных приложений в веб-приложения. (Примеры) - это также делает приложение доступным для других операционных систем и мобильных устройств.

Полная разборка никогда не достигается, я думаю, для родной платформы Win. Если вы не включаете символы отладки и т. Д. Во время компиляции или скрываете их с помощью какого-либо инструмента, очень маловероятно, что ваш exe-файл может быть декодирован. Понятия не имею..NET вещь.

Другие вопросы по тегам