Skip to Content
Nueva versión 12 disponible 🎉
ObfuscatorPaquete NuGetHerramienta Babel Obfuscator

Herramienta Babel Obfuscator Ultimate

Babel.Obfuscator.Tool empaqueta la línea de comandos babel como herramienta de dotnet, de modo que puede ejecutar Babel Obfuscator desde un terminal o un script en Windows, Linux y macOS con solo tener instalado el SDK de .NET.

Contenido del paquete

Babel.Obfuscator.Tool es un paquete de herramienta de .NET  que instala el comando babel. Es la misma herramienta de línea de comandos que se distribuye en los paquetes zip babel_net*, con las mismas opciones, y se incluye con la edición Ultimate y con las ediciones de sitio de Babel Licensing (Server y Data Center). El paquete contiene una compilación de la herramienta para cada entorno de ejecución admitido, de .NET 6.0 a .NET 10.0, y la CLI de dotnet elige la que corresponde al SDK del equipo. Cada compilación contiene:

  • babel.dll, la herramienta de línea de comandos, con su configuración de entorno de ejecución.
  • El complemento BabelEncrypt, listo para cargarse con --plugin.
  • Babel.Build.dll, el ensamblado de la tarea Babel de MSBuild, para los scripts de compilación que hacen referencia a la tarea Babel por la ruta del archivo.

Al igual que Babel.Obfuscator, el paquete de la herramienta no está en nuget.org: alójelo en su propia fuente como se describe en Alojar el paquete.

Cuándo usar la herramienta

Use la herramienta cuando quiera ejecutar Babel usted mismo y no como un paso de una compilación de MSBuild:

  • Ofuscar ensamblados ya compilados, por ejemplo binarios de .NET Framework producidos por otro sistema de compilación.
  • Ofuscar muchos ensamblados mediante scripts o por lotes, y automatizar el trabajo con agentes mediante el modo compatible con IA.
  • Ejecutar la herramienta de línea de comandos en equipos y agentes de compilación con Linux y macOS.
  • Usar comandos de utilidad, como descodificar una traza de pila (--stacktrace), comprobar la licencia (--license) o generar un proyecto de MSBuild a partir de una línea de comandos (--makeproject).

La herramienta no sustituye al paquete Babel.Obfuscator en los pipelines de dotnet build y dotnet publish. El SDK de .NET reescribe el IL después de la compilación (resolución de dependencias, recorte, empaquetado en un único archivo, compilación AOT) y un ensamblado tomado de bin, de obj o de la carpeta de publicación ya ha pasado por esos pasos, por lo que no se admite ofuscarlo después. Haga referencia al paquete en su lugar: ejecuta Babel en el punto adecuado dentro de la compilación.

Instalar la herramienta

Herramienta global

Una herramienta global se instala una vez por usuario y está disponible desde cualquier terminal:

dotnet tool install Babel.Obfuscator.Tool -g

Cuando la fuente no figura en un archivo NuGet.config, indíquela explícitamente. El origen puede ser la URL de una fuente o una carpeta local:

dotnet tool install Babel.Obfuscator.Tool -g --add-source ~/NuGet

En Linux y macOS, asegúrese de que la carpeta de herramientas esté en la ruta de búsqueda; de lo contrario, no se encuentra el comando babel:

export PATH="$PATH:$HOME/.dotnet/tools"

Herramienta local

Una herramienta local queda fijada a un repositorio mediante un manifiesto de herramientas, de modo que todos los desarrolladores y agentes de CI ejecutan la misma versión de Babel:

dotnet new tool-manifest dotnet tool install Babel.Obfuscator.Tool

Con esto la herramienta queda registrada en .config/dotnet-tools.json, archivo que se confirma en el repositorio. En cualquier otro equipo, dotnet tool restore instala la versión fijada. Una herramienta local se invoca a través de la CLI de dotnet:

dotnet babel --version

Actualizar y desinstalar

dotnet tool update Babel.Obfuscator.Tool -g dotnet tool list -g dotnet tool uninstall Babel.Obfuscator.Tool -g

Omita -g para una herramienta local. Los mismos comandos se describen en Instalación.

Licencia de la herramienta

La herramienta necesita la misma licencia que el producto. Una herramienta de dotnet no tiene una carpeta de instalación en la que copiar babel.licenses, así que proporcione la licencia a Babel de una de estas formas:

  • Establezca la variable de entorno BABEL_LICENSE_PATH en la ruta completa del archivo de licencia. Es la configuración recomendada en los equipos de desarrollo y en los agentes de compilación:
