الفريق العربي للهندسة العكسية
الهندسة العكسية لتطبيقات .NET باستخدام dnSpy - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات الهندسة العكسية - Reverse Engineering Forums (https://www.at4re.net/f/forum-4.html)
+--- قسم : البرامج و أدوات الهندسة العكسية - RCE Tools (https://www.at4re.net/f/forum-29.html)
+---- قسم : برامج الدوت نت - Dot Net Reversing Tools (https://www.at4re.net/f/forum-42.html)
+---- الموضوع : الهندسة العكسية لتطبيقات .NET باستخدام dnSpy (/thread-5090.html)



الهندسة العكسية لتطبيقات .NET باستخدام dnSpy - islam - 22-03-2026

? مقدمةالهندسة العكسية (Reverse Engineering) في بيئة .NET Framework تعني تحليل الملفات التنفيذية (EXE / DLL) لفهم كيفية عملها داخليًا دون توفر الكود المصدري.
السبب الرئيسي لسهولة هذه العملية نسبيًا في .NET هو أن الكود لا يُحوَّل مباشرة إلى Machine Code، بل إلى IL (Intermediate Language)، وهو تمثيل وسيط قابل لإعادة البناء.

? كيف يعمل برنامج .NET داخليًا؟عند كتابة كود C#:

 if (isValid)
RunApp();يتم تحويله إلى:
  • IL Code (لغة وسيطة)
  • ثم يُنفَّذ بواسطة CLR (Common Language Runtime)
? هذه الطبقة الوسيطة هي ما يسمح بأدوات الهندسة العكسية بإعادة إنتاج الكود الأصلي بشكل قريب جدًا.

?️ الأداة الأساسية: dnSpydnSpy هو أحد أقوى أدوات:
  • Decompilation (تحويل IL إلى C#)
  • Debugging (تشغيل البرنامج خطوة بخطوة)
  • Editing (تعديل الكود داخل الـ EXE مباشرة)

⚙️ خطوات العمل باستخدام dnSpy1️⃣ فتح الملف
  • افتح dnSpy
  • اسحب ملف:

 WindowsFormsApplication2.exe

2️⃣ استكشاف الهيكلستجد:
  • Namespaces
  • Classes
  • Methods
مثال:

 Program
└── Main()
Form1
└── button1_Click()

3️⃣ قراءة الكودdnSpy يعيد الكود إلى C#:

 private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "1234")
MessageBox.Show("Valid");
}? هنا فهمت منطق التفعيل بسهولة

4️⃣ تحليل IL (للمستوى المتقدم)يمكنك مشاهدة:
  • IL Code
  • Stack operations
  • Low-level behavior

5️⃣ التعديل (Patching)تقدر تعدل الكود مباشرة:

 if (true)
MessageBox.Show("Valid");ثم:
  • Compile داخل dnSpy
  • حفظ التعديلات

?️ الحماية ضد الهندسة العكسية? أدوات الحماية:
  • Dotfuscator
  • ArmDot .NET Obfuscator
? تقنيات الحماية:
  • Obfuscation (تشويش الأسماء)
  • Control Flow Obfuscation
  • String Encryption
  • Code Virtualization (أقوى نوع)

⚠️ التحديات أثناء التحليلعند وجود حماية:
  • الكود يصبح غير مقروء
  • أسماء مثل:

 a.b.c.d()
  • أو تعليمات معقدة جدًا

? استخدامات الهندسة العكسية
  • فهم برامج قديمة بدون سورس
  • تحليل البرمجيات الخبيثة (Malware Analysis)
  • اختبار الأمان (Security Testing)
  • التعلم من مشاريع الآخرين

⚖️ الجانب القانوني
  • ✔ مسموح: التعلم، البحث، البرامج المفتوحة
  • ❌ ممنوع: كسر حماية برامج مدفوعة أو التعديل عليها بدون إذن

? خلاصة احترافيةبيئة .NET تجعل الهندسة العكسية:
إقتباس :سهلة نسبيًا مقارنة باللغات Native مثل C++
لكن مع استخدام أدوات الحماية الحديثة:
إقتباس :تتحول العملية من "قراءة كود" إلى "تحليل سلوك"