Archivos map XML
Babel Obfuscator usa archivos map XML para asociar los nombres originales, sin ofuscar, de clases, métodos, propiedades, eventos y campos con sus nombres ofuscados. Babel Obfuscator puede generar estos archivos durante el proceso de ofuscación, y se almacenan en el mismo directorio que el ensamblado ofuscado.
Los archivos map XML son importantes porque permiten a los desarrolladores:
- Desofuscar las trazas de pila de las excepciones.
- Ofuscar la interfaz pública de un ensamblado.
Desofuscar la traza de pila
Cuando se produce una excepción en una aplicación ofuscada, la traza de pila contiene los nombres de los símbolos ofuscados, que no son fáciles de leer ni de identificar. Sin embargo, con los archivos map XML los nombres ofuscados pueden convertirse de nuevo en los originales, de modo que los desarrolladores identifican con más facilidad el origen de la excepción y depuran el problema. Por eso los archivos map XML son una herramienta valiosa para los desarrolladores que trabajan con aplicaciones ofuscadas.
Para obtener más información sobre la desofuscación de trazas de pila, consulte Descodificación de trazas de pila.
Ofuscar la interfaz pública
Como los ensamblados .NET suelen hacer referencia a otros ensamblados, incluidas bibliotecas de terceros, es habitual que los nombres de objetos, métodos y propiedades de un ensamblado se usen en otro. Cuando estos ensamblados se ofuscan por separado, el proceso de ofuscación puede cambiar los nombres originales de los objetos y métodos de un ensamblado visibles desde el exterior, con lo que los demás ensamblados que hacen referencia a ellos dejan de funcionar correctamente. La ofuscación de los miembros de un ensamblado visibles desde el exterior suele denominarse renombrado entre ensamblados.
Los archivos map XML permiten mantener las relaciones entre los nombres originales y los ofuscados en varios ensamblados. Cuando se ofuscan varios ensamblados, sus respectivos archivos map XML pueden usarse juntos para conservar las relaciones originales entre los nombres. Así el código ofuscado funciona correctamente incluso cuando lo llaman otros ensamblados que no se han ofuscado.
Configuración de la generación de archivos map XML
La generación de archivos map XML puede configurarse desde la línea de comandos, desde Babel Desktop o, en entornos de compilación, mediante la tarea Babel de MSBuild y el paquete NuGet de Babel Obfuscator.
Línea de comandos
La herramienta de línea de comandos de Babel Obfuscator acepta la opción --mapout para activar la generación de archivos map XML. La sintaxis básica para activar la generación del archivo map es la siguiente:
babel MyApp.exe --mapout [output file]La opción acepta la ruta completa del archivo map XML generado. Si no se indica la ruta, el archivo map XML toma el nombre del archivo de destino original con la extensión «.map.xml» añadida y se guarda en el mismo directorio que el ensamblado ofuscado.
Por ejemplo, si el ensamblado ofuscado se llama «MyApp.exe», el archivo map XML se llamará «MyApp.exe.map.xml».
También puede indicar opciones adicionales para personalizar la generación del archivo map, por ejemplo un formato de codificación de salida distinto para los nombres del archivo map:
babel MyApp.exe --mapout encoding=base64Los formatos admitidos son «none» y «base64». Si no se indica el formato de codificación, babel elige el formato base64 cuando la opción Unicode Normalization está activada.
Tarea Babel de MSBuild
Para activar la generación de archivos map XML en la tarea Babel de MSBuild, establezca en true el atributo GenerateMapOutFile de la tarea. Opcionalmente, puede indicar la ruta del archivo generado con el atributo MapOutFile:
<Babel GenerateMapOutFile="true" MapOutFile="MyAssembly.map.xml" />Si usa el paquete NuGet de Babel Obfuscator en su archivo de proyecto, puede añadirle el siguiente elemento XML para activar la generación del archivo map XML del ensamblado de destino ofuscado:
<PropertyGroup>
<GenerateMapOutFile>true</GenerateMapOutFile>
</PropertyGroup>Puede cambiar la ruta del archivo map XML generado con la propiedad siguiente:
<PropertyGroup>
<GenerateMapOutFile>true</GenerateMapOutFile>
<BabelMapOutFile>MyAssembly.map.xml</BabelMapOutFile>
</PropertyGroup>Babel Desktop
Para activar la generación de archivos map XML en Babel Desktop, seleccione el ensamblado en el diagrama del proyecto y, en el grupo Output & diagnostics del panel de propiedades, active GenerateMapOutFile. Opcionalmente, establezca MapOutFile para elegir dónde se escribe el archivo map y, a continuación, guarde el proyecto.
Una vez activada la generación de archivos map XML, Babel Obfuscator crea un archivo map para el ensamblado de entrada que ofusca, con el mismo nombre que el ensamblado ofuscado pero con la extensión .map.xml. Los archivos map se guardan en la ruta indicada por MapOutFile o junto al ensamblado ofuscado.