Skip to Content
Nueva versión 12 disponible 🎉
DesktopProyectos de ofuscación

Proyectos de ofuscación

Un proyecto de ofuscación reúne los ensamblados que se van a proteger, sus dependencias y los ajustes de cada uno. Babel Desktop lo muestra como un grafo en un diagrama y lo ejecuta con el motor de Babel Obfuscator.

Babel Desktop guarda los proyectos como archivos .babel, el formato de proyecto de MSBuild que usa la tarea de MSBuild. Puede compilar con MSBuild un proyecto guardado en la aplicación, y abrir en la aplicación un proyecto .babel ya existente.

Crear un proyecto

Añadir los ensamblados

Haga clic en Añadir ensamblados en la pantalla de inicio o en + Añadir ensamblado en la barra de herramientas del diagrama (Ctrl+Shift+A, Cmd+Shift+A en macOS), o arrastre ensamblados .NET desde el administrador de archivos hasta el diagrama. Cada ensamblado se convierte en un destino principal: un nodo del diagrama que el motor ofusca.

Conectar las dependencias

Añada los ensamblados que se combinan con un destino, se incrustan en él o a los que este hace referencia, tal como se describe en Dependencias.

Configurar cada destino

Seleccione un nodo y abra el panel de propiedades para editar sus ajustes y sus reglas XML. Consulte Ajustes del destino.

Guardar y ejecutar

Guarde el proyecto con Archivo > Guardar (Ctrl+S, Cmd+S en macOS) y, a continuación, haga clic en Ejecutar proyecto (Ctrl+Enter, Cmd+Enter en macOS). Guardar escribe el archivo .babel abierto y solo pide un nombre de archivo cuando el proyecto es nuevo. Para guardar una copia con otro nombre, use Archivo > Guardar como… (Ctrl+Shift+S, Cmd+Shift+S en macOS).

Para empezar de cero, use Proyecto: nuevo (Ctrl+N) o el botón Nuevo proyecto del diagrama. Proyecto: Abrir reciente…, en la paleta de comandos, vuelve a abrir un proyecto reciente, y el cuadro de diálogo Abrir proyecto se abre en la carpeta del último proyecto abierto. Si el proyecto actual tiene cambios sin guardar, Babel Desktop pregunta si desea descartarlos antes de crear o abrir otro. Si hay una tarea en ejecución, espere antes a que termine.

El diagrama del proyecto

El diagrama muestra cada ensamblado como un nodo. Para desplazarse, arrastre el fondo, gire la rueda del ratón o deslice dos dedos. Para acercar o alejar la vista en torno al puntero, pellizque, o mantenga pulsada Ctrl (Cmd en macOS) mientras gira la rueda. Los botones de zoom y Ajustar vista encuadran el grafo. Arrastre los nodos para ordenarlos, o deje que Ver > Organizar grafo automáticamente (Ctrl+Shift+L, Cmd+Shift+L en macOS) coloque los destinos de izquierda a derecha según el orden de ejecución, con las dependencias de cada destino apiladas a su izquierda. Las posiciones de los nodos se guardan en el archivo de proyecto.

Diagrama del proyecto FullMerge.babel: el destino principal BubbleBurst.exe a la derecha y cuatro entradas de combinación a la izquierda, BubbleBurst.View.dll, BubbleBurst.ViewModel.dll, MvvmFoundation.Wpf.dll y Thriple.dll, cada una conectada a él con una línea con la etiqueta MERGEDiagrama del proyecto FullMerge.babel: el destino principal BubbleBurst.exe a la derecha y cuatro entradas de combinación a la izquierda, BubbleBurst.View.dll, BubbleBurst.ViewModel.dll, MvvmFoundation.Wpf.dll y Thriple.dll, cada una conectada a él con una línea con la etiqueta MERGEDiagrama del proyecto FullMerge.babel: el destino principal BubbleBurst.exe a la derecha y cuatro entradas de combinación a la izquierda, BubbleBurst.View.dll, BubbleBurst.ViewModel.dll, MvvmFoundation.Wpf.dll y Thriple.dll, cada una conectada a él con una línea con la etiqueta MERGE

Un destino principal con cuatro ensamblados combinados

