![wp1ipsecuritygauge | Embarcadero RAD Studio Delphi C++Builder Blogs wp1 ip security gauge](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/01/wp1_ip_security_gauge-5558910-3440246.jpg?resize=1140%2C628&ssl=1)
Как работают Delphi, WPF .NET Framework и Electron по сравнению друг с другом и как лучше всего провести объективное сравнение? Embarcadero заказал технический документ для исследования различий между Delphi, WPF .NET Framework и Electron для создания настольных приложений Windows. Тестовое приложение — клон калькулятора Windows 10 — было воссоздано в каждой структуре тремя волонтерами Delphi Most Valuable Professionals (MVP), одним экспертом-фрилансером WPF-разработчиком и одним экспертом-фрилансером Electron. В этом сообщении блога мы собираемся изучить метрику IP-безопасности, которая является частью сравнения функциональности, используемого в техническом документе.
![radstudio1042 | Embarcadero RAD Studio Delphi C++Builder Blogs rad studio 1042](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/03/rad-studio-1042-6142514.png?resize=500%2C287&ssl=1)
Table of Contents
Что такое IP-безопасность в развертываемом приложении?
Насколько защищена интеллектуальная собственность исходного кода в развертываемом проекте? После того, как компании вкладывают ресурсы в свои проекты, они сталкиваются с проблемой: передать свой продукт в руки общественности, одновременно защищая код и методы, приносящие доход. Этот качественный показатель оценивает возможность доступа пользователя к исходному коду посредством декомпиляции.
![calc | Embarcadero RAD Studio Delphi C++Builder Blogs calc](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/01/calc-8541990.png?resize=509%2C462&ssl=1)
Защита интеллектуальной собственности принципиально важна для долгосрочных бизнес-планов. Если продукт решает новую проблему или использует новую технику, разработчики должны понимать, как их выбор фреймворка влияет на уязвимость 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 обеспечивала очень ограниченный уровень запутывания.
![wp1ipsecurity9146666 | Embarcadero RAD Studio Delphi C++Builder Blogs wp1 ip security 9146666 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/02/wp1_ip_security-9146666.png?resize=423%2C580&ssl=1)
Давайте посмотрим на каждый фреймворк.
Можно ли декомпилировать приложения Delphi?
Delphi компилируется в собственный машинный код, устраняя большую часть структуры исходного кода и метаданных, необходимых для точной декомпиляции и интерпретации. Декомпиляция с использованием такого инструмента, как DeDe, предоставит полную информацию о пользовательском интерфейсе, но только код сборки для логики / серверной части.
Инструменты декомпиляции
- DeDe — один из самых популярных декомпиляторов Delphi.
- Interactive Delphi Reconstructor — декомпилятор для исполняемых файлов Delphi и динамических библиотек.
- MiTeC DFM Editor — автономный редактор файлов Delphi Form (* .dfm) как в двоичном, так и в текстовом формате.
![code19102577 | Embarcadero RAD Studio Delphi C++Builder Blogs code1 9102577 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/02/code1-9102577.png?resize=750%2C443&ssl=1)
![calcform14789534 | Embarcadero RAD Studio Delphi C++Builder Blogs calcform1 4789534 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/03/calcform1-4789534.png?resize=750%2C517&ssl=1)
![calcform22620481 | Embarcadero RAD Studio Delphi C++Builder Blogs calcform2 2620481 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/03/calcform2-2620481.png?resize=750%2C517&ssl=1)
![code23165443 | Embarcadero RAD Studio Delphi C++Builder Blogs code2 3165443 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/02/code2-3165443.png?resize=750%2C420&ssl=1)
Можно ли декомпилировать приложения 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 и обозреватель сборки.
![code15023829 | Embarcadero RAD Studio Delphi C++Builder Blogs code1 5023829 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/02/code1-5023829.png?resize=750%2C420&ssl=1)
![ui19482695 | Embarcadero RAD Studio Delphi C++Builder Blogs ui1 9482695 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/02/ui1-9482695.png?resize=750%2C420&ssl=1)
![ui28640867 | Embarcadero RAD Studio Delphi C++Builder Blogs ui2 8640867 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/02/ui2-8640867.png?resize=750%2C420&ssl=1)
Можно ли декомпилировать приложения Electron?
Исходный код Electron упаковывается и развертывается в системе конечного пользователя. Если разработчик не использует сторонние инструменты для обфускации кода, исходный код можно прочитать дословно с помощью простого текстового редактора или распаковав с помощью такого инструмента, как asar.
Инструменты декомпиляции
- TextPad — текстовый редактор общего назначения для текстовых файлов.
- asar — простой инструмент для упаковки и распаковки несжатых файлов формата архива.
![code17271822 | Embarcadero RAD Studio Delphi C++Builder Blogs code1 7271822 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/02/code1-7271822.png?resize=750%2C580&ssl=1)
![UI17519115 | Embarcadero RAD Studio Delphi C++Builder Blogs ui1 7519115 2](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/02/UI1-7519115.png?resize=750%2C580&ssl=1)
В целом, Delphi обеспечивает самые надежные долгосрочные перспективы, лучшую защиту интеллектуальной собственности и самую простую внутреннюю настройку за счет единовременной покупки коммерческой лицензии. WPF можно легко декомпилировать в настройках по умолчанию, и для этого требуются дополнительные шаги и инструменты для обфускации кода. Electron также можно легко декомпилировать в настройках по умолчанию. Для обфускации кода требуются дополнительные шаги и инструменты. Неопределенная долгосрочная перспектива и опора на корпоративное спонсорство и поддержку сообщества для дальнейшего развития пагубны.
Готовы изучить все показатели в техническом документе «Обнаружение лучшей среды разработки с помощью сравнительного анализа»?
Скачать техническую документацию Free Delphi vs. WPF vs. Electron для настольных ПК с Windows
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition