Wie verhalten sich Delphi, WPF .NET Framework und Electron im Vergleich zueinander und wie lässt sich ein objektiver Vergleich am besten durchführen? Embarcadero gab ein Whitepaper in Auftrag , um die Unterschiede zwischen Delphi, WPF .NET Framework und Electron beim Erstellen von Windows-Desktopanwendungen zu untersuchen. Die Benchmark-Anwendung – ein Windows 10 Calculator-Klon – wurde in jedem Framework von drei freiwilligen Mitarbeitern von Delphi Most Valuable Professionals (MVPs), einem freiberuflichen WPF-Experten und einem freiberuflichen Electron-Entwickler neu erstellt. In diesem Blog-Beitrag werden wir die IP-Sicherheitsmetrik untersuchen, die Teil des im Whitepaper verwendeten Funktionsvergleichs ist.
Table of Contents
Was ist IP-Sicherheit in einer bereitstellbaren Anwendung?
Wie sicher ist das geistige Eigentum des Quellcodes in einem bereitstellbaren Projekt? Nachdem Unternehmen Ressourcen in ihre Projekte investiert haben, stehen sie vor der Herausforderung, ihr Produkt in die Hände der Öffentlichkeit zu legen und gleichzeitig den Code und die Techniken zu schützen, mit denen Einnahmen erzielt werden. Diese qualitative Metrik bewertet die Fähigkeit eines Benutzers, über Dekompilierung auf Quellcode zuzugreifen.
Der Schutz des geistigen Eigentums ist für langfristige Geschäftspläne von grundlegender Bedeutung. Wenn ein Produkt ein neues Problem löst oder eine neuartige Technik verwendet, sollten die Entwickler verstehen, wie sich die Wahl des Frameworks auf die IP-Schwachstelle auswirkt. Delphi-Programme werden eher in plattformeigenen Maschinencode als in Zwischencode kompiliert. Die Dekompilierung mit kostenlosen Tools kann das GUI-Formular wiederherstellen, liefert jedoch nur Assembler-Code für die Logik. Die IP-Sicherheit ist in WPF geringer. Das Dekompilieren von ausführbaren Dateien und Bibliotheksdateien mit kostenlosen Tools führt zu erkennbarer C # -Geschäftslogik und nahezu erkennbarem XAML-Text. Schließlich hat Electron das größte Problem: Standardmäßig wird bei jeder Installation Quellcode ausgegeben.Der Elektronenanwendungscode kann mit einem einfachen Texteditor wiederhergestellt werden – eine Funktion der Struktur des Frameworks -, kann jedoch mit Tools von Drittanbietern etwas verschleiert werden. Die verfügbaren Dekompiler-Tools und ihre Ergebnisse, wenn sie auf die Taschenrechneranwendung jedes Frameworks angewendet werden, sind unten aufgeführt.
Ziel dieser Dekompilierungsübung war es, die Machbarkeit des Abrufs sowohl der Benutzeroberfläche als auch des Originalcodes aus der Taschenrechneranwendung jedes Frameworks mithilfe von Open-Source- oder kostenlosen Tools zu ermitteln. Die bewerteten Frameworks waren Delphi VCL, Delphi FMX, WPF (C #) und Electron (mit Angular).
Bei der Dekompilierung der Delphi VCL- und FMX-Rechner wurden alle UI-Elemente erfolgreich extrahiert und der Logikcode als Assembly dargestellt. Diese Übung extrahierte nicht die Funktion und die Verfahrensstruktur, ist aber möglicherweise möglich.
Das Dekompilieren des WPF-Rechners ergab die UI-Elemente und den meist erkennbaren C # -Code. WPF .NET Framework-Anwendungen verwenden ein bekanntes MSIL-Format (Microsoft Intermediate Language), das leicht zu zerlegen und zu dekompilieren ist. Abhängige Baugruppen können leicht extrahiert werden. Ressourcen können leicht extrahiert werden. Mit .NET Reflection können Informationen zu einer .NET-Assembly extrahiert werden. Der gesamte Inhalt kann einschließlich der Klassen, Methoden, Codes und Ressourcen aus einer Assembly extrahiert werden. Ein erweiterter Dekompiler kann fast die genaue Struktur Ihres Codes rekonstruieren, einschließlich for / while-Schleifen, if-Anweisungen, und Catch-Blöcke ausprobieren. Literale Zeichenfolgen können leicht extrahiert werden. Schließlich können Aufrufe von Methoden und Eigenschaften für externe Assemblys extrahiert werden.
Die UI-Elemente und der JavaScript-Code des Elektronenrechners können mit einem Standard-Texteditor problemlos angezeigt werden. Der Typescript-Code wurde in JavaScript transpiliert und konnte nicht wiederhergestellt werden. Insgesamt bot die Verpackung von Electron einen sehr begrenzten Grad an Verschleierung.
Werfen wir einen Blick auf jedes Framework.
Können Delphi-Anwendungen dekompiliert werden?
Delphi kompiliert zu nativem Maschinencode und eliminiert einen Großteil der Quellcodestruktur und Metadaten, die für eine genaue Dekompilierung und Interpretation erforderlich sind. Die Dekompilierung mit einem Tool wie DeDe bietet vollständige Details zur Benutzeroberfläche, jedoch nur Assembler-Code für die Logik / das Back-End.
Dekompilierungswerkzeuge
- DeDe – einer der beliebtesten Delphi-Dekompilierer.
- Interaktiver Delphi-Rekonstruktor – ein Dekompiler für ausführbare Delphi-Dateien und dynamische Bibliotheken.
- MiTeC DFM Editor – ein eigenständiger Editor für Delphi Form-Dateien (* .dfm) im Binär- und Textformat.
Können WPF .NET Framework-Anwendungen dekompiliert werden?
In eine Windows-Desktopanwendung kompiliertes WPF wird in DLL- und BAML-Dateien konvertiert. Die Dekompilierung zurück zu erkennbarem C # und nahezu perfektem XAML ist über Tools von Drittanbietern möglich. Microsoft enthält eine Community-Edition von Dotfuscator mit Visual Studio, die Lizenz ist jedoch nur für den persönlichen Gebrauch bestimmt. Professionelle Lösungen für die .NET-Verschleierung reichen von Hunderten bis zu Tausenden von Dollar. Es sind auch zusätzliche Schritte erforderlich, um eine Anwendung mit einem Verschleierungstool zu schützen.
Dekompilierungswerkzeuge
- WPF StylesExplorer – ein WPF .baml-Dekompiler und ein Tool zum Erkunden von .baml-Ressourcen.
- Snoop WPF – ein Tool zum Ausspähen / Durchsuchen des visuellen Baums einer laufenden WPF-Anwendung, ohne dass ein Debugger erforderlich ist.
- JetBrains dotPeek – ein .NET-Dekompiler und Assembly-Browser.
Können Elektronenanwendungen dekompiliert werden?
Der Elektronenquellcode wird gepackt und auf dem System des Endbenutzers bereitgestellt. Sofern ein Entwickler keine Tools von Drittanbietern verwendet, um Code zu verschleiern, kann der Quellcode mit einem einfachen Texteditor oder durch Entpacken mit einem Tool wie asar wörtlich gelesen werden.
Dekompilierungswerkzeuge
- TextPad – ein universeller Texteditor für Klartextdateien.
- asar – ein einfaches Tool zum Packen und Entpacken von unkomprimierten Verkettungsarchiven.
Insgesamt bietet Delphi die sichersten langfristigen Aussichten, die beste Sicherheit für geistiges Eigentum und die einfachste interne Anpassung auf Kosten eines einmaligen kommerziellen Lizenzkaufs. WPFs können in der Standardeinstellung problemlos dekompiliert werden und erfordern zusätzliche Schritte und Tools, um den Code zu verschleiern. In der Standardeinstellung kann Electron auch problemlos dekompiliert werden. Es sind zusätzliche Schritte und Tools erforderlich, um den Code zu verschleiern. Ein ungewisser langfristiger Ausblick und das Verlassen auf Unternehmenssponsoring und Community-Unterstützung für zusätzliche Entwicklung sind nachteilig.
Sind Sie bereit, alle Messdaten im Whitepaper „Ermitteln des besten Entwickler-Frameworks durch Benchmarking“ zu untersuchen?
Laden Sie das Whitepaper Delphi vs. WPF vs. Electron für Windows-Desktops herunter
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition