Как защитить исходный код приложения Delphi? - PullRequest
4 голосов
/ 18 декабря 2009

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

Ответы [ 8 ]

11 голосов
/ 18 декабря 2009

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

3 голосов
/ 18 декабря 2009

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

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

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

3 голосов
/ 18 декабря 2009

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

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

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

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

1 голос
/ 18 декабря 2009

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

Я могу восстановить все из 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-s)

0 голосов
/ 20 декабря 2009

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

0 голосов
/ 18 декабря 2009

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

0 голосов
/ 18 декабря 2009

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

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

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

0 голосов
/ 18 декабря 2009

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

...