disrobe؛ جعبهابزار Rust برای باز کردن نرمافزار کامپایلشده
خلاصهٔ کاملتر
تو این ریپازیتوری اومده که disrobe یه سوئیت خط فرمان با Rust ـه و سه کار رو کنار هم انجام میده: دیکامپایل (برگردوندن کد کامپایلشده به سورس)، دیآبفوسکیشن (باز کردن کدی که عمداً ناخوانا شده) و آنپکینگ (بیرون کشیدن باینری اصلی از دل یه packer). کاتالوگش ۱۵ اکوسیستم رو میگیره: پایتون، جاوااسکریپت و تایپاسکریپت، WebAssembly، JVM و اندروید، داتنت، باینری نیتیو، Go، Lua، PHP، Ruby، BEAM، سوئیفت، ActionScript 3 و زبانهای شل.
دستور disrobe auto ورودی رو fingerprint میکنه (یعنی از روی امضای فایل تشخیص میده با چی طرفه) و بعد کل زنجیره رو خودش میچینه، مثل PE -> UPX -> demangle یا APK -> dex -> Java. اگه چیزی درنیاد، به جای حدس زدن همون محدودیت رو گزارش میکنه:
disrobe auto suspect.exe --out recovered/
disrobe identify suspect.exe
disrobe py decompile module.pyc --out src/
چیزی که پروژه رو از بقیه جدا میکنه، برچسبگذاری اعداده. هر رقم دو تا لیبل داره: قدرت مرجع (strong یعنی خروجی با یه مرجع مستقل یا تطابق بایتی سنجیده شده، در برابر coverage-self-reported که خود ابزار داره خودشو میشمره) و تکرارپذیری ([CI] یا [local]). نویسنده عدد بد رو هم پنهان نمیکنه: پایتون در سطح code object روی ۹۶٫۵۱٪ وایمیسه، ولی اگه شرط این باشه که کل ماژول سالم برگرده فقط ۱۲۳ تا از ۲۰۰ ماژول (۶۱٫۵٪) قبول میشن.
بقیهٔ سنجهها هم همین شکلیان: ۸۳۸ از ۸۳۸ اسم تایپ استریپشدهٔ Go برگشته، ۵۷ از ۵۷ تابع WebAssembly زیر wasmtime همارز اجرا شدن، ۱۱۸ از ۱۱۸ کلاس DEX از verifier واقعی جاوا رد شدن و سکشنهای .text و .pdata بعد از آنپک UPX بایتبهبایت با اصل یکیان. بخش Limits هم صادقانهست: محافظهای VM مثل VMProtect و Themida کلید هندلرهاشون رو موقع اجرا میسازن، پس disrobe فقط شناساییشون میکنه و جریان هندلر رو ساختاری میکَنه.
همین محدودیت برای PyArmor نسخهٔ ۳ تا ۵، ionCube و SourceGuardian هم صدق میکنه، چون کلیدشون اصلاً توی فایل نوشته نشده. تو buildهای garble با -trimpath هم seed غایبه، یعنی ساختار و تایپها برمیگردن ولی اسمها فقط یکدست میشن، نه بازیابی. اگه بخوای بدون نصب امتحانش کنی، یه playground هست که پاسها به WebAssembly کامپایل شدن و همهچی سمت مرورگر اجرا میشه، پس فایلی جایی آپلود نمیشه.
نکات کلیدی:
- ۱۵ اکوسیستم تو کاتالوگ، از Python و Android تا BEAM، Lua و ActionScript 3
- پایتون: ۹۶٫۵۱٪ در سطح code object ولی فقط ۱۲۳ از ۲۰۰ ماژول بهطور کامل
- Go: ۸۳۸ از ۸۳۸ اسم تایپ استریپشده؛ WebAssembly: ۵۷ از ۵۷ تابع همارز
- ساخت از سورس فقط به Rust 1.95+ نیاز داره؛ بکاندهای بیرونی مثل Ghidra و jadx اختیاریان
- در برابر رقبا: ۱۸۱ از ۱۸۱ متد JVM کامپایل مجدد شد در مقابل ۱۵۲ از ۱۶۶ برای CFR 0.152
- VMProtect، Themida و PyArmor v3-v5 فقط detect میشن، چون کلیدشون توی فایل نیست




