ILSpy - مفكك أكواد .NET
ILSpy هي أداة مفتوحة المصدر متصفح تجميع .NET والمفكك. عكس عملية الترجمة، وتحويل لغة Microsoft المتوسطة (MSIL/CIL) إلى C# واضح وعالي المستوى (وغيره من اللغات). إنها أداة مجانية قياسية لفحص وتحليل والهندسة العكسية للملفات الثنائية .NET — من الفرز السريع للبرامج الضارة إلى تصحيح مكتبات الطرف الثالث بدون مصدر. يعمل كتطبيق واجهة رسومية لـ Windows وتطبيق Avalonia متعدد المنصات وملحق VS Code و ilspycmd CLI.
التثبيت
| المتغير | الطريقة |
|---|
| Windows GUI | تحميل المثبت/الضغط من GitHub Releases |
| Cross-platform GUI | بناء AvaloniaILSpy (Linux/macOS) |
CLI (ilspycmd) | dotnet tool install --global ilspycmd |
| VS Code | تثبيت ملحق “ILSpy .NET Decompiler” |
| التحقق CLI | ilspycmd --version |
أساسيات واجهة رسومية
| الإجراء | الطريقة |
|---|
| فتح التجميع | File → Open، أو اسحب .dll/.exe في |
| تحميل التبعيات | يحل ILSpy المجموعات المرجعية تلقائياً |
| التنقل | توسيع الشجرة: assembly → namespace → type → member |
| فك تجميع عضو | انقر فوقه؛ C# يظهر في الجزء الرئيسي |
| تحليل الاستخدامات | Click right → Analyze (من يدعو/يستخدم هذا؟) |
| بحث | Ctrl+F / صندوق بحث للأنواع والأعضاء |
| تغيير إصدار اللغة | اسحب الشريط (C# 1.0 … أحدث) |
| حفظ المشروع المفكك | File → Save Code (تصدير .csproj الكامل) |
تحليل (المراجع المتقاطعة)
| Right-click → Analyze عرض |
|---|
| Instantiated By |
| Used By |
| Assigned By / Read By (fields) |
| Overridden By / Overrides |
| Exposed By |
هذا هو سير العمل RE الأساسي: اختر طريقة مريبة واتبع من يدعوها وما الذي تلمسه.
ilspycmd (سطر الأوامر)
| الأمر | الوصف |
|---|
ilspycmd Assembly.dll | فك تجميع المجموعة بأكملها إلى stdout |
ilspycmd -o out/ Assembly.dll | فك إلى دليل |
ilspycmd -p -o proj/ Assembly.dll | تصدير مشروع قابل للترجمة .csproj |
ilspycmd -t Namespace.Type Assembly.dll | فك تجميع نوع واحد |
ilspycmd -il Assembly.dll | عرض IL الخام بدلاً من C# |
ilspycmd -lv CSharp10_0 Assembly.dll | اضبط إصدار لغة C# |
ilspycmd --nested-directories -p -o out/ A.dll | مرآة المساحات كمجلدات |
ilspycmd -r LIBDIR Assembly.dll | أضف مسار بحث مرجع التجميع |
فحص البيانات الوصفية والموارد
| الهدف | الطريقة |
|---|
| الموارد المضمنة | نقطة الشجرة → Resources؛ استخراج عبر Save |
| جداول البيانات الوصفية | View → “Metadata” (جداول خام، tokens) |
| النصوص/IL | بدل اسحب الزر إلى IL |
| PInvoke/native | مرئي في توقيعات الطريقة |
سير العمل المشتركة
# فرز عينة .NET مريبة: تفريغ مصدر كامل للبحث عن grep
ilspycmd -o sample_src/ suspicious.dll
grep -rin "DownloadString\|FromBase64String\|Process.Start" sample_src/
# استعادة مشروع قابل للبناء من DLL فقدت مصدره
ilspycmd -p -o recovered/ MyLib.dll
# انظر إلى IL الخام عندما يكون فك C# معفاً
ilspycmd -il obfuscated.dll | less
بالنسبة للمجموعات المعفاة بشدة، قم بإقران ILSpy مع deobfuscator (مثل de4dot) أولاً، ثم فكك الملف الثنائي النظيف.
ILSpy مقابل أدوات .NET الأخرى
| الأداة | النوع | ملاحظات |
|---|
| ILSpy | Decompiler + browser | مجاني، مفتوح المصدر، CLI + GUI |
| dnSpy / dnSpyEx | Decompiler + debugger | تحرير وتصحيح المجموعات |
| dotPeek | Decompiler | مجاني (JetBrains)، Windows |
| ILDASM | Disassembler | IL فقط، يأتي مع .NET SDK |
الموارد