دورة الهندسة العكسية من الصفر حتى الاحتراف - نسخة قابلة للطباعة +- الفريق العربي للهندسة العكسية (https://www.at4re.net/f) +-- قسم : منتديات الهندسة العكسية - Reverse Engineering Forums (https://www.at4re.net/f/forum-4.html) +--- قسم : الهندسة العكسية - Reverse Code Engineering (https://www.at4re.net/f/forum-19.html) +--- الموضوع : دورة الهندسة العكسية من الصفر حتى الاحتراف (/thread-2683.html) الصفحات:
1
2
|
دورة الهندسة العكسية من الصفر حتى الاحتراف - ehab85 - 06-04-2021 الدرس الأول: رحلة عبر عالم الهندسة العكسية
هل تساءلت يوماً كيف تعمل البرامج؟ ما هي الأسرار التي تخفيها أكوادها؟ هل ترغب في اكتساب مهارة خارقة تمكنك من تحليل أي برنامج وفهم سلوكه؟ إذا كان الأمر كذلك، فهذا الدرس لك! سنغوص معا في رحلة شيقة عبر عالم الهندسة العكسية، حيث سنكتشف أسرار البرامج ونفكك رموزها، ونعيد صياغة حكاياتها. ما هي الهندسة العكسية للبرمجيات؟ هي عملية تحليل برنامج (Software) موجود مسبقاً لفهم كيفية عمله، ويشمل ذلك فهم بنية البرنامج، والخوارزميات المستخدمة، وكيف يتفاعل مع نظام التشغيل، وكيف يتعامل مع البيانات وانتقالها في المعالج والذاكرة خطوة بخطوة.
يمكن استخدام هذه المعلومات لأغراض مختلفة، مثل تحسين البرنامج، أو إيجاد ثغرات أمنية، أو محاولة إعادة إنشاء الكود الاصلي (Source code) الذي تم ترجمته (interpret) او تجمعيه (compiled) في ملف (byte-code) أو ملف ثنائي (binary) وتسمى ايضاً ملفات تنفيدية (executable file) ويكون في ويندوز بامتداد exe و bin وفي ماك بامتداد app وفي اندرويد بامتداد apk... وغيرهم
يكتب المبرمج في البداية برنامجًا، عادةً بلغة عالية المستوى مثل C ++ أو Visual Basic (أو لا سمح الله، دلفي). ولأن الكمبيوتر لايتحدث هذه اللغات بطبيعته، يتم ترجمة الكود الذي كتبه المبرمج بواسطة (compiler) ولمرة واحدة الى لغة الآلة، وهي اللغة التي يفهمها الكمبيوتر، ويكون ملف البرنامج جاهز للتفيذ في المعالج.
مترجمات (interpreter) بعض لغات البرمجة مثل: Java و .NET تقوم بترميز الكود في ملف (Byte-code) مسبقا، بينما لغة Python تترجم في وقت التشغيل، ولا يمكن تشغيل الملف مباشرة في المعالج CPU ونحتاج الى مفسر او مترجم يعمل مثل جهاز افترضي (virtual machine) يقوم بترجمة الاوامر الى لغة الآلة وتنفيذها في كل مرة نشغل فيها البرنامج، ولذلك تطبيقات هذه اللغات أبطأ في التنفيذ احياناً، ولكن برامجها غير مقيدة بنوع المعالج او نظام التشغيل (OS).
تنقسم الهندسة العكسية لبرامج الكمبيوتر الى 3 اقسام:
اصبحت عملية تفكيك الكود (Decompilation) اصعب بسبب عمليات الحماية مثل التشفير والتشويش، لذلك يتم الاتجاه في بعض الحالات الى كسر الحماية عن طريق الوصول الى Native code وهو الكود الغير مشفر أثناء تنفيذه في CPU او memory، ومع ذلك فإن 97% من التطبيقات البرمجية تحتوي على ثغرات أمنية ويمكن فك الملف الثنائي او (Byte-code) والوصول الى كود المصدر. معلومة: اول عملية هندسة عكسية تمت لنظام BIOS الذي صممته شركة IBM. ما الفائدة من الهندسة العكسية ؟
ماهو المطلوب لمتابعة دورة الهندسة العكسية ؟
الهندسة العكسية تتطلب منك تعلم لغة الاسمبلي assembly وأن تعرف قليلاً على لغة الآلة machine واذا اردت ان تكون محترفاً يجب عليك فهم عمل المعالج والذاكرة والنواقل Bus يعني تحتاج دورة في (Computer architecture) ويلزمك ان تتعلم بعض خوارزميات التشفير والضغط واكتشاف وتصحيح الاخطاء يعني تحتاج دورة في (Information theory) ويلزمك ان تتعلم عن انظمة التشغيل مثل: انظمة الملفات وإدارة العمليات والذاكرة يعني دورة في (Operating systems) بعد ذلك يلزمك تعلم ادوات الهندسة العكسية مثل: IDA Pro و Ghidra و Radare2 ومع الممارسة ستصبح محترف. نصائح مهمة
الدرس الثاني سنشرح فيه ادوات الهندسة العكسية. تحياتي: إيهاب ازطّاف، يفرن، ليبيا RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - ehab85 - 07-04-2021 الدرس الثاني - أ
شرح مفاهيم الهندسة العكسية للبرمجيات أ. تعريفات مهمة للمبتدئين: 1. ملف (Byte-code): هو ملف يحتوي على تعليمات برمجية تم تحويلها من لغة برمجة عالية المستوى إلى لغة آلة يمكن للكمبيوتر فهمها وتنفيذها مباشرة. 2. ملف (Binary-code): هو ملف يحتوي على تعليمات برمجية بلغة الآلة تم تحويلها من لغة برمجة عالية المستوى إلى سلسلة من الأرقام الثنائية (0 و 1) يمكن للكمبيوتر فهمها وتنفيذها مباشرة. 3. Compilation: هي عملية تحويل لغة برمجة عالية المستوى (مثل C++ أو Java) إلى لغة الآلة. يتم ذلك باستخدام مترجم (Compiler) يقوم بترجمة كل سطر من كود المصدر إلى تعليمات لغة الآلة. 4. Compiler: هو برنامج يقوم بتحويل كل سطر من كود المصدر (Source code) المكتوب بلغة برمجة عالية المستوى (مثل C++ أو Java) إلى ملف (Byte-code) أو (Binary-code) يمكن للكمبيوتر فهمه وتنفيذه مباشرة وتسمى هذه العملية باسم Compilation.
وهذه ادوات تستخدم لتجميع تعليمات البرمجة المكتوبة بلغة Assembly إلى ملف (Binary-code) وكلها تدعم معمارية معالجات Intel x86.
8. Patch: هو تحديث لبرنامج لإصلاح خطأ أو إضافة ميزة جديدة ويستخدم برنامج يسمى Patcher لتطبيق Patch على برنامج آخر. 9. Hacking: هو عملية اختراق نظام كمبيوتر أو شبكة للوصول إلى بيانات أو وظائف غير مصرح الوصول لها ويعرف الاشخاص الذين يقومون بهذا الاختراق باسم Hackers ومن أشهر البرامج المستخدمة: Nmap و Metasploit و Wireshark و John the Ripper و Aircrack-ng و Burp Suite و Social Engineering Toolkit. 10. Cracking: هو عملية كسر حماية برنامج للوصول إلى وظائفه و بياناته و تغييرها ويعرف الاشخاص الذين يقومون بهذا باسم Crackers ويستخدمون ادوات وبرامج سنذكرها لاحقاً. 11. Assimilation: عملية دمج برنامج مع برنامج آخر لإنشاء برنامج جديد. ب. أدوات الهندسة العكسية: ماهي الادوات المستخدمة في الهندسة العكسية ؟ لتصبح خبير في أمن المعلومات والهندسة العكسية تحتاج إلى معرفة الأدوات المستخدمة فيها وكيفية عملها. وفيما يلي شرح لانواعها. 1. Disassemblers / Decompilers هي ادوات تقوم بتحويل ملف (Byte-code) او ملف (Binary-code) من لغة الآلة في حالة اللغات التي تستخدم Assembler او compiler او Interpreter الى احدى لغات البرمجة ذات المستوى الأعلى سواء الثاني او الثالث مثل: Assembly او C++ او Java او Delphi او C وذلك حسب امكانية البرنامج وهناك برامج متخصصة في إعادة الكود الى لغة معينة. تقوم هذا البرامج باستعادة الأوامر والبيانات والوظائف والسلاسل النصية والمتغيرات التي تم تمريرها الى لغة برمجة يمكن للانسان فهمها يعني انها تقوم بعكس عملية Assembler و Compilation ومن أشهر هذه الادوات: ▣ Disassemblers: هو برنامج يقوم بتحويل لغة الآلة إلى لغة الاسمبلي.
2- Reskin: هي عملية تغيير المظهر والواجهة الرسومية لبرنامج (GUI) مثل تغيير الألوان والأيقونات والخطوط والتخطيطات، دون تغيير وظائف البرنامج الأساسية وتستخدم الادوات التالية لعمل التعديلات:
3. Debuggers
ادوات تقوم بتحليل الكود أثناء تشغيله وتنفيذه خطوة خطوة وسطر سطر ومتابعة التدفق البرمجي والتفاعل بين الكائنات المختلفة في البرنامج، وإيقافه عند نقاط معينة (Break point) لمعرفة كيفية عمل البرنامج وكيف تتدفق البيانات في الذاكرة وتساعد في تصحيح الأخطاء البرمجية (Bugs) داخل الكود ومعرفة ما به من ثغرات وبعض الادوات تسمح بتغييرر تعليمات معينة في الكود ثم تشغيلها مرة أخرى مع تطبيق هذه التغييرات. والادوات التالية تعتبر قوية لتحليل ملفات (Binary-code) و (Byte-code) وفهم سلوك البرنامج:
4. Hex editors
هي برامج تسمح بتحرير وعرض مختلف أنواع الملفات بما في ذلك الملفات التنفيذية (Binary-code) و (Byte-code) وكذلك وملفات النصوص والصور وغيرها وتعرضها على شكل (Hexadecimal). وتمكنك من البحث في اكود الملف والنسخ واللصق والحذف والتعديل طبعاً، ومن هذه البرامج:
5. PE viewers/editors
بدء من Windows NT 3.1 فان كل ملف ثنائي مثل: (acm و ax و cpl و dll, .drv و efi و exe و mui, .ocx و scr و sys و tsp) يحتوي في بدايته على بيانات تخبر محمل نظام التشغيل (OS loader) بكيفية اعداد البرنامج وتهيئته وتعرف هذه الملفات باسم (Portable Executable) واختصارها PE. انها تخبر محمل نظام التشغيل بمقدار الذاكرة التي سيتطلبها الملف البرمجي، وما هو دعم مكتبات DLL التي يحتاج البرنامج لاستعارة التعليمات البرمجية منها، كما يحتوي معلومات حول API ومربعات الحوار وما إلى ذلك. وفي عالم الهندسة العكسية هذه المعلومات حول الملف مهمة للغاية، فمن خلالها نستطيع اكتشاف نوع الملف، وعند تعديل هذه المعلومات تستيطع جعل البرنامج يفعل شيء مختلف عما صمم له في البداية، او عكس البرنامج والعودة لما كان عليه في الأصل (الحماية جعلت الكود صعب الفهم). هناك ادوات مختلفة لتعديل وعرض PE Header منها:
. 6. أدوات تحليل الذاكرة:
هو خادم وكيل يستخدم لتصحيح أخطاء التطبيقات التي تتصل بالإنترنت وهناك برامج تقوم بالتحكم ومراقبة الاتصال وانتقال البيانات بين التطبيقات في جهاز الكمبيوتر (client) والخادم (server) سواء في الشبكة المحلية او الانترنت ومن اشهر هذا الادوات: Fiddler و Netlimiter. 9. System Monitoring tools وهناك هي مجموعة ادوات تمكننا من أداء نظام الكمبيوتر وسير تنفيذ الاوامر وتدفق البيانات داخلة عند تشغيل برنامج ما ومعرفة ما يغير التطبيق في النظام؛ هل هناك مفاتيح تسجيل تم إنشاؤها؟ هل هناك ملفات .ini تم إنشاؤها؟ هل تم انشاء عمليات منفصلة، وهذا ادوات تستخدم عادتاً لدراسة البرامج الضارة كالفيروسات ومن أمثلة أدوات مراقبة النظام هي: Procmon و Regshot و Process Explorer و Task Manager و Performance Monitor. كوب قهوة وسيجارة سوف نتحدث عن باقي الادوات في الدرس الثاني - ب -------------------------------- ملاحظة هامة: الكثير من ادوات الهندسة العكسية اصبحت تقوم بمهام ووظائف متنوعة وتجمعها في برنامج واحد حيث يمكن اضافة Plugin مثل Ret sync التي يمكننا من عمل debugging متزامن وتضاف لمعظم برامج التصحيح، واضافة Lighthouse و ClassInformer و ida-x86emu...وغيرها الكثير. تحياتي لكم: إيهاب ازطّاف، يفرن، ليبيا RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - ehab85 - 08-04-2021 الدرس الثاني - ب ما هو الفرق بين Decompiler و Disassembler ؟ يخلط الكثيرين بين كلمة decompiler و disassembler ويستخدم البعض الكلمتين بالتبادل رغم ان هناك فروق بينهما كما سنبين.
بعض الادوات او البرامج المتوفرة مثل (IDA و JEB ) بها decompiler و disassembler بمعنى تمتلك القدرة على تحويل الكود الى لغات المستوى الثاني والثالث كما تتوفر على خاصية debugging لتحليل الكود وتتبع تدفق البيانات. ماهو المصحح Debugger ؟ debugging: هو فن البحث عن الأخطاء في البرامج ومعالجتها. تسمح مصححات الأخطاء للمستخدم بعرض حالة تشغيل البرنامج وتغييرها وتمكننا من تتبع سير تنفيذ البرنامج وتدفق البيانات داخل المعالج والذاكرة خطوة بخطوة حيث انه يمتاز بخاصية Breakpoints. يستخدم المصحح لتحليل التعليمات البرمجية بشكل ديناميكي (dynamic) يعني أثناء عمل البرنامج، ومن امثلتها: gdb, x64dbg. RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - ehab85 - 15-04-2021 الدرس الثالث- أ 7 - ادوات التشفير وفك التشفير. نتيجة تعرض البرامج الى عملية Reskin و cracking و decompiler و disassembler لجأ اصحابها الى تشفيرها (encryption) لحماتها من الـ cracker والوصول الى source code او التعديل عليه، وكذلك يقوم الـ Hackers بتشفير برامجهم (الضارة) لمنع محللي البرامج من تفكيكها ومعرفة آلية عملها وتعقيد عملية التحليل الاستقصائي لها، ويوضع كود فك التشفير الذاتي وكذلك فك الضغط الذاتي في (PE header)، ويستخدم لتشفير الكود المصدري أو إخفاءه أو تعديله عدة برامج منها: وظائف واستخدامات أدوات حماية البرامج: Themida و Enigma Protector و Flare و mrip و PC Guard و Armadillo و ASProtect و PECRYPT32 و CodeCrypt و tElock و NFO و PCPEC و PELOCKnt و PE-PROTECT و PE-Encrypter و VGCrypt و PE password protector و PE-Lock و LameCrpyt. ملاحظة: ادوات التشفير سالفة الذكر جميعها تهدف للحماية من قرصنة البرامج والهندسة العكسية باخفاء الكود المصدر للبرنامج وجعله صعب التحليل او التعديل، وهي تدعم أنظمة تشغيل Windows و Linux و macOS وتستخدم خوارزميات تشفير واحدة او متعددة من خوارزميات: Blowfish او RC4 او AES او Twofish او Serpent او CAST-128 او RSA و MD5. معلومة: محللي البرامج والهاكرز المحترفين قادرون على استخدام أدوات متقدمة لتحليل الرأس البرمجي وفك تشفير البيانات. ما الفرق بين التشفير والحزم والضغط ؟ Compression: هي عملية ضغط البيانات لتقليل حجمها وتوفير مساحة التخزين أو تحسين كفاءة النقل عبر تقليل استهلاك النطاق الترددي (Bandwidth) عند عملية ارسال البيانات في شبكة الانترنت. الضغط يحول البيانات من شكلها الاصلي الى شكل أخر، ويمكن استعادة شكل البيانات الاصلي بسهولة عن طريق وضع دالة function في الـ Header تقوم بعملية فك ضغط البرنامج تلقائيا عند التشغيل (self-decompressing). خوارزميات ضغط الملفات؟
Packing: عملية حزم البرامج، هي عبارة عن ضغط او دمج الملفات التنفيذية مثل: EXE و DLL و SYS و SCR بما فيهم من اكواد او بيانات او كليهما، حيث يتم حزم الملف بطريقة تجعله أكثر صعوبة في التحليل أو التعديل بالاضافة الى تحسين أداء الملف التنفيذي. هذا قد يتضمن ضغط البيانات، ولكنه قد يتضمن أيضاً خطوات أخرى مثل التشفير أو التعتيم (Obfuscation) حيث توفر بعض ادوات Packers ميزات حماية إضافية مثل التشفير، لكن هذه الميزات ليست مضمونة بشكل كامل encryption: وتسمى ايضاً Protection وهي عملية تشفير البيانات، بشكل معقد ليصعب قراءتها ويتطلب فك تشفيرها معرفة مفتاح التشفير، ولكن يمكن للخبراء الوصول الى المفتاح، ويمكن فك تشفير البرنامج بشكل تلقائي عن طريق وضع دالة function في الـ Header تقوم بعملية فك تشفير البرنامج تلقائيا عند التشغيل (self-decrypting). ملاحظة: قد تستخدم تقنيات packing و encryption و compression معًا. فعادتاً ما يتم تشفير الملف المضغوط (packed) او (compressed)، ويمكن القيام بعكس ذلك وهو ضغط الملف المشفر ولكن عادتاً ما يزداد حجم الملف باستثناء اذا استخدمت ASCII armor وفي packing لم تستخدمها فمن المحتمل ان يكون هناك زيادة معتدلة في الحجم وهناك برامج تقوم بالضغط والتشفير معاً مثل: PGP/GPG. NeoLite هي أداة تستخدم لضغط وتقليل حجم ملفات التنفيذ وتحسين أداء البرامج وتشفيرها وتوفير تأمين إضافي. وتعتمد على خوارزمية الضغط والتشفير المخصصة التي تستخدمها للحفاظ على سرية البرنامج. ينقسم التشفير الى: أ- التشفير المتماثل: اقل تعقيداً واقل اماناً وسريع لاننا نستخدم فيه مفتاح واحد لتشفير البيانات وفك تشفيرها. ب: التشفير الغير متماثل: اكثر تعقيداً واكثر اماناً لاننا نستخدم فيه مفتاح خاص للتشفير ومفتاح عام لفك التشفير. ج: التشفير في اتجاة واحد (التجزئة): حيث يتم انشاء شفرة تابثة (Hash key) وبطول معين لكل خوارزمية مهما كان حجم البيانات ولا يمكن اعادة البيانات المشفرة الى اصلها. خوارزميات التشفير المتماثل: هو نظام تشفير يستخدم مفتاحاً واحداً فقط لتشفير وفك تشفير البيانات. ويجب أن يتشارك جميع الأطراف الذين يرغبون في التواصل مع بعضهم البعض نفس المفتاح وهذه قائمة ببعض انواعها:
XOR: هي عملية منطقية (Boolean) تستخدم على نطاق واسع في التشفير حيث تقارن بين بتين من البيانات وتنتج 1 إذا كانا مختلفين و 0 إذا كانا متطابقين وتستخدم هذه العملية في العديد من خوارزميات التشفير مثل RC4 و AES. خوارزميات التشفير الغير متماثل: هو نظام تشفير يستخدم مفتاحين مختلفين: مفتاح عام ومفتاح خاص. يستخدم المفتاح العام لتشفير البيانات، بينما يُستخدم المفتاح الخاص لفك تشفيرها. يمكن لأي شخص الحصول على المفتاح العام، ولكن لا يمكن لأحد فك تشفير البيانات دون استخدام المفتاح الخاص.
خوارزميات التجزئة (Hashing)؟ تستخدم في عملية البحث وتخزين البيانات مثل كلمات السر وفي المصادقة (التوقيع الرقمي او البصمة الالكترونية) للتأكد من الهوية او التأكد من عدم تغيير الملفات والبيانات والتلاعب بها وتنتج خورازميات التجزئة كود يسمى (Hash key) يكون بحجم تابث من 128 بت إلى 512 بت حسب نوع الخوارزمية المستخدمة.
RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - Spolaya Molaya - 18-04-2021 (15-04-2021, 06:00 AM)ehab85 كتب : خوارزميات التجزئة (Hashing)؟ هذه خاصة بالضغط compression الموضوع به الكثير من المعلومات غير الدقيقة RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - G6666K - 19-10-2023 "هل يمكنك أن تظهر لنا كيفية التغلب على هذا التحدي، أو هل هناك دورات متاحة لذلك؟". خوارزميات التشفير المتماثل:
RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - ehab85 - 19-03-2024 ياريت ادارة المنتدى تمكني من التعديل لتصحيح بعض الاخطاء وتعديل روابط الصور وزيادة التوضيح للكلام الذي يمكن ان يحدث فيه التباس. RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - M!X0R - 20-03-2024 (19-03-2024, 05:48 PM)ehab85 كتب : ياريت ادارة المنتدى تمكني من التعديل لتصحيح بعض الاخطاء تم تلبية طلبك RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - A14A14 - 20-03-2024 السلام عليكم ممكن شرح لغة الاسمبلي المختصة بالهندسة العكسية فقط وليس شرح جميع اللغة RE: دورة الهندسة العكسية من الصفر حتى الاحتراف - Str0x - 21-03-2024 إقتباس :ممكن شرح لغة الاسمبلي المختصة بالهندسة العكسية فقط ((( إقرأ ))) الكتاب الأول و الثاني بالإضافة إلى الأعداد 9 للمجلة بعدما تنهي ((( القراءة ))) هناك صفحة و إسطوانتين للمبتدئين بالتوفيق. |