Deje el puntero sobre un nodo durante medio segundo, o vaya hasta él con el teclado, para abrir su tarjeta. La tarjeta de un destino principal muestra su estado, su orden de ejecución, cuántos ensamblados combina, incrusta y referencia, sus vínculos de map y la ruta del archivo de entrada. Después de una ejecución muestra también la puntuación de ofuscación.

Dependencias

Los anclajes superior e inferior de un nodo conectan las dependencias. Arrastre desde el anclaje inferior del ensamblado de origen hasta el anclaje superior del destino, o haga clic en los dos anclajes, uno después del otro. Una dependencia nueva recibe uno de estos tres tipos:

TipoEfecto
CombinarEl ensamblado de origen se combina con el destino y se ofusca con él; el resultado es un único ensamblado de salida. Consulte Combinación de ensamblados.
IncrustarEl ensamblado de origen se almacena como recurso del destino y se carga en tiempo de ejecución. Consulte Incrustación de ensamblados.
ReferenciaEl ensamblado de origen solo se usa para resolver las referencias del destino.

Babel Desktop elige el tipo por usted. Si el destino hace referencia a la identidad exacta del ensamblado de origen (nombre, versión, configuración regional y token de clave pública), la dependencia nueva es de tipo Combinar; si no, es de tipo Referencia. Para cambiar el tipo, haga clic en la línea de la dependencia, elija Combinar, Incrustar o Referencia en la ventana emergente y haga clic en Aplicar. El comando Ensamblado: añadir dependencia automáticamente… y los comandos Ensamblado: añadir entrada de combinación…, Ensamblado: añadir ensamblado incrustado… y Ensamblado: añadir referencia… de la paleta de comandos añaden dependencias desde un selector de archivos.

Un ensamblado que se usa como entrada de combinación permanece en el diagrama, pero no se ofusca por separado, porque pasa a formar parte del ensamblado con el que se combina.

Orden de ejecución y archivos map

Los anclajes izquierdo y derecho conectan dos destinos para que uno se ejecute antes que el otro. Arrastre desde el anclaje derecho del primer destino hasta el anclaje izquierdo del segundo. Babel Desktop pregunta entonces para qué sirve la conexión:

OpciónEfecto
Solo orden de ejecuciónUna conexión de flujo: el destino A se ejecuta antes que el destino B. No se pasa nada de A a B.
Pasar el archivo de mapUn vínculo de map, dibujado con la etiqueta MAP: A escribe su archivo map XML de renombrado y B lo lee, de modo que B usa los nombres nuevos de los símbolos públicos de A. A se ejecuta antes que B. Consulte Renombrado entre ensamblados.

Un vínculo de map activa Generate Map Out File en el primer destino y añade su archivo map a los Map In Files del segundo. Si el primer destino no define ni una ruta de salida ni una ruta para el archivo map, este se escribe en un lugar fijo junto a su archivo de entrada, por ejemplo BabelOut/Library2.dll.map.xml, y así el segundo destino siempre lo encuentra. Los vínculos de map no se guardan aparte: Babel Desktop los deduce de esos dos ajustes, así que un proyecto escrito a mano o con Babel UI también muestra sus vínculos de map.

Cada nodo muestra su paso, es decir, la posición en la que se ejecuta dentro de su flujo. Un flujo es un grupo de destinos unidos entre sí por conexiones de flujo, vínculos de map o dependencias de combinación, incrustación y referencia. Los destinos que no están unidos entre sí forman flujos distintos. Dentro de un flujo, los destinos se ejecutan en el orden de los pasos y, cuando nada lo determina, en el orden del proyecto. Las conexiones de flujo se guardan en el proyecto como dependencias estándar entre destinos de MSBuild.

Babel Desktop rechaza las conexiones de un destino consigo mismo y las conexiones duplicadas, y no admite una conexión que haga que varios destinos se esperen unos a otros. Si los destinos de un proyecto abierto desde el disco esperan cada uno el archivo map del otro, el proyecto se abre igualmente. Babel Desktop muestra un error que indica el ciclo, por ejemplo Library1.dll → Library2.dll → Library1.dll, y el proyecto no se ejecuta hasta que se quite uno de los vínculos. Para quitar una conexión o un vínculo de map, haga clic en él y pulse Delete o Backspace; Esc cancela una conexión en curso o anula la selección.

Reemplazar una entrada

Para que un destino apunte a una compilación nueva de su ensamblado sin perder sus ajustes, seleccione el nodo y ejecute Ensamblado: reemplazar entrada y conservar ajustes… desde la paleta de comandos. Ensamblado: quitar destino seleccionado quita un destino y sus conexiones.

Comandos de configuración

Tres comandos de la paleta de comandos configuran un proyecto en un solo paso. Añada primero los ensamblados y ejecute después el comando que corresponda a su aplicación.

Paleta de comandos filtrada por Obfuscation: Set, con Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly y Obfuscation: Set level...Paleta de comandos filtrada por Obfuscation: Set, con Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly y Obfuscation: Set level...Paleta de comandos filtrada por Obfuscation: Set, con Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly y Obfuscation: Set level...

Los comandos de configuración en la paleta de comandos

ComandoEfecto
Ofuscación: configurar combinación en el ensamblado principalCombina todos los demás destinos con el ensamblado principal, con lo que el proyecto produce un único archivo de salida. El ensamblado principal es el único .exe del proyecto, o el primer destino cuando no hay ninguno o hay más de uno. Un ensamblado que el motor no puede combinar se deja como está.
Ofuscación: configurar ofuscación pública (todos los ensamblados)Prepara un conjunto de ensamblados que se distribuyen juntos para que se renombren sus símbolos públicos. Cada destino recibe una regla XML llamada obfuscate public y escribe su archivo map de renombrado, y un destino que depende de otro lee el archivo map de este mediante un vínculo de map.
Ofuscación: establecer nivel…Aplica al destino seleccionado uno de los tres niveles de protección.

Los niveles establecen estas opciones y dejan las demás como están:

NivelProtección
LigeroRenombrado de tipos, métodos, campos, propiedades y eventos. El flujo de control, las funciones de cifrado y las protecciones antianálisis quedan desactivados.
EquilibradoRenombrado, ofuscación del flujo de control con el algoritmo goto, cifrado de cadenas y supresión de ILDASM.
MáximoRenombrado, ofuscación del flujo de control con goto, switch, case, if y chained state, cifrado de cadenas con el algoritmo stream, cifrado de valores, cifrado MSIL, detección de manipulación, protección contra depuración y supresión de ILDASM. Cuando la licencia no incluye el algoritmo stream, se usa el cifrado de cadenas predeterminado.

Los dos comandos de configuración omiten los destinos de tipo paquete (.apk, .appx y .xap). Ninguno de los tres se ejecuta mientras hay una tarea en curso o una edición pendiente de aplicar. Modifican el proyecto abierto y no lo guardan, así que antes puede revisar el resultado en el diagrama y en el panel de propiedades. Si aplica un nivel más bajo después de uno más alto, las protecciones adicionales vuelven a desactivarse.

Ajustes del destino

Seleccione un nodo y haga clic en el botón Propiedades, en la parte superior derecha del diagrama, o pulse Enter sobre un nodo seleccionado, para abrir el panel de propiedades. La pestaña Configuración enumera todas las opciones de Babel Obfuscator del destino seleccionado, agrupadas en Renombrado, Flujo de control, Cifrado de código, Optimización, Firma y protección, Archivos y dependencias, Output & diagnostics y Advanced. Escriba en Buscar un ajuste para filtrar la lista.

Panel de propiedades del destino BubbleBurst.exe abierto junto al diagrama, en la pestaña Settings, con el cuadro de búsqueda Find a setting, el grupo Map files con la opción Writes its rename map marcada y el grupo Renaming con Flatten Namespaces, Unicode Normalization y Detect If ObfuscatedPanel de propiedades del destino BubbleBurst.exe abierto junto al diagrama, en la pestaña Settings, con el cuadro de búsqueda Find a setting, el grupo Map files con la opción Writes its rename map marcada y el grupo Renaming con Flatten Namespaces, Unicode Normalization y Detect If ObfuscatedPanel de propiedades del destino BubbleBurst.exe abierto junto al diagrama, en la pestaña Settings, con el cuadro de búsqueda Find a setting, el grupo Map files con la opción Writes its rename map marcada y el grupo Renaming con Flatten Namespaces, Unicode Normalization y Detect If Obfuscated

