ما هو علم الهندسة العكسية او الـ Reverse Engineering؟
ما هي الاستخدامات الخاصة بالـ Reverse Engineering في مجال أمن المعلومات؟
ما هي اهم لغه برمجه تحتاج الى تعلمها في هذا المجال؟
اهم الادوات التي تساعدك في الهندسه العكسيه
ما هي طرق واساليب الهندسه العكسيه؟
ما هو علم الـ Reverse engineering؟
يعتبر الـ Reverse Engineering علم ليس مختص فقط بعلوم أمن المعلومات و لكن هو علم يهتم بتحليل البنيه الخاصة بأي Software او Hardware من أجل الوصول اساسيات تصنيعه ومكوناته بشكل كامل و ذلك من خلال إعادة تصنيعه .
ما هي الاستخدامات الخاصة بالـ Reverse Engineering في مجال أمن وتقنية المعلومات ؟
كثير من الاستخدامات مثلا كثير من المستخدمين يستخدمون الـ Cracks و الـ Keygens من أجل استخدام بعض البرامج دون شرائها هل فكرت فى يوم كيف تصنع ؟
الفكرة ان هذه البرمجيات يتم صنعها عن طريق تحليل كل خطوات البرنامج بشكل كامل و معرفة اين يأتي كود الحمايه للبرنامج حتى لا يتم غلقه على جهازك فقط و هنا يكون دوره كمبرمج من اجل عمل الAnti-License Software فى شكل Crack او Keygen
بالطبع ليس هذا الاستخدام الوحيد و لكن هناك العديد من الاستخدامات مثل :
1- Security Auditing فى التدقيق الأمني
2- Product analysis تحليل المنتجات
3- Extremely useful when you lost documentation
فى حالة فقدان المستندات الخاصة ببالبرمجيات
4- Competitive technical intelligence
كثير من المصنعين يستخدمون ال Reverse Engineering من اجل معرفة كيفيه و نقاط ضعف و قوة المنتجات المنافسة .
5- Software Improvement
التطوير المستمر للبرمجيات الخاصة بكل مؤسسة عن طريق التحليل من وجهة نظر عكسيه .
ويمكن تقسيم الهندسه العكسيه الي اقسام عديده ومن ضمنها ..الهندسه العكسيه للبرمجيات
Reverse Code Engineering (RCE)
هي فرع من فروع هندسة البرمجيات، وتتمثل في مجموع التقنيات والأدوات المستعملة للانطلاق من برنامج قيد العمل والوصول إلى نموذج أو مخطط يسمح بفهم التركيب التكويني للبرنامج
الهدف الأساسي يرمي إلى فهم البرنامج من الجانب التكويني وكيفية تصرف البرنامج وذلك ما يسهل على المبرمجين عملية تطوير وصيانة البرامج القديمة وكسر حماية البرامج التي تحتاج إلى ترخيص وأيضا إعادة استعمال بعض الأجزاء في برامج جديدة.
تحتاج إلى خبرة في التعامل مع الذاكرة والمسجلات ووحدة المعالجة المركزية.
لابد أن نعلم جيدا أن الهندسه العكسيه سلاح ذو حدين حيث يمكن ان تستعمل في كسر البرامج الخاصه بالشركات او المبرمجين الاخرين دون شراء ترخيص او شراء تفعيل خاص فيسبب خساره كبيير للشركه او الشخص
او يستخدم في كشف الاخطاء حتى تستطيع ان تقوم بمعالجه هذا الاخطاء بالاعتماد علي التنقيح او ما يعرف بـ Debugging بغرض كشف الاخطاء ومسبابتها وتصحيحها وحل مشاكلها وتستطيع تحديد مدي قوة حمايه البرنامج وقابليته للكسر وهنا تستطيع استخدام الهندسه العكسيه بغرض الحمايه من الكسر
ويوجد كما قلت سابقا اناس تستغل هذا الامر في كسر البرامج او ما يعرف بـ كراك البرامج وكسره ونشره للجميع بهدف عدم القدره على شراءه او نشره لبيان مده قوة الشخص الذي استطاع ان يكسره او للافاده العامه ...
بالطبع لابد من الاعتماد على مجموعه من الأليات والعلوم التي تساعدك فى هذا الامر بالاضافة الـ Debugging:
- Disassembler:
و هو كيفية تحويل البرنامج من لغة Machine Language الى Assembly Language و بالتالي يتم تحليل كيفية يعمل البرنامج مع الـ Resources الخاصة بجهازك .
- Decompiler :
و هو تحويل الـ Code الخاص بأي برنامج الى لغه برمجيه مثل ال C او C++
- Packers or un-packers:
فك الارتباط بين الواجهه التطبيقيه لأي برنامج ويعتمد في ذلك على ان اي برنامج لابد من فك ملفاته خلال عملية الانزال Setup
- Hex Editing:
كيفية الحصول على الـ Binary Code الخاص بالبرنامج .
- Cryptography :
كيفية استخدام التشفير فى اي برنامج ونقاط الضعف التي قد تنتج عن استخدام Encryption Key او Algorithm سهل الكسر
ما هي اهم لغه برمجه تحتاج الي تعلمها في هذا المجال؟
Assembly Language
من اهم لغات البرمجه في هذا المجال ولن نستطيع شرحها في مجرد تغريده بل يجب ان تعرف ان لها العديد من الكتب التي تشرح بيئه عملها وطرق البرمجه بها
بعض اهم ادوات التي سوف تساعدك في مجال الهندسه العكسيه ؟
1 - PEID
2 - OLLYDBG
3 - IDE
4- Immunity Debugger
طرق واساليب الهندسه العكسيه ببساطه؟
1 -Serial Phishing
2 - general reverse engineering
3 - KEYFILING
4 - Code injection
5 - Brute forcing
6 -Patching Reversing
7 - key generator
8 - LOADER Files
تلك من الطرق واساليب الهندسه العكسيه المشهوره وكل اسلوب له آلية عمل مختلفه عن الاخر حتى تصل الى هدفك الاساسي هو كسر برامج بطريقه سليمه بدون تعطيب الملف
لهذا يخسر الكثير من الشركات والمبرمجين الكثير من المال بسبب كسر برامجهم وهذا يمكن ان يدل على شيء هو ضعف الخبره في حمايه البرامج
ويلزم ان يكون المبرمج على علم بمجال الهندسه العكسيه حتي يستطيع ان يحميه و يتم عمل testing بشكل منهجي وهناك العديد من الـ frameworks التي تخدم هذا الأمر مثل الـ SDLC
و ايضا العديد من الـ frameworks التي تخدم الـ testing
مثل
Linear testing , modular based testing , library architecture , keyword-driven , hybrid testing
بقلم:
في حفظ الله ورعايته ورحمته
About Toulay
0 Comments:
إرسال تعليق