export BABEL_LICENSE_PATH=~/Babel/babel.licenses
  • Pase --license en cada invocación, con la ruta del archivo de licencia o de una carpeta en la que buscarlo.
  • Pase --license env:BABEL_LICENSE, donde la variable contiene una clave de licencia: es la opción adecuada en los servidores de compilación, donde la clave se guarda en un secreto. Para una licencia flotante, guarde la clave de usuario como floating:<user key>.

babel --license sin argumento muestra la licencia en uso. Recuerde que un archivo de licencia es válido para una sola versión del producto: use el archivo recibido con la misma versión que la herramienta y actualice ambos a la vez.

Usar la herramienta

El comando babel acepta la sintaxis y las opciones documentadas en Línea de comandos y en la Referencia de línea de comandos. Una invocación típica indica el ensamblado que se ofusca, el archivo de salida y las funciones que se activan:

babel MyApp.dll --output obfuscated/MyApp.dll --stringencryption stream --controlflow if=on --controlflow switch=on --iterations 3 --resourceencryption --rules babelRules.xml --mapout

Todas las funciones descritas en este manual están disponibles desde la herramienta: las reglas con --rules, la combinación e incrustación con argumentos de ensamblado adicionales y --embed, los archivos map con --mapin y --mapout, los complementos con --plugin y el descifrador AES administrado con --use encryption=aesmanaged. Con una herramienta local, anteponga dotnet al comando.

Scripts y automatización

Desde la versión 11.7, la línea de comandos tiene un modo compatible con IA pensado para scripts y agentes:

babel MyApp.dll --stringencryption stream --format ndjson --quiet --strict-exit

--format json o ndjson convierte la salida en un flujo legible por máquina y envía los diagnósticos destinados a las personas a la salida de error estándar, --quiet quita el banner y hace que cualquier solicitud interactiva falle de inmediato, y --strict-exit devuelve un código de salida distinto para los argumentos no válidos, la falta del archivo de entrada y los fallos de ofuscación, de licencia y de firma.

Ejecutar en un servidor de compilación

La herramienta encaja en los pipelines que ofuscan los artefactos de compilación en un paso aparte. Con un manifiesto de herramientas confirmado en el repositorio y la fuente configurada en NuGet.config (consulte el ejemplo de GitHub Actions para ver una configuración que se autentica en GitHub Packages), un trabajo de GitHub Actions tiene este aspecto:

steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: dotnet-version: '10.0.x' - name: Restore tools run: dotnet tool restore env: PACKAGES_TOKEN: ${{ secrets.PACKAGES_TOKEN }} - name: Obfuscate run: dotnet babel artifacts/MyLib.dll --license env:BABEL_LICENSE --stringencryption stream --strict-exit env: BABEL_LICENSE: ${{ secrets.BABEL_LICENSE_SECRET }}

Hosts en modo FIPS

Desde la versión 11.8, los binarios de la herramienta están ofuscados por el propio Babel con el algoritmo AES administrado, de modo que babel se inicia en hosts cuyo proveedor FIPS de OpenSSL está defectuoso. Los ensamblados que proteja en esos hosts necesitan igualmente un descifrador administrado propio: use el algoritmo de cifrado de cadenas STREAM y --use encryption=aesmanaged para las demás funciones de cifrado, como se explica en Conformidad con FIPS.

Solución de problemas

  • babel: command not found: la carpeta de herramientas globales no está en la ruta de búsqueda; añada ~/.dotnet/tools a PATH, o use una herramienta local y ejecute dotnet babel.
  • Un mensaje que pide instalar .NET: la compilación seleccionada de la herramienta necesita el entorno de ejecución de .NET correspondiente, de 6.0 a 10.0. Instale ese entorno de ejecución o establezca DOTNET_ROLL_FORWARD=Major para ejecutar la herramienta en un entorno de ejecución más reciente.
  • A valid license could not be found (no se ha encontrado una licencia válida): compruebe BABEL_LICENSE_PATH o el argumento --license y, a continuación, ejecute babel --license para ver qué ha cargado Babel. Un archivo de licencia de otra versión se notifica como no válido.
  • La salida difiere de la de una ejecución de Babel Desktop: Babel Desktop aplica los ajustes guardados en su proyecto .babel, mientras que la herramienta aplica solo las opciones de la línea de comandos. Compare las dos configuraciones, en particular el agente de ofuscación y las reglas.
Last updated on