¿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.
Table of Contents
¿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.
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.
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.
¿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.
¿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.
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.