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

Delphi fornece melhor proteção de código-fonte empresarial do que WPF e Electron

wp1_ip_security_gauge

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.

rad-studio-1042

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. 

calc

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.

wp1_ip_security-9146666-2

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.
code1-9102577-2
DeDe Decompilation of Delphi VCL
calcform1-4789534-2Editor DFM Visualização do código GUI do Delphi VCL
calcform2-2620481-2
DFM Editor GUI Design View do Delphi VCL
code2-3165443-2
Delphi VCL Assembly Code gerado por IDR

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.
code1-5023829-2
dotPeek Descompilação da lógica WPF
ui1-9482695-2
dotPeek Descompilação de WPF GUI
ui2-8640867-2
Snoop WPF Decompilation of WPF GUI

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.
code1-7271822-2
Textpad Exibindo Código Lógico Eletrônico
ui1-7519115-2
Textpad Exibindo o Código Electron da IU

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


DelphiCon 2021

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

Sobre o autor

Defensor do desenvolvedor chefe da Embarcadero Technologies.
Postagens relacionadas
C++DelphiIDENotíciaRAD Studio

Novo no RAD Studio 11: IDE de alta DPI e design de formulários!

DelphiNotíciaRAD Studio

Anunciando o DelphiCon 2021!

CodeDelphiNotícia

Tudo que você precisa para construir uma ferramenta WSL GUI hoje

DelphiDeveloper InterviewsInterviewNotícia

Como é ser desenvolvedor Dalija Prasnikar?

Leave a Reply

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

IN THE ARTICLES