El panel de propiedades del destino seleccionado

Los ajustes usan los nombres de las opciones de la tarea de MSBuild, por lo que la referencia de la tarea Babel y las páginas de cada protección describen lo que hacen. Cada opción tiene un control adecuado a su tipo: casillas para los conmutadores, listas para los algoritmos, selectores de archivos y de carpetas para las rutas, y editores para los filtros y los mapas de propiedades.

Panel de propiedades en el grupo Code encryption: String Encryption habilitado, Msil Encryption habilitado con el filtro .*, Dynamic Proxy Call Filters con el valor ICollection.* y Value Encryption con int32, int64, single, double y array habilitadosPanel de propiedades en el grupo Code encryption: String Encryption habilitado, Msil Encryption habilitado con el filtro .*, Dynamic Proxy Call Filters con el valor ICollection.* y Value Encryption con int32, int64, single, double y array habilitadosPanel de propiedades en el grupo Code encryption: String Encryption habilitado, Msil Encryption habilitado con el filtro .*, Dynamic Proxy Call Filters con el valor ICollection.* y Value Encryption con int32, int64, single, double y array habilitados

Ajustes de cifrado de código: cifrado de cadenas, MSIL y de valores

Las opciones compuestas, como Control Flow Obfuscation, muestran un control por cada propiedad. La imagen siguiente muestra los conmutadores del flujo de control. El último, chain, activa el algoritmo chained state de la edición Ultimate.

Panel de propiedades filtrado por ControlFlow: el mapa Control Flow Obfuscation con enable, goto, switch, case, if, call y value habilitados, token y underflow deshabilitados, y chain con su valor predeterminadoPanel de propiedades filtrado por ControlFlow: el mapa Control Flow Obfuscation con enable, goto, switch, case, if, call y value habilitados, token y underflow deshabilitados, y chain con su valor predeterminadoPanel de propiedades filtrado por ControlFlow: el mapa Control Flow Obfuscation con enable, goto, switch, case, if, call y value habilitados, token y underflow deshabilitados, y chain con su valor predeterminado

Propiedades de Control Flow Obfuscation

Las contraseñas, como la de una clave de firma o la de un archivo map, se conservan solo durante la sesión en curso. Nunca se escriben en el archivo de proyecto, así que tendrá que introducirlas de nuevo después de reiniciar. Cuando el motor necesita una contraseña durante una ejecución, Babel Desktop la solicita.

Babel Desktop conserva las partes de un archivo .babel que no edita, como los comentarios, las propiedades personalizadas y las tareas de MSBuild personalizadas. No evalúa las importaciones, las condiciones ni las tareas personalizadas de MSBuild: un proyecto que dependa de ellas debe compilarse con MSBuild.

Archivos map

El grupo Archivos map del panel de propiedades reúne los ajustes de los archivos map del destino seleccionado:

  • Escribe su map de renombrado activa o desactiva el archivo map del destino. La ruta que aparece debajo indica dónde se escribe el archivo map, de forma predeterminada junto al ensamblado ofuscado; Cambiar… permite elegir otro archivo.
  • Maps de otros destinos enumera los vínculos de map que terminan en este destino. Haga clic en el nombre de un destino para seleccionarlo.
  • Otros archivos de map enumera los archivos map que este destino lee y que no escribe ningún destino del proyecto, como el de una biblioteca ofuscada en una compilación anterior. Añadir archivo de map… añade uno y Quitar lo quita.

Reglas XML

La pestaña Reglas XML edita las reglas de ofuscación XML en línea del destino seleccionado. El editor resalta el XML, y Validar lo comprueba con el esquema de reglas de Babel e indica la línea y la columna de cada error. Abrir XML carga un archivo de reglas en el editor, Guardar archivo XML escribe el contenido del editor en un archivo y Aplicar al ensamblado guarda las reglas en el destino. Las reglas en línea se guardan en el archivo de proyecto.

Pestaña XML rules del destino con una regla en línea para el ensamblado combinado BubbleBurst.View que asigna IEnumerator.* a la propiedad Dynamic Proxy Call Filters, y los botones Open XML, Validate, Save XML file y Apply to assemblyPestaña XML rules del destino con una regla en línea para el ensamblado combinado BubbleBurst.View que asigna IEnumerator.* a la propiedad Dynamic Proxy Call Filters, y los botones Open XML, Validate, Save XML file y Apply to assemblyPestaña XML rules del destino con una regla en línea para el ensamblado combinado BubbleBurst.View que asigna IEnumerator.* a la propiedad Dynamic Proxy Call Filters, y los botones Open XML, Validate, Save XML file y Apply to assembly

Reglas XML en línea de un destino

Complementos del motor

Los complementos de Babel Obfuscator se definen para cada destino con Complementos del motor: configurar rutas de DLL. Complementos del motor: descubrir nombres de argumentos lee los nombres de los argumentos que declara un complemento, para que pueda rellenarlos. Los complementos son código .NET que se ejecuta dentro del motor, así que use únicamente complementos de su confianza.

Ejecutar el proyecto

Haga clic en Ejecutar proyecto, en la parte superior derecha del diagrama, pulse Ctrl+Enter (Cmd+Enter en macOS) o elija Ejecutar > Ejecutar ofuscación. Salvo que un destino defina su propia ruta de salida, el ensamblado ofuscado se escribe en una carpeta BabelOut junto a cada ensamblado de entrada. Antes de iniciar la ejecución, Babel Desktop comprueba adónde irá la salida. No sobrescribe un ensamblado de entrada, un archivo de claves ni un complemento, y pregunta antes de reemplazar archivos de salida existentes.

El panel Actividad muestra la fase en curso, un indicador de progreso y el registro del motor. La pestaña Registro enumera todos los mensajes que el motor escribe con el Verbose Level del destino, y las advertencias y los errores se recogen además en la pestaña Problemas. Cada nodo de destino indica su estado en el diagrama. Cancelar ejecución detiene la ejecución. Los destinos se ejecutan uno después de otro; cuando un destino falla, los que le siguen no se ejecutan.

Diagrama después de una ejecución: el nodo del destino BubbleBurst.exe aparece como completed, el panel Activity muestra el distintivo Completed, las pestañas Log y Problems con 3 problemas, el 100 por ciento y el final del registro del motor, que termina con el tiempo total transcurrido y 3 advertencias, y el botón Results está habilitadoDiagrama después de una ejecución: el nodo del destino BubbleBurst.exe aparece como completed, el panel Activity muestra el distintivo Completed, las pestañas Log y Problems con 3 problemas, el 100 por ciento y el final del registro del motor, que termina con el tiempo total transcurrido y 3 advertencias, y el botón Results está habilitadoDiagrama después de una ejecución: el nodo del destino BubbleBurst.exe aparece como completed, el panel Activity muestra el distintivo Completed, las pestañas Log y Problems con 3 problemas, el 100 por ciento y el final del registro del motor, que termina con el tiempo total transcurrido y 3 advertencias, y el botón Results está habilitado

Una ejecución completada en el panel Actividad

Después de una ejecución, los botones de la parte superior del panel Actividad abren la carpeta de salida e inician la aplicación ofuscada. Archivo > Mostrar salida en la carpeta y Ejecutar > Ejecutar aplicación ofuscada (Ctrl+F5, Cmd+F5 en macOS) hacen lo mismo. Babel Desktop inicia directamente un ejecutable de Windows, e inicia una aplicación .NET mediante dotnet cuando su archivo .runtimeconfig.json está disponible. No ofrece iniciar una biblioteca.

Puntuación de ofuscación

Después de una ejecución completada, la tarjeta de cada destino muestra una puntuación de ofuscación de 0 a 100, una comprobación rápida de que la ejecución ha aplicado las protecciones esperadas. Deje el puntero sobre el destino para abrir la tarjeta.

Tarjeta del destino BubbleBurst.exe después de una ejecución: puntuación de ofuscación de 92 sobre 100 con la calificación Strong, con las barras Renaming 26 de 30, Control Flow 25 de 25, String Encryption 15 de 15, Code protection 11 de 15 y Anti-analysis 15 de 15, la hora de la última ejecución, el orden de ejecución Flow 1 step 1, 4 dependencias combinadas y la ruta del archivo de entradaTarjeta del destino BubbleBurst.exe después de una ejecución: puntuación de ofuscación de 92 sobre 100 con la calificación Strong, con las barras Renaming 26 de 30, Control Flow 25 de 25, String Encryption 15 de 15, Code protection 11 de 15 y Anti-analysis 15 de 15, la hora de la última ejecución, el orden de ejecución Flow 1 step 1, 4 dependencias combinadas y la ruta del archivo de entradaTarjeta del destino BubbleBurst.exe después de una ejecución: puntuación de ofuscación de 92 sobre 100 con la calificación Strong, con las barras Renaming 26 de 30, Control Flow 25 de 25, String Encryption 15 de 15, Code protection 11 de 15 y Anti-analysis 15 de 15, la hora de la última ejecución, el orden de ejecución Flow 1 step 1, 4 dependencias combinadas y la ruta del archivo de entrada

La puntuación de ofuscación de un destino que combina cuatro ensamblados

La puntuación suma los puntos de cinco capas de protección. Cada barra muestra los puntos que ha obtenido una capa respecto a su máximo; una puntuación baja indica así qué capa falta.

CapaPuntosSe obtienen por
Renombrado30La proporción de símbolos elegibles que se han renombrado
Flujo de control25La proporción de métodos que se han alterado. Los métodos sin bifurcaciones no se tocan, por lo que basta la mitad de los métodos para obtener todos los puntos
Cifrado de cadenas15Las cadenas cifradas
Protección del código15El cifrado MSIL (7), las llamadas mediante proxy dinámico (4) y el cifrado de valores (4)
Antianálisis15La detección de manipulación, la protección contra depuración y la supresión de ILDASM, 5 puntos cada una

La puntuación se califica como Débil por debajo de 35, Aceptable a partir de 35, Buena a partir de 60 y Sólida a partir de 80. Se calcula con las estadísticas de la última ejecución completada del proyecto. Los ensamblados combinados con un destino cuentan para la puntuación de este y no muestran una propia. Un destino que todavía no se ha ejecutado no muestra puntuación.

La puntuación cuenta las protecciones que ha aplicado una ejecución y no dice nada sobre cuánto tiempo resiste el resultado frente a una herramienta concreta. Una puntuación más baja puede ser la correcta: una biblioteca con una API pública conserva sus nombres públicos, por lo que obtiene menos puntos de renombrado.

Ejecución de flujos en paralelo

Un proyecto con varios flujos independientes, como bibliotecas que no se hacen referencia entre sí, puede ofuscarlos al mismo tiempo. Active Ejecutar en paralelo los flujos independientes en Configuración > Ofuscación y elija cuántos flujos se ejecutan a la vez, de 2 a 4. La opción está desactivada de forma predeterminada.

Cada flujo se ejecuta en su propio proceso del motor y, dentro de un flujo, los destinos siguen ejecutándose en orden. Babel Desktop comprueba todo el proyecto antes de que se inicie ningún flujo, igual que en una ejecución única. Mientras los flujos se ejecutan:

  • El indicador de progreso cuenta los destinos completados respecto a los previstos, y cada línea del registro empieza con el nombre de su ensamblado, por ejemplo [Library1.dll].
  • Un destino que falla detiene su propio flujo. Los demás flujos continúan, y la ejecución se da por fallida.
  • Cancelar ejecución detiene todos los flujos.
  • Cuando varios destinos necesitan la contraseña de un certificado, Babel Desktop las pide de una en una e indica el ensamblado que la necesita.

Cada proceso del motor tarda un par de segundos en iniciarse, por lo que la ejecución en paralelo ahorra tiempo con ensamblados grandes. Un proyecto pequeño puede terminar antes si los destinos se ejecutan uno después de otro. Con una licencia flotante, Babel Desktop ejecuta un flujo cada vez.

Herramientas: advertencias de la tarea, en la paleta de comandos, enumera las advertencias de la ejecución en curso, y Herramientas: referencia de advertencias abre el catálogo de códigos de advertencia del motor, con sus descripciones y una función de búsqueda.

