
استخرج تجميعات (.NET) المُدارة من مخزن تجميعات MAUI Android.
استخرج التجميعات المُدارة (.NET) من مخزن تجميعات MAUI Android.
تشحن تطبيقات .NET Android الكود المُدار الخاص بها داخل مكتبة مشتركة، عادةً
libassemblies.<abi>.blob.so (الإصدارات الأقدم) أو libassembly-store.so.
يقوم mauidll بتحليل هذا الملف وكتابة كل تجميع يحتويه على القرص كملف
.dll قياسي، جاهز للفحص في مُفكِّك مثل
ILSpy.
الأداة عبارة عن برنامج Crystal واحد مكتفٍ ذاتيًا بدون أي تبعيات خارجية. مُفكِّك ضغط LZ4 الذي يحتاجه مُنفَّذ داخليًا، لذا لا يُطلب شيء يتجاوز المكتبة القياسية.
crystal build --release mauidll.cr -o mauidll
./mauidll libassembly-store.so extracted-dlls
الملف التنفيذي الناتج عن crystal build مكتفٍ ذاتيًا: يحتاج Crystal
فقط على جهاز البناء، وليس على أي جهاز تشغّله عليه.
يُترجَم mauidll بلغة Crystal. إذا لم يكن لديك Crystal بعد:
الطريقة الأكثر شيوعًا هي Homebrew:
brew install crystal
Crystal متاح أيضًا كحزمة tar عالمية رسمية (Apple Silicon و Intel) من صفحة التنزيلات.
على Debian وUbuntu والتوزيعات ذات الصلة، ثبّت مستودع الحزم الرسمي ثم المُترجِم:
curl -fsSL https://crystal-lang.org/install.sh | sudo bash
sudo apt install crystal
بدلاً من ذلك، على أي توزيعة تدعم snaps:
sudo snap install crystal --classic
على Arch Linux:
sudo pacman -S crystal shards
crystal build --release mauidll.cr -o mauidll
طُوِّر mauidll واختُبِر مع Crystal 1.20.x. يستخدم المكتبة القياسية
فقط، لذا يجب أن تعمل أي إصدار حديث معقول.
./mauidll <assembly-store.so> [outdir]
| Argument | Meaning |
|---|---|
assembly-store.so | Path to the store, e.g. libassemblies.arm64-v8a.blob.so |
outdir (optional) | Output directory, defaults to dlls in the current directory |
مثال:
./mauidll /tmp/app64-v8a/libassembly-store.so /tmp/extracted
تُبلِّغ أسطر المخرجات عن سطر واحد لكل تجميع (name: size -> decompressed size, valid PE)، يتبعها ملخّص مثل:
Extracted 235 entries, valid PE (MZ) after extraction: 235/235
payload
غير القابل للتحميل، والذي يحدده mauidll عبر ترويسات أقسام ELF
(كلٌّ من ELF 32-بت و64-بت مدعوم).XABA بحجم 20 بايت: السحر، الإصدار، عدد
المدخلات، عدد مدخلات الفهرس وحجم الفهرس.XALZ
هو block LZ4 خام (وليس صيغة إطار LZ4) مسبوق بترويسة بحجم 12 بايت
تتضمن الحجم غير المضغوط؛ أي شيء آخر (يبدأ بـ MZ) يُخزَّن كما هو.MZ.