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

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

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



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

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


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

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


    برنامج olly من افضل الادوات لتصحيح ومتابعه الملفات التنفيذيه ( البرامج )
    وافضل ميزه لاختياره في هذا الشرح . سهوله استخدامه وامكانياته المتقدمه في تنقيح البرامج

    نبدأ الشرح :-
    ---------------

    قم اولا بتحميل برنامج olly من موقعه الرسمي

    http://www.ollydbg.de/download.htm

    او رابط مباشر للاصدار الاخير

    www.ollydbg.de/odbg110.zip

    ثم تابع الشرح

    اولا شغل البرنامج olly

    [​IMG]

    كما هو الحال في برامج التنقيح . يوجد طريقتين لادخال البرامج ومتابعتها وتنقيحها
    من القائمه اختر File تلاحظ الطريقتين وهما ( open - attach )

    الامر Open => وهي الطريقه القياسيه لادخال البرنامج لتصحيحه ومراقبته من بدايه
    التشغيل الي ان تنهي البرنامج

    الامر Attach => وهذه الطريقه لادخال برنامج يعمل ( مقيم في الذاكره )
    ومتابعته من موقع تنفيذه ( هذه الطريقه قد تستخدم في البرامج المشفره و المقيمه في الذاكره )

    اختر Open وتجول في جهازك واختر اي ملف تنفيذي ( انا اخترت الحاسبه calc.exe )
    ثم لاحظ الصوره

    [​IMG]

    هذه الصوره تظهر بعد اختيار البرنامج وتسمي هذه النافذه الرئيسيه CPU
    ما هي اقسام هذه النافذه ( لاحظ العناوين باللون الازرق )

    1 - قسم الكود :
    وهو القسم التنفيذي من الملف باختصار هو البرنامج ويشمل الاوامر والدوال والتحكم في سير البرنامج

    2 - قسم البيانات :
    باختصار كل الاقسام في البرنامج غير قسم الكود تسمي اقسام بيانات
    والبيانات هي مثلا مصادر البرنامج - النصوص - عناوين النوافذ .. الخ


    3 - مكدس البرنامج :
    هو عباره عن قسم من الذاكره يعرض ويخزن فيه البيانات التي تعالج الان في الذاكره
    مثلا بارمترات الدوال - عناوين البيانات

    4 - مسجلات المعالج :
    تنقسم المسجلات الي نوعين


    * مسجلات عامه مثل EDX - ECX - EBX - EAX ( وهي لنقل المعلومات ومعالجتها )
    * مسجلات دليليه مثل EIP - EBP - ESP - ESI - EDI ( وهي تعتبر دليل للاقسام )


    مثلا EIP = دليل لقسم الكود ( اي ان رقم EIP = السطر الذي ينفذ في قسم الكود )
    ESI - EDI = مسجلات دليليه تسهل عمليه الوصول للبيانات لقسم البيانات + القسم الموسع ( معالجه النصوص )
    ESP = العنوان الذي يعالج حاليا في المكدس
    EBP = مساعد لمعالجه البيانات في المكدس

    5 - رايات المعالج :
    ولها اسم ثاني اعلام المعالج وتعبر هذه الرايات عن حاله المعالج
    وهذه الرايات هي
    :( لاحظ الحرف الاول = كما هو موضع في نافذه البرنامج )


    CF : تحتوي علي محتوي الخانه الاخيره لعمليه ازاحه او دوران
    PF : علم التحقق وهو يتحقق من الخانات الثمانيه الاولي بوضع 1 اذا كان ناتج التحقق زوجي و 0 اذا كان الناتج فردي
    AF : علم الحمل يفيد في بعض العمليات الحسابيه الخاصه وهي تشير الي وجود الحمل في احد الخانات
    ZF : يوضع في هذا العلم 0 اذا كان ناتج اخر عمليه مقارنه غير صفري وواحد 1 عندما يكون صفر
    SF : يحتوي هذا العلم علي اشاره الرقم الناتج عن اخر عمليه حسابيه 0 = موجب / 1 = سالب
    TF : وتشير هذه الرايه للمعالج بالعمل خطوه خطوه لتتبع الاخطاء ومثال برنامج الديبغر يستعمل هذا العلم
    IF : تشير اذا كانت 1 الي السماح بحدوث طلب مقاطعه خارجي ( وهذا غير موجود في 32 بت فقط برامج دوس )
    DF : تحدد اتجاه يسار او يمين عمليه مقارنه السلاسل
    OF : وتشير الي ناتج فيض في احدي العمليات الحسابيه


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


    [​IMG]
    [​IMG]

    اذا لم تتمكن من حفظ كل هذه القفزات ( فعليك حفظ القفزات التي باللون الاحمر فهي المستخدمه بنسبه 80% تقريبا )
    كل القفزات التي تم عرضها هي قفزات شرطيه وهناك نوع اخر من القفزات الغير مشروطه مثل JMP


    التحكم في سير البرنامج :

    بعد ان قمت بتحميل ملف تنفيذي الي برنامج olly تستطيع ان تتحكم به بطريقه سهله ( مفاتيح الاختصار )


    المفتاح F8 : تنفيذ البرنامج خطوه خطوه بمعني تنفيذ تعليمه واحده
    المفتاح F9 : تشغيل البرنامج اي تنفيذ كل التعليمات الي ان تحدث نقطه توقف لتوقف البرنامج
    المفتاح F2 : ادراج او حذف نقطه توقف علي العنوان المحدد


    الخيارات الاخري :

    اختر منطقه الكود واضغط الرز الايمن للماوس ولاحظ القائمه

    [​IMG]

    ملاحظه :- بعض الاوامر تتغير بحسب التعليمه المؤشر عليها ( وهذا هو سبب تميز هذا البرنامج )
    سأحاول شرح بعض اوامر القائمه المهمه للمبتدئ


    Backup : تحفظ نسخه احتياطيه للملف كما يمكن استخدام هذا الامر في طرق متقدمه مثل مقارنه الملفات والتغيرات
    Binary : التغيير في التعليمه بصيغه الترميز الست عشري ( هكس )
    Assemble : التغيير في التعليمه بصيغه لغه الاسمبلي


    مع ملاحظه ان اي تغيير تجريه داخل نافذه CPU وبواسطه هذان الامران لا يحفظ في الملف
    بمعني انك عندما تخرج من البرنامج فان التغييرات لا تحفظ في الملف علي القرص
    ( توجد طريقه اخري لحفظ البيانات )
    سيتم شرحها لاحقا


    Go to : هذا الامر ينقلك الي العنوان الذي تحدده ( هل تعتقد انه بسيط ؟ )

    هذا الامر له طرق متقدمه في تبديل الاقسام ( تبديل الاقسام هي حيله تستخدمها البرامج المشفره )
    للفائده هناك قانون يجب ان تعرفه الا وهو ترتيب الاقسام ( يجب ان يكون ترتيب اقسام البرنامج بهذه الطريقه )

    1 / مكدس -- 2 / قسم كود -- 3 / قسم بيانات

    وطبعا البرامج المشفره تغير في هذه الترتيب مما يجعل برنامج olly غير قادر علي معرفه
    الدوال المستورده مثلا - او كود البرنامج

    وسيكون لنا شرح منفصل عن هذه الطريقه


    Search for : عند ملامستك لهذه القائمه تظهر قائمه اخري مليئه بالاوامر

    [​IMG]

    كل الاوامر هي للبحث . فمثلا All Referenced text يعرض كل النصوص الموجوده في قسم البيانات
    الامر
    All Switches يعرض لك حلقات المقارنه في البرنامج وهكذا كل الاوامر
    فقط في ملاحظه علي الامر
    All Intermodualr calls هذا الامر يظهر لك الدوال المستورده
    والمصدره التي يستخدمها البرنامج . ولكن فائده هذا الامر انه يعرض الدوال التي داخل القسم
    المحدد فقط
    ( اعتقد ان فكره تشفير البرامج صارت مفهومه )
    وسنقوم بمناقشه هذه الطرق في دروس مقبله ان شاء الله

    بعد ذلك يأتي في القائمه الرئيسيه الامر
    to find references
    هذا الامر مهم لتعرف كيف وصل التنفيذ للأمر المؤشر عليه ( بمعني ما هي الاوامر المتصله بهذه التعليمه )
    الامر View + الامر Copy to Excutable
    تنقلك هذه الاوامر الي شفره البرنامج واي تغيير فيها تستطيع ان تحفظه علي القرص
    ( بمعني كتابه البرنامج + التغيير فيه )

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


    نوافذ البرنامج :

    [​IMG]



    L: تعرض لك هذه النافذه معلومات عن البرنامج ( ماذا يستخدم - كم ثريد - مكاتب الربط ..)
    E : تعرض لك هذه النافذه الملفات المرتبطه مع البرنامج
    M : تعرض لك هذه النافذه تخطيط مفصل عن البرنامج وملفاته - كما تعرض ترتيب الاقسام وخصائصها
    T : الخيوط ( ثريد ) المستخدمه في البرنامج
    W : نوافذ البرنامج والازرار
    H : مقابض البرنامج ( هذا الامر جديد في اصدارات olly الجديده )
    C : تعرض لك نافذه CPU النافذه الرئيسيه
    K : معلومات مكدس الثريد ( مصدر انشائه )
    B : قائمه نقاط التوقف التي وضعتها في البرنامج


    ملاحظه : الاوامر التي لم اذكرها هي تكرار لما تم شرحه في قائمه البرنامج الرئيسيه

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


    --------------
    تطبيق عملي
    --------------

    هذا مثال بسيط جدا للمبتدئين في تنقيح وتغيير البرامج
    اولا قم بتحميل البرنامج التالي


    http://www.4shared.com/rar/F3h_paKM/chme.html

    هذا البرنامج هو عباره عن زر امر يعرض لك مسج
    ولكن هذا الزر غير نشط

    [​IMG]

    ونريد في هذا الدرس تطبيق عملي ( تنشيط هذا الزر وتنفيذه )
    اول خطوه اخرج الملف من الملف المضغوط + شغل برنامج olly
    من القائمه اختر File ثم Open
    واختر البرنامج الذي قمت بتحميله . ستظهر لك نافذه شبيهه بالصوره الاولي في الدرس
    اشر علي نافذه CPU علي اي عنوان واضغط مفتاح Ctrl+n
    ستظهر لك النافذه التاليه

    [​IMG]

    هذه هي الدوال المستخدمه في البرنامج ( ياتري ما هي الداله الخاصه بتنشيط الزر او النافذه ؟ )
    لو كنت مبرمج سي او تعرف دوال API سيكون تحديد الداله مجرد لعبه
    الداله هي EnableWindow الداله السابعه في الصوره


    [​IMG]

    الان قم بالتأشير علي الداله EnableWindow بزر الماوس الايمن ثم اختر الامر
    Set breackpoint on every reference
    وهو لوضع نقطه توقف علي كل الاتصالات للداله
    الان بعد ان قمت بوضع نقطه التوقف علي الداله . قم يتنفيذ البرنامج بالضغط علي F9

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


    ركز الان

    [​IMG]

    لاحظ هنا ان البرنامج توقف عند عنوان باللون الاحمر
    لاحظ ايضا مقطع الكود ولاحظ الداله ماذا جاء قبلها ( تعليمه مقارنه )
    ودائما بعد تعليمه المقارنه تأتي قفزه وفي مثالنا هي JE ( معني القفزه = اقفز اذا كان يساوي )
    ( راجع الجدول السابق )
    ولاحظ الي اين تقفز ( تتعدي نقطه التوقف ( عرفنا ذلك من العنوان في القفزه 004012C5 )

    وهو نفس العنوان الذي يلي نقطه التوقف
    والملاحظه الثانيه اسم الرز الممرر للداله = Message والقيمه = FALSE
    بمعني ان هذه الداله هي التي تجمد الزر ( الان المطلوب تجاوز هذه الداله ) والطريقه بسيطه للغايه
    قم بتغيير تعليمه القفزه من
    (( JE = اقفز اذا كان يساوي )) الي (( JNE = اقفز اذا كان لا يساوي ))
    والطريقه :-
    اشر علي تعليمه القفزه واضغط علي الزر الايمن للماوس
    ثم اختر من الامر
    Copy to Excutable اختر Selection

    [​IMG]

    ستظهر لك النافذه التاليه

    [​IMG]

    وهي عباره عن نفس الكود لكن تختلف العناوين في الملف ( من عناوين وهميه الي حقيقيه )
    اشر علي نفس التعليمه (( تعليمه القفز = JE )) واختر الامر Assemble

    [​IMG]

    ستظهر لك نافذه تعديل الكود

    [​IMG]

    فقط غير القفزه من JE الي JNE بهذا الشكل

    [​IMG]

    ثم اضغط علي Assemble . ستلاحظ ان التعليمه تغيرت من JE الي JNZ في الكود

    [​IMG]

    بعد التغيير اضغط زر Cancel اذا لم تختفي نافذه التعديل
    وفي نفس النافذه اضغط زر الماوس الايمن واختر حفظ الملف


    [​IMG]

    ثم اختر المكان الذي تريده . مثلا احفظ الملف علي سطح المكتب
    الان اغلق برنامج olly

    اذهب للبرنامج الذي غيرته ... جرب شغل البرنامج ... لاحظ الان زر الامر

    اضغط عليه ( ماذا تلاحظ ؟ )

    هذه رسالتي لك لتطبيق الدرس

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

    وهذا شرح فيديو يوضح بساطه الموضوع
    ملاحظه :- ( شاهد الفيديو بعد تطبيق الدرس لفهم ما يحدث )

    http://www.4shared.com/video/RMzq_jOc/albop.html

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

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

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

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

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























    المصدر: شبكة عراق تيم IQ-TEAM - من قسم: |[ RSS Forum ]|

    hshsdhj jjfu ,jwpdp hgfvhl[ hgjktd`di => ollydb​
     
حالة الموضوع:
مغلق

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