الهندسة العكسية هي آلية تعنى بكشف المبادئ التقنية لآلة أو نظام من خلال تحليل بنيته ووظيفته وطريقة عمله. تتم هذه العملية عادةً عن طريق تحليل نظام ما، سواء كان آلة ميكانيكية أو برنامج حاسوبي أو قطعة إلكترونية، إلى أجزاء أو محاولة إعادة تصنيع نظام مشابه له يقوم بنفس الوظيفة التي يقوم بها النظام الأصلي
دوافع الهندسة العكسية:
- العمل البيني.
- فقدان الوثائق المتعلقة بطريقة تصنيع نظام ما.
- تحليل المنتجات لأخذ فكرة عن طريقة عملها، خاصة في حالة الأجهزة والأنظمة التاريخية.
- التجسس العسكري أو التجاري، وذلك بمعرفة خطط وأسرار العدو أو الشركة المنافسة.
- خرق حماية النسخ.
- إنشاء نسخ بدون ترخيص أو بدون موافقة صاحب الأصل.
- التعليم الأكاديمي.
- الفضول لمعرفة طريقة عمل الأشياء.
- التعلم من أخطاء الآخرين، وذلك بتصنيع نظام أفضل من النظام الأول بعد فهم طريقة عمله
الهندسة العكسية في البرمجيات:
تعتبر الهندسة العكسية فرعًا من فروع هندسة البرمجيات، وتهدف إلى فهم البرنامج من الجانب التكويني وكيفية تصرفه. يتضمن ذلك تحليل البرامج واستخراج المعلومات التصميمية منها. يستخدم المطورون أدوات مثل مفكك البرامج (Disassembler) ومحلل البرامج (Decompiler) لتحقيق هذا الهدف
أدوات الهندسة العكسية:
تستخدم الهندسة العكسية أدوات مختلفة لتحقيق أهدافها، ومن بين هذه الأدوات:
- مفكك البرامج (Disassembler): يقوم بقراءة الشفرة الثنائية لبرنامج ما وتحويلها إلى تعليمات قابلة للتنفيذ كنص.
- محلل البرامج (Decompiler): يستخدم عندما لا يتوفر المخطط الأصلي لتصميم المنتج، ويقوم بتحويل الشفرة المصدرية لبرنامج ما إلى تعليمات قابلة للقراءة والفهم