
Extrae los ensamblados administrados (.NET) de un almacén de ensamblados de MAUI Android.
Extrae los ensamblados administrados (.NET) de un almacén de ensamblados de MAUI Android.
Las aplicaciones .NET Android incluyen su código administrado dentro de una biblioteca compartida, normalmente
libassemblies.<abi>.blob.so (versiones anteriores) o libassembly-store.so.
mauidll analiza ese archivo y escribe cada ensamblado que contiene en disco como un
archivo .dll estándar, listo para su inspección en un descompilador como
ILSpy.
La herramienta es un único programa Crystal autocontenido sin dependencias externas. El descompresor LZ4 que necesita está implementado en línea, por lo que no se requiere nada más allá de la biblioteca estándar.
crystal build --release mauidll.cr -o mauidll
./mauidll libassembly-store.so extracted-dlls
El binario producido por crystal build es autocontenido: solo necesita Crystal
en la máquina de compilación, no en ninguna máquina donde se ejecute.
mauidll se compila con el lenguaje Crystal. Si aún no tienes Crystal:
La forma más popular es Homebrew:
brew install crystal
Crystal también está disponible como un tarball universal oficial (Apple Silicon e Intel) desde la página de descargas.
En Debian, Ubuntu y distribuciones relacionadas, instala el repositorio de paquetes oficial y luego el compilador:
curl -fsSL https://crystal-lang.org/install.sh | sudo bash
sudo apt install crystal
Alternativamente, en cualquier distribución que soporte snaps:
sudo snap install crystal --classic
En Arch Linux:
sudo pacman -S crystal shards
crystal build --release mauidll.cr -o mauidll
mauidll fue desarrollado y probado con Crystal 1.20.x. Solo usa la biblioteca
estándar, por lo que cualquier versión razonablemente reciente debería funcionar.
./mauidll <assembly-store.so> [outdir]
| Argumento | Significado |
|---|---|
assembly-store.so | Ruta al almacén, p. ej. libassemblies.arm64-v8a.blob.so |
outdir (opcional) | Directorio de salida, por defecto dlls en el directorio actual |
Ejemplo:
./mauidll /tmp/app64-v8a/libassembly-store.so /tmp/extracted
Las líneas de salida reportan una línea por ensamblado (name: size -> decompressed size, valid PE), seguidas de un resumen como:
Extracted 235 entries, valid PE (MZ) after extraction: 235/235
payload no cargable, que mauidll localiza a través de las cabeceras
de sección ELF (se admiten tanto ELF de 32 como de 64 bits).XABA de 20 bytes: magic, versión, número
de entradas, número de entradas del índice y tamaño del índice.XALZ es un bloque LZ4 sin procesar (no el formato de trama
LZ4) precedido por una cabecera de 12 bytes que incluye el tamaño sin comprimir; cualquier
otra cosa (que comience con MZ) se almacena tal cual.MZ.