Вопрос

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

Это было полезно?

Решение

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

Другие советы

Все, что может прочитать ЦП, также может быть «декомпилировано», поэтому полной безопасности не существует.Но обычно декомпилировать скомпилированный код 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-ов)

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top