هندسة البرمجيات العكسية Software Reverse Engineering

اقرأ في هذا المقال


السوق في تطور مستمر ودائما ما تكون المنافسة قوية بين الشركات، لذلك، من الضروري أن تتعلم الشركات الحصول على نتائج عالية الجودة في غضون فترة زمنية قصيرة، هذا ينطبق أيضا على مجال تكنولوجيا المعلومات، الهندسة العكسية للبرمجيات هي مجال ممارسة شائع يسمح بحل المشكلات المماثلة بأفضل طريقة ممكنة، يستخدم هذا النهج للعمل مع كل من المواد والمنتجات البرمجية.

ما هي هندسة البرمجيات العكسية؟

منذ طفولتنا، نعلم أنه من الأسهل فهم كيفية عمل الأشياء من خلال تفكيكها ودراستها، من هنا جاءت فكرة هندسة البرمجيات العكسية، إذ تُعرف هندسة البرمجيات العكسية بأنها دراسة شاملة لبرامج أو وثائق أو كود معينة تهدف إلى فهم مبدأ التشغيل وإعادة إنتاج منتج مشابه دون استنساخه.

بعد الانتهاء من تحليل كود البرنامج، يقوم المطورون بكتابة خوارزمية لهذا البرنامج كـ سودوكود، إذا كان البرنامج يعمل كبرنامج تعريف (Device Driver)، يقوم المطورون بتجميع قائمة مواصفات كاملة للأجهزة التي يهتمون بها، استنادًا إلى الخوارزميات والمواصفات الواردة، يمكن للمطورين تجميع برنامج تشغيل الأجهزة الخاص بهم، ببساطة، عندما تأخذ منتج شخص آخر وتقوم بإنشاء منتج مشابه بعد دراسة آليات عمله.

خطوات هندسة البرمجيات العكسية:

1- جمع معلومات: تركز هذه الخطوة على جمع كل المعلومات حول البرنامج والوثائق الممكنة لتعرّف عليه، على سبيل المثال، وثائق تصميم المصدر.

2- فحص المعلومات: تتم دراسة المعلومات التي تم جمعها في الخطوة الأولى للتعرف على النظام.

3- استخراج الهيكل: تتعلق هذه الخطوة بتحديد هيكل البرنامج على شكل مخطط هيكلي، حيث تتوافق كل عقدة مع بعض الإجراءات الروتينية.

4- تسجيل الوظيفة: أثناء معالجة هذه الخطوة لتفاصيل كل وحدة من وحدات الهيكل، يتم تسجيل الرسوم البيانية باستخدام لغة منظمة، مثل جدول القرار.

5-تسجيل تدفق البيانات: من المعلومات المستخرجة في الخطوة الثالثة والخطوة الرابعة، يتم اشتقاق مجموعة من الرسوم البيانية لتدفق البيانات لإظهار تدفق البيانات بين العمليات.

6- تسجيل تدفق التحكم: يتم تسجيل هيكل التحكم عالي المستوى للبرنامج.

7- مراجعة التصميم المستخرج: تتم مراجعة وثيقة التصميم المستخرجة عدة مرات لضمان الاتساق والصحة، كما يضمن أن التصميم يمثل البرنامج.

8- إنتاج الوثائق: أخيرًا، في هذه الخطوة، يتم تسجيل الوثائق الكاملة بما في ذلك وثيقة (SRS) ووثيقة التصميم والتاريخ والنظرة العامة، وما إلى ذلك، للاستخدام في المستقبل.

أدوات هندسة البرمجيات العكسية:

ستستهلك الهندسة العكسية إذا تم إجراؤها يدويًا، الكثير من الوقت والعمالة البشرية، بالتالي يجب دعمها بأدوات آلية، ومن هذه الأدوات: (CIAO و CIA)، (Rigi)، (Bunch)، (++GEN)، (PBS) .

فوائد هندسة البرمجيات العكسية:

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

المصدر: What is Software Reverse Engineering (SRE) and Which Are its BenefitsSoftware Engineering | Reverse EngineeringSoftware Reverse EngineeringSoftware Reverse Engineering (SRE)


شارك المقالة: