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

Delphi proporciona una mejor protección de código fuente empresarial que WPF y Electron

wp1_ip_security_gauge

¿Cómo funcionan Delphi, WPF .NET Framework y Electron en comparación entre sí, y cuál es la mejor manera de hacer una comparación objetiva? Embarcadero encargó un documento técnico para investigar las diferencias entre Delphi, WPF .NET Framework y Electron para crear aplicaciones de escritorio de Windows. La aplicación de referencia, un clon de la Calculadora de Windows 10, fue recreada en cada marco por tres voluntarios de Delphi Most Valuable Professionals (MVP), un desarrollador experto independiente de WPF y un desarrollador experto independiente Electron. En esta publicación de blog, vamos a explorar la métrica de seguridad IP, que es parte de la comparación de funcionalidad utilizada en el documento técnico.

rad-studio-1042

¿Qué es la seguridad IP en una aplicación desplegable?

¿Qué tan segura es la propiedad intelectual del código fuente en un proyecto implementable? Después de que las empresas invierten recursos en sus proyectos, enfrentan el desafío de poner su producto en manos del público mientras protegen el código y las técnicas que generan ingresos. Esta métrica cualitativa evalúa la capacidad de un usuario para acceder al código fuente a través de la descompilación. 

calc

La protección de la propiedad intelectual es fundamentalmente importante para los planes comerciales a largo plazo. Si un producto resuelve un nuevo problema o utiliza una técnica novedosa, los desarrolladores deben comprender cómo su elección de marco afecta la vulnerabilidad de la propiedad intelectual. Los programas Delphi se compilan en código de máquina nativo de la plataforma en lugar de código intermedio. La descompilación con herramientas gratuitas puede recuperar la forma de la GUI, pero solo produce código ensamblador para la lógica. La seguridad de IP es más tenue en WPF. La descompilación de archivos ejecutables y de biblioteca con herramientas gratuitas da como resultado una lógica empresarial de C # reconocible y un texto XAML casi reconocible. Finalmente, Electron tiene el problema más importante: regala el código fuente con cada instalación de forma predeterminada.El código de la aplicación de Electron se puede recuperar con un editor de texto simple, una función de cómo está estructurado el marco, pero se puede ofuscar un poco con herramientas de terceros. Las herramientas del descompilador disponibles y sus resultados cuando se aplican a la aplicación de calculadora de cada marco se enumeran a continuación.

El objetivo de este ejercicio de descompilación fue determinar la viabilidad de recuperar tanto la interfaz de usuario como el código original de la aplicación de calculadora de cada marco utilizando herramientas de código abierto o gratuitas. Los marcos evaluados fueron Delphi VCL, Delphi FMX, WPF (C #) y Electron (con Angular).

Cuando se descompilaron las calculadoras Delphi VCL y FMX, todos los elementos de la interfaz de usuario se extrajeron con éxito y el código lógico se presentó como ensamblado. Este ejercicio no extrajo la estructura de funciones y procedimientos, pero puede ser posible.

La descompilación de la calculadora WPF produjo los elementos de la interfaz de usuario y el código C # en su mayoría reconocible. Las aplicaciones de WPF .NET Framework utilizan un formato conocido MSIL (Microsoft Intermediate Language) que es fácil de desmontar y descompilar. Los ensamblajes dependientes se pueden extraer fácilmente. Los recursos se pueden extraer fácilmente. .NET Reflection se puede utilizar para extraer información sobre un ensamblado .NET. Se puede extraer todo el contenido, incluidas las clases, los métodos, el código y los recursos de un ensamblado. Un descompilador avanzado puede reconstruir casi la estructura exacta de su código, incluidos los bucles for / while, las declaraciones if y los bloques de captura de prueba. Las cadenas literales se pueden extraer fácilmente. Finalmente, se pueden extraer llamadas a métodos y propiedades a ensamblados externos.

Los elementos de la interfaz de usuario y el código JavaScript de la calculadora Electron se exponen fácilmente mediante un editor de texto estándar. El código de TypeScript se transpiló a JavaScript y no se pudo recuperar. En general, el empaque de Electron proporcionó un nivel muy limitado de ofuscación.

wp1_ip_security-9146666-2

Echemos un vistazo a cada marco.

¿Se pueden descompilar las aplicaciones Delphi?

Delphi compila en código de máquina nativo, eliminando gran parte de la estructura del código fuente y los metadatos necesarios para una descompilación e interpretación precisas. La descompilación con una herramienta como DeDe proporcionará detalles completos sobre la interfaz de usuario, pero solo el código de ensamblaje para la lógica / back-end.

Herramientas de descompilación

  • DeDe: uno de los descompiladores de Delphi más populares.
  • Interactive Delphi Reconstructor: un descompilador de ejecutables y bibliotecas dinámicas de Delphi.
  • MiTeC DFM Editor: un editor independiente para archivos de formularios Delphi (* .dfm) en formato binario y de texto.
code1-9102577-2
Descompilación de Delphi VCL
calcform1-4789534-2
Vista del código de la GUI del editor DFM de Delphi VCL
calcform2-2620481-2
Vista de diseño de GUI del editor DFM de Delphi VCL
code2-3165443-2
Código de ensamblaje de Delphi VCL generado por IDR

¿Se pueden descompilar las aplicaciones de WPF .NET Framework?

WPF compilado en una aplicación de escritorio de Windows se convierte en archivos .dll y .baml. La descompilación de nuevo a C # reconocible y XAML casi perfecto es posible a través de herramientas de terceros. Microsoft incluye una edición comunitaria de Dotfuscator con Visual Studio, pero su licencia es solo para uso personal. Las soluciones profesionales para la ofuscación de .NET oscilan entre cientos y miles de dólares. También hay pasos adicionales involucrados para proteger una aplicación con una herramienta de ofuscación.

Herramientas de descompilación

  • WPF StylesExplorer: un descompilador de .baml de WPF y una herramienta para explorar recursos .baml.
  • Snoop WPF: una herramienta para espiar / explorar el árbol visual de una aplicación WPF en ejecución sin la necesidad de un depurador.
  • JetBrains dotPeek: un descompilador de .NET y un navegador de ensamblaje.
code1-5023829-2
dotPeek Descompilación de WPF Logic
ui1-9482695-2
dotPeek Descompilación de la GUI de WPF
ui2-8640867-2
Descompilación de Snoop WPF de la GUI de WPF

¿Se pueden descompilar las aplicaciones de Electron?

El código fuente de Electron se empaqueta y se implementa en el sistema del usuario final. A menos que un desarrollador use herramientas de terceros para ofuscar el código, el código fuente se puede leer textualmente usando un editor de texto simple o descomprimiéndolo con una herramienta como asar.

Herramientas de descompilación

  • TextPad: un editor de texto de uso general para archivos de texto sin formato.
  • asar: una sencilla herramienta de empaquetado y desempaquetado de archivos con formato de archivo de concatenación sin comprimir.
code1-7271822-2
Textpad que muestra el código de lógica electrónica
ui1-7519115-2
Textpad que muestra el código de IU de Electron

En general, Delphi ofrece la perspectiva a largo plazo más segura, la mejor seguridad de propiedad intelectual y la personalización interna más sencilla al costo de una única compra de licencia comercial. Los WPF se pueden descompilar con facilidad en su configuración predeterminada y requieren pasos y herramientas adicionales para ofuscar su código. Electron también se puede descompilar con facilidad en su configuración predeterminada. Requiere pasos y herramientas adicionales para ofuscar el código. Una perspectiva incierta a largo plazo y depender de patrocinios corporativos y el apoyo de la comunidad para un desarrollo adicional son perjudiciales.

¿Está listo para explorar todas las métricas del documento técnico “Descubriendo el mejor marco para desarrolladores a través de la evaluación comparativa”?

Descargue el documento técnico gratuito de Delphi vs.WPF vs.Electron para equipos de escritorio con Windows


What's New for RAD Studio 11

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 el autor

Promotor jefe de desarrollo de Embarcadero Technologies.
Artículos Relacionados
C++DelphiNoticiasRAD Studio

Ligas de Embarcadero Dev Lounge - Agosto 2021

DelphiDeveloper InterviewsInterviewNoticias

¿Qué se siente al ser un desarrollador Joe C. Hecht?

CodeNoticiasRAD Studio

Por qué definitivamente debería escribir menos código este año

DelphiDeveloper InterviewsInterviewNoticias

¿Qué se siente al ser un desarrollador Sunil Kumar Arora?

Leave a Reply

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

IN THE ARTICLES