C و C ++ و DotNet decompile هي أساسيات العكس. حل المشاكل للانعكاس باستخدام r0ot-mi. الجزء 1

صورة

في هذه المقالة ، المهام الخمس الأولى ، سنتعلم أساسيات التفكيك ، ونحل مشاكل المستوى العكسي الأولي ، ونفكك أيضًا تطبيق dotNet.

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

  • PWN.
  • التشفير (التشفير) ؛
  • تقنيات الشبكات (الشبكة) ؛
  • عكس (الهندسة العكسية) ؛
  • إخفاء المعلومات (Stegano) ؛
  • بحث واستغلال مواطن الضعف WEB.

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

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

يتم توفير جميع المعلومات للأغراض التعليمية فقط. لا يتحمل مؤلف هذا المستند أية مسؤولية عن أي ضرر يلحق بشخص ما نتيجة استخدام المعرفة والأساليب التي تم الحصول عليها نتيجة لدراسة هذا المستند.

C ، GCC32


النظر في أبسط الحالات. هذا هو أول السعي العكسي.

صورة

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

صورة

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

صورة

وبالتالي ، من الخطوط الموجودة بجانب بعضها البعض ، هناك سطر يشبه كلمة المرور. لنجربها.

صورة

اكتمال المهمة. نعطي كلمة المرور ، نحصل على 5 نقاط.

صورة

ELFx86 ، أساسي


يطلب منا العثور على كلمة مرور.

صورة

نقوم بتحميل البرنامج في مصحح أخطاء IDA Pro (استخدم الإصدار 7.0) واضغط على F5 لفك تشفير البرنامج.

صورة

وبالتالي ، تتم مقارنة الاسم الذي تم إدخاله بالسلسلة john ، وتتم مقارنة كلمة المرور مع الكسارة.

صورة

وبالتالي ، قمنا بحل المهمة بشكل صحيح والحصول على كلمة المرور الخاصة بنا. نحن استئجارها وكسب 5 نقاط أخرى.

صورة

PEx86 ، 0 الحماية


هذه المرة يتم منحنا إكس شنيك.

صورة

قم بتنزيله في IDA Pro.

صورة

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

صورة

نرى رسائل حول إدخال كلمات المرور الصحيحة وغير الصحيحة. الآن يمكننا العثور على الكتلة التي تحتوي على هذا السطر في الكود ومعرفة الحالة التي تسبقها. انقر مرتين على الخط.

صورة

نحن موجودون في قسم rdata. لنجد كل الروابط في الكود لهذا العنوان. للقيام بذلك ، اضغط X.

صورة

وبالتالي ، في رمز البرنامج ، هناك مكالمة واحدة فقط لخطنا. نقر نقرًا مزدوجًا وننتقل إلى الرمز.

صورة

نحن في رمز البرنامج الرئيسي. نحن decompiling.

صورة

هنا ، يتم التحقق من بعض الأرقام a2 والخط a1. دعنا نترجم عددًا إلى حرف.

صورة

للقيام بذلك ، اضغط R. على الرقم ، ورمزنا قد تغير.

صورة

نحن نعرف الآن السطر ، يبقى لمعرفة ما هو الرقم a2. دعونا نرى كل الروابط لهذه الوظيفة.

صورة

يطلق عليه مرة واحدة فقط.

صورة

كما ترون ، يتم تمرير طول السلسلة كمعلمة ثانية. التحقق من كلمة المرور وجدت.

صورة

نستسلم ونحصل على 5 نقاط.

صورة

ELF-C ++ ، 0 حماية


يتم عرضنا على حل برنامج في C ++.

صورة

نفتح في IDA Pro وننتقل إلى مكان مكالمة الرسالة على كلمة المرور الصحيحة. دعونا لونه أخضر.

صورة

لنجعل الرسم البياني أصغر.

صورة

لذلك نحن بحاجة إلى الذهاب من خلال شرطين. دعنا نحللهم. في الشرط الأول ، يتم مقارنة عدد الوسيطات بالقيمة 1. وهذا يعني أن البرنامج يجب أن يحتوي على أكثر من وسيطة واحدة (الأولى هي اسم البرنامج).

صورة

نحن نحلل الشرط الثاني.

صورة

تتم مقارنة السلسلة التي أدخلناها بالسلسلة التي يتم تمريرها كمعلمة لوظيفة plouf. نحن فك عليه.

صورة

تحليل الكود في الواقع a2 - هو سلسلة. وبالتالي ، تعمل الدورة من i = 0 ، حتى يكون العنصر i من الخط a2 يساوي 0 (أي ، حتى تصل إلى نهاية السطر).

V3 = a2 [i]
V5 = الطول (a3)
V6 = a3 [i٪ v5]

بمعنى أن السطر الموجود في العنوان a1 سيكون مساوياً للخطين المعيَّنين a2 و a3. دعنا نعود إلى الوظيفة الرئيسية وإيجاد هذه الخطوط.

صورة

لذلك نحن بحاجة إلى تحديد المعلمات var_C و var_10. سنجدهم أعلى قليلاً. هذه هي السلاسل unk_8048BC4 و unk_8048DCC ، على التوالي.

صورة

العثور على قيمة السلاسل.

صورة

حسنًا ، سنكتب رمزًا لإقناعهم.

صورة

نحصل على كلمة المرور

صورة

PE-DotNet ، 0 حماية


في هذه المهمة ، يُعرض علينا عكس تطبيق .NET.

صورة

يمكنك تحديد ذلك باستخدام الأداة المساعدة للملف.

صورة

لغة C # هي لغة مكررة ، لذا يمكننا الحصول على المشروع الأصلي. يمكن القيام بذلك باستخدام dnSpy .

صورة

لنفتتح مشروع CrackMe وابحث عن الوظائف والأساليب.

صورة

تتحقق طريقة Button1_Click من كلمة المرور بنقرة زر واحدة.

صورة

في شفرة المصدر نجد كلمة المرور. التحقق من ذلك.

صورة

نحن تسليمها.

صورة

هذا كل شيء الآن. أن تستمر ... يمكنك الانضمام إلينا على Telegram . هناك يمكنك اقتراح الموضوعات الخاصة بك والتصويت على اختيار الموضوعات للمقالات التالية.

Source: https://habr.com/ru/post/ar467085/


All Articles