
Extrahieren Sie die verwalteten (.NET) Assemblies aus einem MAUI Android Assembly Store.
Extrahiert die verwalteten (.NET) Assemblies aus einem MAUI-Android-Assembly-Store.
.NET-Android-Apps liefern ihren verwalteten Code in einer Shared Library aus, üblicherweise
libassemblies.<abi>.blob.so (ältere Versionen) oder libassembly-store.so.
mauidll parst diese Datei und schreibt jede darin enthaltene Assembly als
standardmäßige .dll-Datei auf die Festplatte, bereit zur Untersuchung in einem Decompiler wie
ILSpy.
Das Tool ist ein einzelnes, in sich geschlossenes Crystal-Programm ohne externe Abhängigkeiten. Der benötigte LZ4-Decompressor ist inline implementiert, sodass nichts über die Standardbibliothek hinaus erforderlich ist.
crystal build --release mauidll.cr -o mauidll
./mauidll libassembly-store.so extracted-dlls
Die von crystal build erzeugte Binärdatei ist in sich geschlossen: Sie benötigt Crystal
nur auf dem Build-Rechner, nicht auf einem Rechner, auf dem Sie sie ausführen.
mauidll wird mit der Sprache Crystal kompiliert. Falls Sie Crystal noch nicht haben:
Der beliebteste Weg ist Homebrew:
brew install crystal
Crystal ist auch als offizielles universelles Tarball (Apple Silicon und Intel) von der Download-Seite verfügbar.
Installieren Sie auf Debian, Ubuntu und verwandten Distributionen das offizielle Paket- Repository und dann den Compiler:
curl -fsSL https://crystal-lang.org/install.sh | sudo bash
sudo apt install crystal
Alternativ, auf jeder Distribution, die Snaps unterstützt:
sudo snap install crystal --classic
Auf Arch Linux:
sudo pacman -S crystal shards
crystal build --release mauidll.cr -o mauidll
mauidll wurde mit Crystal 1.20.x entwickelt und getestet. Es verwendet nur die Standard-
bibliothek, sodass jede einigermaßen aktuelle Version funktionieren sollte.
./mauidll <assembly-store.so> [outdir]
| Argument | Bedeutung |
|---|---|
assembly-store.so | Pfad zum Store, z. B. libassemblies.arm64-v8a.blob.so |
outdir (optional) | Ausgabeverzeichnis, standardmäßig dlls im aktuellen Verzeichnis |
Beispiel:
./mauidll /tmp/app64-v8a/libassembly-store.so /tmp/extracted
Die Ausgabezeilen melden eine Zeile pro Assembly (name: size -> decompressed size, valid PE), gefolgt von einer Zusammenfassung wie:
Extracted 235 entries, valid PE (MZ) after extraction: 235/235
payload-Abschnitt, den mauidll über die ELF-Abschnitts-
header lokalisiert (sowohl 32- als auch 64-Bit-ELF werden unterstützt).XABA-Header: Magic, Version, Anzahl der
Einträge, Anzahl der Indexeinträge und Indexgröße.XALZ beginnt, ist ein roher LZ4-Block (nicht das LZ4-Frame-Format),
dem ein 12-Byte-Header vorausgeht, der die unkomprimierte Größe enthält; alles
andere (beginnend mit MZ) wird unverändert gespeichert.MZ-PE-Signatur beginnen.