Qual é o desempenho do Delphi, do WPF .NET Framework e do Electron em comparação entre si, e qual é a melhor maneira de fazer uma comparação objetiva? A Embarcadero encomendou um white paper para investigar as diferenças entre Delphi, WPF .NET Framework e Electron para a construção de aplicativos de desktop do Windows. O aplicativo de referência – um clone da Calculadora do Windows 10 – foi recriado em cada estrutura por três voluntários Delphi Most Valuable Professionals (MVPs), um desenvolvedor WPF freelance especialista e um desenvolvedor freelance Electron especialista. Nesta postagem do blog, vamos explorar a métrica de segurança IP, que faz parte da comparação de funcionalidade usada no white paper.
Table of Contents
O que é segurança IP em um aplicativo implantável?
Quão segura é a propriedade intelectual do código-fonte em um projeto implantável? Depois que as empresas investem recursos em seus projetos, elas enfrentam o desafio de colocar seus produtos nas mãos do público e, ao mesmo tempo, proteger o código e as técnicas que geram receita. Essa métrica qualitativa avalia a capacidade de um usuário de acessar o código-fonte por meio de descompilação.
A proteção da propriedade intelectual é fundamentalmente importante para os planos de negócios de longo prazo. Se um produto resolve um novo problema ou utiliza uma nova técnica, os desenvolvedores devem entender como sua escolha de estrutura afeta a vulnerabilidade de IP. Os programas Delphi são compilados em código de máquina nativo da plataforma, em vez de código intermediário. A descompilação usando ferramentas gratuitas pode recuperar a forma da GUI, mas apenas produz o código de montagem para a lógica. A segurança IP é mais tênue no WPF. A descompilação de arquivos executáveis e de biblioteca com ferramentas gratuitas resulta em lógica de negócios C # reconhecível e texto XAML quase reconhecível. Finalmente, o Electron tem o problema mais significativo – ele distribui o código-fonte com cada instalação por padrão.O código do aplicativo Electron pode ser recuperado com um editor de texto simples – uma função de como a estrutura é estruturada – mas pode ser um tanto ofuscado usando ferramentas de terceiros. As ferramentas de descompilação disponíveis e seus resultados quando aplicados a cada aplicativo de calculadora da estrutura estão listados abaixo.
O objetivo deste exercício decompilation foi determinar a viabilidade de recuperar tanto a interface do usuário eo código original do aplicativo de cálculo de cada quadro usando open-source ou ferramentas livres. Os frameworks avaliados foram Delphi VCL, Delphi FMX, WPF (C #) e Electron (com Angular).
Quando as calculadoras Delphi VCL e FMX foram descompiladas, todos os elementos da IU foram extraídos com sucesso e o código lógico foi apresentado como montagem. Este exercício não extraiu a função e a estrutura do procedimento, mas pode ser possível.
Decompiling the WPF calculator yielded the UI elements and mostly recognizable C# code. WPF .NET Framework applications use a known MSIL (Microsoft Intermediate Language) format that is easy to disassemble and decompile. Dependent assemblies can easily be extracted. Resources can easily be extracted. .NET Reflection can be used to extract information about a .NET assembly. The entire contents can be extracted including the classes, methods, code, and resources from an assembly. An advanced decompiler can reconstruct almost the exact structure of your code including for/while loops, if statements, and try catch blocks. Literal strings can easily be extracted. Finally, calls to methods and properties to external assemblies can be extracted.
Os elementos da IU e o código JavaScript da calculadora Electron são facilmente expostos usando um editor de texto padrão. O código Typescript foi transpilado para JavaScript e não pôde ser recuperado. No geral, a embalagem do Electron forneceu um nível muito limitado de ofuscação.
Vamos dar uma olhada em cada estrutura.
Os aplicativos Delphi podem ser descompilados?
O Delphi compila para o código de máquina nativo, eliminando muito da estrutura do código-fonte e dos metadados necessários para uma descompilação e interpretação precisas. A descompilação usando uma ferramenta como o DeDe fornecerá detalhes completos sobre a IU, mas apenas o código de montagem para a lógica / back-end.
Ferramentas de descompilação
- DeDe – um dos mais populares descompiladores Delphi.
- Delphi Reconstructor interativo – um descompilador para executáveis Delphi e bibliotecas dinâmicas.
- MiTeC DFM Editor – um editor independente para arquivos Delphi Form (* .dfm) em formato binário e de texto.
Os aplicativos WPF .NET Framework podem ser descompilados?
O WPF compilado em um aplicativo da área de trabalho do Windows é convertido em arquivos .dll e .baml. A descompilação de volta para C # reconhecível e XAML quase perfeito é possível por meio de ferramentas de terceiros. A Microsoft inclui uma edição comunitária do Dotfuscator com Visual Studio, mas sua licença é apenas para uso pessoal. As soluções profissionais para ofuscação .NET variam de centenas a milhares de dólares. Existem também etapas extras envolvidas para proteger um aplicativo com uma ferramenta de ofuscação.
Ferramentas de descompilação
- WPF StylesExplorer – um descompilador WPF .baml e ferramenta para explorar recursos .baml.
- Snoop WPF – uma ferramenta para espiar / navegar na árvore visual de um aplicativo WPF em execução sem a necessidade de um depurador.
- JetBrains dotPeek – um decompilador .NET e navegador de montagem.
Os aplicativos Electron podem ser descompilados?
O código-fonte do elétron é empacotado e implantado no sistema do usuário final. A menos que um desenvolvedor use ferramentas de terceiros para ofuscar o código, o código-fonte pode ser lido literalmente usando um editor de texto simples ou desempacotando com uma ferramenta como asar.
Ferramentas de descompilação
- TextPad – um editor de texto de propósito geral para arquivos de texto simples.
- asar – uma ferramenta simples de compactação e descompactação de formato de arquivo de concatenação de arquivo simples.
No geral, a Delphi oferece a perspectiva de longo prazo mais garantida, a melhor segurança de propriedade intelectual e a personalização interna mais fácil ao custo de uma compra única de licença comercial. Os WPFs podem ser descompilados com facilidade em sua configuração padrão e requer etapas e ferramentas extras para ofuscar seu código. Electron também pode ser descompilado com facilidade em sua configuração padrão. Requer etapas e ferramentas extras para ofuscar o código. Uma perspectiva incerta de longo prazo e a dependência de patrocínios corporativos e apoio da comunidade para desenvolvimento adicional são prejudiciais.
Pronto para explorar todas as métricas do white paper “Descobrindo a melhor estrutura de desenvolvedor por meio de benchmarking”?
Baixe o artigo gratuito Delphi vs. WPF vs. Electron para desktops Windows