
مجموعة أدوات Rust CLI تقوم بفك الترجمة الساكن، وإزالة التشويش، وفك حزم الكود الأصلي، والبايت كود، والسكريبتات، والبرامج الثابتة، وحزم التطبيقات عبر أكثر من 15 نظاماً بيئياً من خلال خط أنابيب تلقائي واحد.
Disrobe هو مُفكِّك تجميع ساكن، ومُزيل تشويش، وفاتح تغليف. يزيل التغليف والتشويش من البرمجيات المُجمَّعة طبقة تلو الأخرى ويستعيد الشيفرة المصدرية أو البايتات الأصلية الكامنة تحتها.
أعطِ disrobe auto ملفًا تنفيذيًا، أو حزمة تطبيق، أو سكربتًا، أو صورة برنامج ثابت (firmware). يُسمّي كل طبقة (مُثبِّت، أرشيف، مُغلِّف، مُجمِّد، حامي، مُشوِّش، بايت كود)، ويزيلها بمرحلة الاستعادة المطابقة، ثم يعمل مجددًا على ما أنتجته تلك المرحلة حتى لا يتعرّف أي مرحلة على ما تبقّى. ثنائي Rust واحد يغطي Python وJavaScript وWebAssembly، وJava وAndroid، و.NET، وشيفرة PE وELF وMach-O الأصلية، وGo وLua وPHP وRuby وErlang وElixir، وActionScript، وسكربتات shell ووحدات ماكرو Office، وتطبيقات React Native وFlutter، والمُثبِّتات، والبرامج الثابتة. يُدرج disrobe catalog 169 عائلة من المُغلِّفات والحُمَاة والمُشوِّشات والبايت كود التي يتعرّف عليها عبر 15 نظامًا بيئيًا.
المحرّكات مدمجة. يُفكِّك بايت كود Python دون تثبيت Python، ولا تحتاج استعادة JavaScript إلى Node.js، ولا تحتاج مُفكِّكات Java وAndroid و.NET إلى JVM أو .NET SDK؛ إذ يُشغِّل jvm decompile وdotnet decompile مُفكِّكًا خارجيًا مثبَّتًا فقط عندما يُسمّيه --backend. لا يُشغِّل Disrobe البرنامج الذي يحلّله إلا إذا مرّرت --allow-dynamic، وهو ينطبق فقط على PyArmor v6 وv7. يُدرج نموذج الأمان المُفسِّرات المحدودة التي تُقيِّم شيفرة مأخوذة من مُدخَل وأدوات المضيف التي يُشغِّلها Disrobe.
إنه مُصمَّم لمحلّلي البرمجيات الخبيثة، والمهندسين العكسيين، والمستجيبين للحوادث، ولاعبي CTF، والباحثين الأمنيين.
الترخيص: Disrobe Source-Available License 1.1. المشاريع الشخصية والهوايات والتعلّم، والبحث الأمني المستقل غير المدفوع، والتعليم والبحث غير الربحي، والصحافة مجانية، وفق ما يعرّفه الترخيص. أي استخدام من قِبَل شركة أو لصالحها يتطلّب ترخيصًا مدفوعًا.
البدء السريع · ما يستعيده · النتائج المقيسة · كيف يعمل · نموذج الأمان · التوثيق
نزّل الأرشيف الخاص بمنصّتك من إصدارات GitHub، وتحقق منه مقابل SHA256SUMS، وضع disrobe (disrobe.exe على Windows) في PATH لديك. ثم شغّل:
disrobe identify suspect.exe # compiler, packer, and protector, with evidence
disrobe auto suspect.exe --out recovered/ # remove the layers Disrobe can recover
disrobe context --out recovered/ # what each pass recovered, and at what confidence
سجل مخرجات identify وخطوة فك الحزمة، تم تشغيلهما على برنامج Rust محزوم بـ UPX ومُودَع في هذا المستودع (corpus/native/packers/upx/hello.packed.nrv2b.exe):
$ disrobe identify hello.packed.exe
format: pe64 (64-bit) subsystem=windows-cui
packer UPX (96%) -> disrobe native unpack
- [section UPX0] UPX characteristic section
- [section UPX1] UPX characteristic section
- [section UPX2] UPX characteristic section
- [byte scan] UPX packer magic
...
$ disrobe native unpack hello.packed.exe --out recovered/hello.bin
native unpack: OK
input: hello.packed.exe
packer: upx
status: Implemented
packed_size: 53248
recovered: 116810 bytes
wrote: recovered/hello.bin
يستعيد اختبار فك الحزم نفس الملف ويقارنه بنسخة البناء الأصلية: قسم .text متطابق بايت ببايت، 73,160 بايت دون أي اختلافات (قياسات فك الحزم).
تغطي أرشيفات الإصدار Windows (x86-64، ARM64)، وmacOS (x86-64، ARM64)، وLinux (x86-64 وARM64 مع glibc، وx86-64 ثابت مع musl). لكل أرشيف حزمة توقيع cosign منفصلة، ويشرح SECURITY.md عملية التحقق. يتطلب البناء من المصدر سلسلة أدوات Rust المثبتة في rust-toolchain.toml (1.96.1؛ الحد الأدنى للإصدار المدعوم هو 1.95) وسلسلة أدوات C للاعتماديات الأصلية:
git clone https://github.com/1-3-7/disrobe
cd disrobe
cargo build --locked --release -p disrobe-cli --bin disrobe
يغطي دليل التثبيت أعلام الميزات والخلفيات الخارجية الاختيارية. شغّل disrobe doctor لفحص 46 إلى 51 أداة خارجية حسب المنصة ومعرفة أي الخلفيات الاختيارية مثبّتة.
يسمّي كل صف الصيغ التي يقرأها Disrobe والحماية التي يزيلها. حيث يُدرج disrobe catalog عائلة، يكون المستوى المعروض هو مستوى الكتالوج. العائلات المذكورة أولاً تُستعاد. العائلات الجزئية تُقشَّر قدر ما يسمح به المُدخل، وتسمّي النتيجة ما تبقّى. العائلات الكشف فقط تُحدَّد، وتذكر النتيجة سبب تعذّر استعادة الباقي، عادةً لأن مفتاحاً ما يوجد فقط في وقت التشغيل. الاسم المكتوب بـالخط العريض يُقيَّم على مخرجات الأداة الحقيقية، الملتزمة في هذا المستودع؛ أما الأسماء الأخرى فتُقيَّم على عينات كُتبت للاختبارات، أو تُكتشف فقط. كل نظام بيئي يرتبط بدليله. يسمّي عمود Evidence كل صف: real يربط نتيجة أو اختباراً يقيّم مخرجات المُصرِّف أو الأداة الحقيقية، وsynthetic يسمّي ما يُقيَّم فقط على مُدخلات بُنيت للاختبارات، وclaimed يسمّي ما لا يختبره أي اختبار.