Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
DelphiResearch

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-безопасности, которая является частью сравнения функциональности, используемого в техническом документе.

rad-studio-1042

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

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

calc

Защита интеллектуальной собственности принципиально важна для долгосрочных бизнес-планов. Если продукт решает новую проблему или использует новую технику, разработчики должны понимать, как их выбор фреймворка влияет на уязвимость 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 обеспечивала очень ограниченный уровень запутывания.

wp1_ip_security-9146666-2

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

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

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

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

  • DeDe — один из самых популярных декомпиляторов Delphi.
  • Interactive Delphi Reconstructor — декомпилятор для исполняемых файлов Delphi и динамических библиотек.
  • MiTeC DFM Editor — автономный редактор файлов Delphi Form (* .dfm) как в двоичном, так и в текстовом формате.
code1-9102577-2
DeDe Декомпиляция Delphi VCL
calcform1-4789534-2
Просмотр кода графического интерфейса пользователя редактора DFM в Delphi VCL
calcform2-2620481-2
Вид дизайна графического интерфейса редактора DFM для Delphi VCL
code2-3165443-2
Код сборки Delphi VCL, созданный IDR

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

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

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

  • WPF StylesExplorer — декомпилятор WPF .baml и инструмент для изучения ресурсов .baml.
  • Snoop WPF — инструмент для отслеживания / просмотра визуального дерева работающего приложения WPF без использования отладчика.
  • JetBrains dotPeek — декомпилятор .NET и обозреватель сборки.
code1-5023829-2
dotPeek Декомпиляция логики WPF
ui1-9482695-2
dotPeek Декомпиляция графического интерфейса пользователя WPF
ui2-8640867-2
Snoop WPF Декомпиляция графического интерфейса пользователя WPF

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

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

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

  • TextPad — текстовый редактор общего назначения для текстовых файлов.
  • asar — простой инструмент для упаковки и распаковки несжатых файлов формата архива.
code1-7271822-2
Текстовая панель, отображающая электронный логический код
ui1-7519115-2
Текстовая панель, отображающая электронный код пользовательского интерфейса

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

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

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


What's New for RAD Studio 11

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Об авторе

Главный адвокат разработчиков Embarcadero Technologies.
Похожие сообщения
DelphiDeveloper InterviewsInterviewНовости

Каково быть разработчиком Джо К. Хехт?

CodeRAD StudioНовости

Почему вам определенно стоит писать меньше кода в этом году

DelphiDeveloper InterviewsInterviewНовости

Каково быть разработчиком Сунил Кумар Арора?

C++DelphiRAD StudioНовости

Настольные компьютеры - непревзойденный источник производительности

Leave a Reply

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

IN THE ARTICLES