Site icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Delphi обеспечивает лучшую защиту исходного кода предприятия, чем WPF и Electron

wp1 ip security gauge

Как работают Delphi, WPF .NET Framework и Electron по сравнению друг с другом и как лучше всего провести объективное сравнение? Embarcadero заказал технический документ для исследования различий между Delphi, WPF .NET Framework и Electron для создания настольных приложений Windows. Тестовое приложение — клон калькулятора Windows 10 — было воссоздано в каждой структуре тремя волонтерами Delphi Most Valuable Professionals (MVP), одним экспертом-фрилансером WPF-разработчиком и одним экспертом-фрилансером Electron. В этом сообщении блога мы собираемся изучить метрику IP-безопасности, которая является частью сравнения функциональности, используемого в техническом документе.

Что такое IP-безопасность в развертываемом приложении?

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

Защита интеллектуальной собственности принципиально важна для долгосрочных бизнес-планов. Если продукт решает новую проблему или использует новую технику, разработчики должны понимать, как их выбор фреймворка влияет на уязвимость IP. Программы Delphi компилируются в машинный код платформы, а не в промежуточный код. Декомпиляция с использованием бесплатных инструментов может восстановить форму графического интерфейса пользователя, но дает только ассемблерный код для логики. IP-безопасность в WPF более хрупкая. Декомпиляция исполняемых файлов и файлов библиотеки с помощью бесплатных инструментов приводит к узнаваемой бизнес-логике C # и почти узнаваемому тексту XAML. Наконец, у Electron есть самая серьезная проблема — он по умолчанию выдает исходный код при каждой установке.Код приложения Electron можно восстановить с помощью простого текстового редактора — в зависимости от структуры фреймворка — но его можно несколько запутать с помощью сторонних инструментов. Доступные инструменты декомпиляции и их результаты при применении к калькулятору каждого фреймворка перечислены ниже.

Целью этого упражнения по декомпиляции было определение возможности получения как пользовательского интерфейса, так и исходного кода из калькулятора каждого фреймворка с помощью инструментов с открытым исходным кодом или бесплатных инструментов. Оценивались фреймворки Delphi VCL, Delphi FMX, WPF (C #) и Electron (с Angular).

Когда калькуляторы Delphi VCL и FMX были декомпилированы, все элементы пользовательского интерфейса были успешно извлечены, и логический код был представлен в виде сборки. В этом упражнении не были извлечены функции и структура процедуры, но это возможно.

Декомпиляция калькулятора WPF привела к появлению элементов пользовательского интерфейса и в основном узнаваемого кода C #. Приложения WPF .NET Framework используют известный формат MSIL (Microsoft Intermediate Language), который легко дизассемблировать и декомпилировать. Зависимые сборки можно легко извлечь. Ресурсы легко добываются. .NET Reflection может использоваться для извлечения информации о сборке .NET. Все содержимое может быть извлечено из сборки, включая классы, методы, код и ресурсы. Продвинутый декомпилятор может восстановить почти точную структуру вашего кода, включая циклы for / while, операторы if и блоки try catch. Буквальные строки могут быть легко извлечены. Наконец, можно извлечь вызовы методов и свойств внешних сборок.

Элементы пользовательского интерфейса и код JavaScript калькулятора Electron легко доступны с помощью стандартного текстового редактора. Код Typescript был перенесен в JavaScript и не мог быть восстановлен. В целом упаковка Electron обеспечивала очень ограниченный уровень запутывания.

Давайте посмотрим на каждый фреймворк.

Можно ли декомпилировать приложения Delphi?

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

Инструменты декомпиляции

DeDe Декомпиляция Delphi VCL
Просмотр кода графического интерфейса пользователя редактора DFM в Delphi VCL
Вид дизайна графического интерфейса редактора DFM для Delphi VCL
Код сборки Delphi VCL, созданный IDR

Можно ли декомпилировать приложения WPF .NET Framework?

WPF, скомпилированный в классическое приложение Windows, преобразуется в файлы .dll и .baml. Декомпиляция обратно в узнаваемый C # и почти идеальный XAML возможна с помощью сторонних инструментов. Microsoft включает версию сообщества Dotfuscator с Visual Studio, но ее лицензия предназначена только для личного использования. Стоимость профессиональных решений для обфускации .NET варьируется от сотен до тысяч долларов. Есть также дополнительные шаги для защиты приложения с помощью инструмента запутывания.

Инструменты декомпиляции

dotPeek Декомпиляция логики WPF
dotPeek Декомпиляция графического интерфейса пользователя WPF
Snoop WPF Декомпиляция графического интерфейса пользователя WPF

Можно ли декомпилировать приложения Electron?

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

Инструменты декомпиляции

Текстовая панель, отображающая электронный логический код
Текстовая панель, отображающая электронный код пользовательского интерфейса

В целом, Delphi обеспечивает самые надежные долгосрочные перспективы, лучшую защиту интеллектуальной собственности и самую простую внутреннюю настройку за счет единовременной покупки коммерческой лицензии. WPF можно легко декомпилировать в настройках по умолчанию, и для этого требуются дополнительные шаги и инструменты для обфускации кода. Electron также можно легко декомпилировать в настройках по умолчанию. Для обфускации кода требуются дополнительные шаги и инструменты. Неопределенная долгосрочная перспектива и опора на корпоративное спонсорство и поддержку сообщества для дальнейшего развития пагубны.

Готовы изучить все показатели в техническом документе «Обнаружение лучшей среды разработки с помощью сравнительного анализа»?

Скачать техническую документацию Free Delphi vs. WPF vs. Electron для настольных ПК с Windows

Exit mobile version