Cuadro de diálogo Engine warning reference con un cuadro de búsqueda y una lista de códigos de advertencia como CF0001, CF0002, EI0001 y EM0001Cuadro de diálogo Engine warning reference con un cuadro de búsqueda y una lista de códigos de advertencia como CF0001, CF0002, EI0001 y EM0001Cuadro de diálogo Engine warning reference con un cuadro de búsqueda y una lista de códigos de advertencia como CF0001, CF0002, EI0001 y EM0001

La referencia de advertencias del motor

Resultados de ejecución

Después de una ejecución, el botón Resultados de ejecución de la barra de herramientas del diagrama abre las estadísticas de protección. Elija una ejecución del historial, un ensamblado ofuscado y un informe:

InformeContenido
RenombradoLos tipos, métodos, campos, propiedades y eventos renombrados y totales, con un gráfico de cobertura
Flujo de controlLos métodos alterados, las instrucciones de bifurcación insertadas y las iteraciones, con un mapa de árbol por espacio de nombres y tipo y, cuando se recogen las estadísticas completas, la complejidad ciclomática antes y después de la transformación
Cifrado de cadenasEl algoritmo de cifrado y las cadenas cifradas por método
Cifrado de códigoLos métodos cifrados por espacio de nombres y tipo
Proxy dinámicoLas llamadas redirigidas mediante proxy y los tipos de delegado por método de destino
OptimizacionesLos contadores de eliminación de código muerto y de optimización
Tiempo de ejecuciónLa duración de cada fase del motor

Puede buscar en las tablas y ordenarlas, y profundizar en los mapas de árbol desde el espacio de nombres hasta el tipo. Mostrar salida, Mostrar registro del motor y Mostrar datos estadísticos abren la carpeta de salida, el registro completo del motor y el archivo de estadísticas sin procesar de la ejecución. Babel Desktop conserva los resultados de las últimas 30 ejecuciones.

Estadísticas de protección en la pestaña Renaming: 540 de 630 símbolos renombrados (85,71 por ciento), un gráfico radial de la cobertura por categoría de símbolo y barras con el número de símbolos, los selectores de ejecución y de ensamblado y los botones Show output, Show engine log y Show statistics dataEstadísticas de protección en la pestaña Renaming: 540 de 630 símbolos renombrados (85,71 por ciento), un gráfico radial de la cobertura por categoría de símbolo y barras con el número de símbolos, los selectores de ejecución y de ensamblado y los botones Show output, Show engine log y Show statistics dataEstadísticas de protección en la pestaña Renaming: 540 de 630 símbolos renombrados (85,71 por ciento), un gráfico radial de la cobertura por categoría de símbolo y barras con el número de símbolos, los selectores de ejecución y de ensamblado y los botones Show output, Show engine log y Show statistics data

Estadísticas de renombrado

Estadísticas de protección en la pestaña Control Flow: 234 métodos alterados, 28 990 instrucciones de bifurcación y 5 iteraciones, y un mapa de árbol de los métodos transformados por espacio de nombres, desde BubbleBurst.ViewModel con 58 métodos hasta Thriple.Easing con 8Estadísticas de protección en la pestaña Control Flow: 234 métodos alterados, 28 990 instrucciones de bifurcación y 5 iteraciones, y un mapa de árbol de los métodos transformados por espacio de nombres, desde BubbleBurst.ViewModel con 58 métodos hasta Thriple.Easing con 8Estadísticas de protección en la pestaña Control Flow: 234 métodos alterados, 28 990 instrucciones de bifurcación y 5 iteraciones, y un mapa de árbol de los métodos transformados por espacio de nombres, desde BubbleBurst.ViewModel con 58 métodos hasta Thriple.Easing con 8

Estadísticas del flujo de control

Los archivos de estadísticas contienen nombres de símbolos originales y valores de cadenas. Manténgalos, igual que los archivos map XML, fuera de la aplicación que distribuye.

Descodificar trazas de pila

Para devolver a sus nombres originales las trazas de pila ofuscadas de una aplicación protegida mediante sus archivos map XML, use el Descodificador de pila.

Last updated on