Skip to Content
Nueva versión 12 disponible 🎉
Obfuscator

Primeros pasos

El complemento «Babel Encrypt» es un componente incluido en la edición Ultimate de Babel Obfuscator. Con la edición Enterprise, en cambio, hay que comprarlo por separado. El complemento se distribuye como un archivo de ensamblado llamado «BabelEncrypt.dll» y funciona con la herramienta de línea de comandos de Babel. Para usarlo, basta con indicar la ruta del archivo del complemento en la línea de comandos, de este modo:

babel myapp.exe --plugin BabelEncrypt.dll --stringencryption custom

Donde myapp.exe es el ensamblado de destino que desea ofuscar. El argumento [custom] del cifrado de cadenas es necesario para que babel use el algoritmo que proporciona el complemento en lugar de los algoritmos de cifrado de cadenas integrados.

Argumentos del complemento

El Babel Encrypt Plugin acepta los argumentos opcionales siguientes:

password <string>

Establece la contraseña con la que se cifran los datos de las cadenas. El cifrado se realiza con el algoritmo Triple DES. Si no se especifica, se genera una contraseña aleatoria.

iterations <number>

Número de pasadas de cifrado que se realizan (valor predeterminado: 1).

minStringLength <number>

Si la longitud de una cadena es menor que el valor especificado, la cadena no se cifra. Cuando esta opción vale 0, se cifran todas las cadenas, sea cual sea su longitud; es el comportamiento predeterminado. Con un valor mayor que 0 puede excluir del cifrado las cadenas cortas, lo que puede mejorar el rendimiento o aportar otras ventajas según su caso de uso. Tenga en cuenta que el valor que establezca para la longitud mínima de las cadenas afecta directamente al nivel de ofuscación que se aplica a su ensamblado.

minHashStringLength <number>

Establece la longitud mínima de las cadenas que se cifran con el algoritmo HASH (valor predeterminado: 15).

useLocalVars <true|false>

Indica si se crean variables locales para llamar al método de descifrado (valor predeterminado: false). De forma predeterminada, esta opción vale «false», es decir, el método de descifrado no se llama mediante variables locales del método. Si se establece en «true», el método de descifrado se llama mediante variables locales del método. Esto puede ayudar a alterar aún más el código y a añadir protección al ensamblado ofuscado. El uso de variables locales del método durante el descifrado puede hacer que el código sea más difícil de entender y de someter a ingeniería inversa, ya que la ruta de ejecución es más compleja y menos predecible. Sin embargo, también puede afectar al rendimiento del ensamblado ofuscado, porque las variables locales del método pueden aumentar el uso de memoria y el tiempo de procesamiento necesarios para ejecutar el código.

extraControlFlow <true|false>

Esta opción busca aumentar el nivel de seguridad y evitar que las cadenas cifradas se puedan recuperar fácilmente mediante ingeniería inversa o descompilación. Cuando está activada, se aplica una ofuscación adicional del flujo de control al método que contiene cadenas cifradas, lo que hace que el código quede más alterado y sea más difícil de entender. El valor predeterminado es «false», pero se puede cambiar según el nivel de ofuscación y protección deseado.

checkDeobfuscators <true|false>

La opción de comprobar si hay una herramienta de desofuscación es una función de seguridad de Babel Obfuscator que ayuda a evitar la ingeniería inversa del código ofuscado.

Indica si se comprueba la presencia de una herramienta de desofuscación. Si se detecta un desofuscador, las cadenas no se descifran y el programa falla sin avisar (valor predeterminado: false).

useCodeEncryption <true|false>

Indica si se usa la función de cifrado de código de Babel Obfuscator para cifrar el código de los métodos de descifrado de cadenas. Esta opción solo funciona cuando el cifrado de código está activado (valor predeterminado: false).

dictionary <path|expression>

El archivo de texto especificado contiene una lista de cadenas o de expresiones regulares que determinan qué cadenas no debe cifrar la herramienta de ofuscación. En el archivo, cada línea representa una cadena exacta o un patrón de expresión regular. La herramienta de ofuscación usa esta información para excluir del cifrado las cadenas indicadas. Las expresiones regulares permiten excluir cadenas de una forma más flexible y amplia, mientras que las cadenas exactas garantizan que determinadas cadenas no se cifren, con independencia de los patrones más generales.

Ejemplos

Estos son algunos ejemplos de uso del complemento desde la línea de comandos de Babel Obfuscator.

Protección media

Activa la detección de desofuscadores además de usar la configuración predeterminada del complemento.

babel myapp.exe --plugin BabelEncrypt.dll --stringencryption custom --argument checkDeobfuscators=true

Protección completa

Este ejemplo muestra cómo activar todas las funciones del complemento, con flujo de control adicional en el método que llama al descifrado y con variables locales para llamar al método de descifrado.

babel myapp.exe --plugin BabelEncrypt.dll --msilencryption --stringencryption custom --argument iterations=2 --argument extraControlFlow=true --argument useLocalVars=true --argument useCodeEncryption=true

Usar un diccionario externo

Puede usar un archivo de texto para definir un diccionario de exclusiones. Cada línea puede ser la cadena exacta que se excluye o una expresión regular.

babel myapp.exe --plugin BabelEncrypt.dll --stringencryption custom --argument dictionary=exclusionlist.txt

Contenido del archivo de texto exclusionlist.txt:

.*@acme.com No secret here to encrypt

Configurar Babel Encrypt en DevOps

Si usa el paquete NuGet Babel.Obfuscator en su entorno de DevOps o en cualquier otro sistema de compilación que admita paquetes NuGet, puede incorporar el complemento Babel Encrypt a su proceso de compilación.

Para ello, añada las instrucciones de MSBuild siguientes a su archivo de proyecto:

<ItemGroup> <BabelPlugin Include="$(BabelTaskDir)BabelEncrypt.dll" /> </ItemGroup> <PropertyGroup> <PluginsArguments>iterations=3</PluginsArguments> </PropertyGroup>

Con estas instrucciones, cuando se inicia una compilación en su entorno de DevOps o en su sistema de compilación, se invoca el complemento Babel Encrypt, que añade un cifrado adicional a la ofuscación de código de Babel Obfuscator.

Configurar Babel Encrypt en Babel Desktop

Puede configurar el complemento para un destino desde la interfaz de Babel Desktop en lugar de la línea de comandos:

  1. Seleccione el ensamblado en el diagrama y abra su Configuración.
  2. En Archivos y dependencias, añada la ruta de BabelEncrypt.dll a Plugins.
  3. Ejecute Complementos del motor: descubrir nombres de argumentos desde la paleta de comandos. Babel lee los argumentos que declara el complemento y rellena las claves de PluginsArguments, donde usted escribe sus valores.
  4. Establezca String Encryption en custom para que el motor use el algoritmo del complemento en lugar de los integrados.
  5. Para usar useCodeEncryption, active también MSIL Encryption.

El complemento se ejecuta en el proceso local del motor con los permisos de su cuenta, así que añada únicamente una DLL de complemento de su confianza. Cada ajuste se aplica al ensamblado seleccionado; repita los pasos en cada destino que necesite el complemento.

Last updated on