Comment Delphi, WPF .NET Framework et Electron se comparent-ils et quel est le meilleur moyen de faire une comparaison objective? Embarcadero a commandé un livre blanc pour étudier les différences entre Delphi, WPF .NET Framework et Electron pour la création d’applications de bureau Windows. L’application de référence – un clone de la calculatrice Windows 10 – a été recréée dans chaque cadre par trois bénévoles Delphi Most Valuable Professionals (MVP), un développeur WPF indépendant et un développeur indépendant d’Electron. Dans cet article de blog, nous allons explorer la métrique de sécurité IP, qui fait partie de la comparaison des fonctionnalités utilisée dans le livre blanc.
Table of Contents
Qu’est-ce que la sécurité IP dans une application déployable?
Dans quelle mesure la propriété intellectuelle du code source est-elle sécurisée dans un projet déployable? Une fois que les entreprises ont investi des ressources dans leurs projets, elles sont confrontées au défi de mettre leur produit entre les mains du public tout en protégeant le code et les techniques qui génèrent des revenus. Cette métrique qualitative évalue la capacité d’un utilisateur à accéder au code source via la décompilation.
La protection de la propriété intellectuelle est d’une importance fondamentale pour les plans d’activités à long terme. Si un produit résout un nouveau problème ou utilise une nouvelle technique, les développeurs doivent comprendre comment leur choix de cadre affecte la vulnérabilité IP. Les programmes Delphi se compilent en code machine natif de la plateforme plutôt qu’en code intermédiaire. La décompilation à l’aide d’outils gratuits peut récupérer le formulaire GUI, mais ne produit que du code d’assemblage pour la logique. La sécurité IP est plus fragile dans WPF. La décompilation des fichiers exécutables et de bibliothèque avec des outils gratuits se traduit par une logique métier C # reconnaissable et un texte XAML presque reconnaissable. Enfin, Electron a le problème le plus important – il donne le code source à chaque installation par défaut.Le code d’application Electron peut être récupéré avec un simple éditeur de texte – en fonction de la structure du framework – mais peut être quelque peu obscurci à l’aide d’outils tiers. Les outils de décompilation disponibles et leurs résultats lorsqu’ils sont appliqués à l’application de calcul de chaque framework sont répertoriés ci-dessous.
Le but de cet exercice de décompilation était de déterminer la faisabilité de récupérer à la fois l’interface utilisateur et le code d’origine de l’application de calcul de chaque framework à l’aide d’outils open source ou gratuits. Les cadres évalués étaient Delphi VCL, Delphi FMX, WPF (C #) et Electron (avec Angular).
Lorsque les calculatrices Delphi VCL et FMX ont été décompilées, tous les éléments de l’interface utilisateur ont été extraits avec succès et le code logique a été présenté sous forme d’assemblage. Cet exercice n’a pas extrait la structure de la fonction et de la procédure, mais cela peut être possible.
La décompilation de la calculatrice WPF a produit les éléments de l’interface utilisateur et le code C # principalement reconnaissable. Les applications WPF .NET Framework utilisent un format MSIL (Microsoft Intermediate Language) connu, facile à démonter et à décompiler. Les assemblages dépendants peuvent être facilement extraits. Les ressources peuvent être facilement extraites. .NET Reflection peut être utilisé pour extraire des informations sur un assembly .NET. L’ensemble du contenu peut être extrait, y compris les classes, les méthodes, le code et les ressources d’un assembly. Un décompilateur avancé peut reconstruire presque la structure exacte de votre code, y compris les boucles for / while, les instructions if et essayer des blocs catch. Les chaînes littérales peuvent être facilement extraites. Enfin, les appels aux méthodes et les propriétés aux assemblys externes peuvent être extraits.
Les éléments de l’interface utilisateur et le code JavaScript de la calculatrice Electron sont facilement exposés à l’aide d’un éditeur de texte standard. Le code Typescript a été transpilé en JavaScript et n’a pas pu être récupéré. Dans l’ensemble, l’emballage d’Electron a fourni un niveau très limité d’obscurcissement.
Jetons un coup d’œil à chaque cadre.
Les applications Delphi peuvent-elles être décompilées?
Delphi compile en code machine natif, éliminant une grande partie de la structure du code source et des métadonnées nécessaires pour une décompilation et une interprétation précises. La décompilation à l’aide d’un outil comme DeDe fournira des détails complets sur l’interface utilisateur, mais uniquement le code d’assemblage pour la logique / le back-end.
Outils de décompilation
- DeDe – l’un des décompilateurs Delphi les plus populaires.
- Interactive Delphi Reconstructor – un décompilateur pour les exécutables Delphi et les bibliothèques dynamiques.
- MiTeC DFM Editor – un éditeur autonome pour les fichiers Delphi Form (* .dfm) au format binaire et texte.
Les applications WPF .NET Framework peuvent-elles être décompilées?
WPF compilé dans une application de bureau Windows est converti en fichiers .dll et .baml. La décompilation vers un C # reconnaissable et un XAML presque parfait est possible grâce à des outils tiers. Microsoft inclut une édition communautaire de Dotfuscator avec Visual Studio mais sa licence est réservée à un usage personnel. Les solutions professionnelles d’obfuscation .NET vont de centaines à des milliers de dollars. Il existe également des étapes supplémentaires pour protéger une application avec un outil d’obscurcissement.
Outils de décompilation
- WPF StylesExplorer – un décompilateur WPF .baml et un outil pour explorer les ressources .baml.
- Snoop WPF – un outil pour espionner / parcourir l’arborescence visuelle d’une application WPF en cours d’exécution sans avoir besoin d’un débogueur.
- JetBrains dotPeek – un décompilateur .NET et un navigateur d’assemblage.
Les applications Electron peuvent-elles être décompilées?
Le code source électronique est conditionné et déployé sur le système de l’utilisateur final. À moins qu’un développeur n’utilise des outils tiers pour masquer le code, le code source peut être lu textuellement à l’aide d’un simple éditeur de texte ou en le décompressant avec un outil comme asar.
Outils de décompilation
- TextPad – un éditeur de texte à usage général pour les fichiers en clair.
- asar – un simple outil d’emballage et de décompression au format d’archive de concaténation de fichier non compressé.
Dans l’ensemble, Delphi offre les perspectives à long terme les plus assurées, la meilleure sécurité de propriété intellectuelle et la personnalisation interne la plus simple au prix d’un achat de licence commerciale unique. WPF peut être décompilé facilement dans sa configuration par défaut et nécessite des étapes et des outils supplémentaires pour masquer son code. Electron peut également être décompilé facilement dans sa configuration par défaut. Cela nécessite des étapes et des outils supplémentaires pour masquer le code. Des perspectives à long terme incertaines et le fait de compter sur les commandites d’entreprises et le soutien de la communauté pour un développement supplémentaire sont préjudiciables.
Êtes-vous prêt à explorer toutes les mesures du livre blanc «À la découverte du meilleur framework de développement grâce à l’analyse comparative»?
Téléchargez le livre blanc gratuit Delphi vs WPF vs Electron pour les ordinateurs de bureau Windows