حالة الموضوع:
مغلق
  1. .:: RSS ::.

    .:: RSS ::. عضوية آلية

    الأنتساب:
    ‏9 سبتمبر 2011
    المشاركات:
    14,005
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    36
    الإقامة:
    IQ-T34M
    السلام عليكم ورحمه الله وبركاته



    اهلا بزوار واعضاء بيت الهكر الاخلاقي

    في الدرس السابق

    اساسيات تتبع وتصحيح البرامج التنفيذيه => ollydb

    كنا قد وضعنا محتويات كتاب يشرح بعض الاساسيات اللازمه
    للمبتدئ للبدء في مجال تنقيح البرامج وتصحيحها باستخدام برنامج olly
    وقد اوضحنا مثال بسيط للتجربه

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



    بدون اطالات نبدأ علي بركه الله

    -------------


    بدايتا قم بتحميل البرنامج التالي

    http://www.4shared.com/file/CpMD5O4W/sanf.html

    هذا البرنامج يوجد به خطأ . او بمعني اخر نقص . وسبب الخطأ هو عدم وجود المكتبه
    Mylib0va.dll
    لان البرنامج عندما يبدأ التنفيذ . يقوم بالتحقق من وجود هذه المكتبه . اذا وجد الملف يستمر في
    التنفيذ . واذا لم يجده يظهر رساله الخطأ وينهي البرنامج
    ( قم بتجربته بنفسك )
    الان ما نريده من البرنامج هو الا يقوم بالتحقق من وجود هذه المكتبه . ويستمر في التنفيذ

    بسم الله نبدأ :-
    ---------------


    شغل برنامج olly ثم من القائمه اختر File ومنها Open لاختيار البرنامج
    اختر البرنامج الذي قمت بتحميله . ستظهر لك الصوره التي تعودنا عليها

    [​IMG]

    الان اشر بالماوس علي نافذه CPU واضغط Ctrl+n لعرض دوال البرنامج
    ستظر لك نافذه الدوال كالتالي


    [​IMG]

    الان اي داله هي المسؤوله عن اظهار رساله الخطأ ؟
    الداله هي MessageBox
    اضف لها نقطه توقف او breakpoint


    [​IMG]

    الان بعد اضافه نقطه التوقف . قم بتشغيل البرنامج بالظغط علي مفتاح F9 لتنفيذ كافه تعليمات البرنامج
    الي ان يصل لنقطه التوقف


    [​IMG]

    الان هنا ركز قليلا .
    هل تجد اي امر يمكن ان نغيره لتجاوز هذا المسج وداله الانهاء ؟ ( اكيد لا )
    اذا سنقوم بالبحث عن التعليمه التي اوصلتنا الي هذه الورطه !
    اذهب الي بدايه الداله ( دائما بدايه الداله تأتي قبلها هذه التعليمات NOP .. RETN .. JMP )
    اضغط علي تعليمه بدايه الداله واختر بحث عن الاتصالات بهذه الداله - كالتالي

    [​IMG]

    ستظهر لك مجموعه من التعليمات التي تقوم بتنفيذ هذه الداله وفي مثالنا تعليمه واحده

    [​IMG]

    اضف لها نقطه توقف او breakpoint من خلال المفتاح F2 . ثم اعد تشغيل البرنامج
    من القائمه بالاعلي اختر Debug ومنها Restart - كالتالي


    [​IMG]

    الان قم باستخدام المفتاح F9 لبدء تنفيذ البرنامج ( حتي يتوقف عن نقطه التوقف التي وضعناها )
    لاحظ هنا ان التنفيذ توقف عن تعليمه Call وهي تعليمه للاتصال بداله المسج
    لو بحثت عن الاتصالات لهذه الداله ( لان التعليمه التي قبلها RETN اي بدايه داله )
    جرب : اشر بالماوس فوق تعليمه Call ثم ابحث عن مصدر التعليمه عن طريق
    Find references to او باستخدام المفتاح Ctrl+R
    ستجد ان التعليمه التي تتصل بها هي تعليمه القفز JE

    [​IMG]

    قد تعتقد اننا وجدنا الحل بتغيير القفزه ( حاول تغيير القفزه لتجد الكارثه ؟؟ )
    اذا غيرت القفزه ستخبر البرنامج ان المكتبه موجوده . وبهذا سيقوم البرنامج بتنفيذ داله داخل المكتبه
    عن طريق نظام التشغيل طبعا . ولن يجد نظام التشغيل المكتبه . وبهذا تقع في مشكله اكبر
    وسيصبح من خطأ مستخدم الي خطأ نظام
    وفي هذه الحاله بدل من تكحيلها عميناها - والحل ؟

    لهذه المشكله توجد حلول كثيره ( لان الاسمبلي ليس فقط قفزات )
    الحل الاول : حذف الاتصال بداله المسج وانهاء البرنامج عن طريق تعليمه NOP
    الحل الثاني : تغيير عنوان القفز ونحدد له عنوان بعد تعليمه الاتصال

    حذف التعليمات من البرامج التنفيذيه يتم عن طريق تعليمه واحده وهي NOP
    وهي اختصارا لـ No Oporation وتعني لا شئ ( لا تفعل شئ )


    الان اضف نقطه توقف علي تعليمه القفز JE باستخدام المفتاح F2 ثم اعد تشغيل
    البرنامج من Debug ثم Restart
    واخيرا قم يتنفيذ البرنامج باستخدام المفتاح F9
    ستلاحظ ان التنفيذ توقف عند داله القفز والتي وضعنا عنها نقطه توقف
    الان اذهب لداله الاتصال بالمسج والتي يتم القفز اليها ( عن طريق مفتاح Enter )
    سيتم نقلك الي داله الاتصال . اضغط عليها بالزر الايمن للماوس واختر Assemble
    سيظهر لك نافذه تعديل الكود . قم بتغير تعليمه Call الي تعليمه NOP
    او بمعني اخر بسلسه تعليمات NOP - كالتالي


    [​IMG]

    ثم اضغط Assemble ثم cancel
    الان ستلاحظ ان تعليمه الاتصال بالماسج قد تغيرت في الكود الي سلسله تعليمات NOP
    كل ما عليك فعله الان هو تنفيذ البرنامج باستخدام F9 مرتين لتري ان البرنامج يعمل بنجاح


    [​IMG]

    وبهذا نكون قد تجاوزنا داله الاتصال Call

    اما بالنسبه للحل الاخر . وهو تغيير عنوان القفزه الي عنوان يأتي بعد داله الاتصال Call
    فسأتركه لكم للتجربه . وهو يعتبر HomeWork

    اتمني من متابعين الدرس وضع نتيجه الـ HomeWork في مشاركاتهم للافاده



    اتمني اني اكون وفقت في الشرح

    ------------------

    الي هنا يكون الموضوع انتهي
    اتمني يكون الموضوع سهل .. واي استفسار موجود بأذن الله

    اسألكم الا تنسوني من صالح دعائكم بظهر الغيب

    اترككم في رعايه الله وامنه
    والسلام عليكم ورحمه الله وبركاته







     
حالة الموضوع:
مغلق

مشاركة هذه الصفحة