باستخدام OllyDbg. "كسر الدرس باستخدام OllyDbg" ما هو Olly Debugger

💖 هل يعجبك؟شارك الرابط مع أصدقائك

تكوين التوزيع

كتالوج OllyDbg110 - تم تنزيل التوزيع من موقع البرنامج

كتالوج OllyDbgHelpRus - المساعدة الرسمية لمصحح أخطاء OllyDbg مترجمة إلى اللغة الروسية. مأخوذة من الموقع http://cracklab.ru/


2. وصف البرنامج (مأخوذ من تعليمات البرنامج)

OllyDbg- مصحح أخطاء 32 بت يقوم بالتحليل على مستوى المجمّع، بواجهة بديهية. مفيد بشكل خاص إذا كان كود المصدر غير متوفر أو عندما تواجه مشاكل مع المترجم.

متطلبات.يعمل تحت أنظمة التشغيل Windows 95، أو 98، أو ME، أو NT أو 2000، أو XP (لم يتم اختباره بنسبة 100%)، على أي كمبيوتر من فئة Pentium، ولكن لتصحيح الأخطاء بسهولة، ستحتاج إلى معالج بسرعة 300 ميجاهرتز على الأقل. OllyDbg كثيف الذاكرة. إذا كنت ستستخدم أدوات إضافية (مكونات إضافية)، أوصي بـ 128 ميجابايت أو أكثر من ذاكرة الوصول العشوائي.

المعالجات المدعومة: OllyDbg يدعم جميع 80x86، Pentium، MMX، 3DNow! ، بما في ذلك أوامر Athlon وSSE وتنسيقات البيانات ذات الصلة. لكنه لا يدعم SSE2.

يثبت.أكثر من 100 خيار للتحكم في تشغيل البرنامج.

تنسيقات البيانات.تعرض نوافذ التفريغ البيانات بجميع التنسيقات الشائعة: HEX، وASCII، وUNICODE، وعدد صحيح 16 بت و32 بت/غير صحيح/ست عشري، ونقطة عائمة 32/64/80 بت، والعنونة، والتفكيك (MASM، أو IDEAL، أو HLA) أو رأس PE أو دفق كتلة البيانات.

مرجع. يحتوي هذا الملف على المعلومات الأساسية اللازمة لفهم واستخدام Ollydbg. إذا كانت لديك تعليمات Windows API (win32.hlp، غير مضمنة لأسباب تتعلق بحقوق الطبع والنشر)، فيمكنك إرفاقها والحصول على مساعدة فورية بشأن مكالمات النظام.

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

تصحيح أخطاءDLL.باستخدام Ollydbg، يمكنك تصحيح أخطاء مكتبات الارتباطات الديناميكية (DLLs). يقوم Ollydbg تلقائيًا بتشغيل ملف صغير قابل للتنفيذ يقوم بتحميل المكتبة فيه ويسمح لك باستدعائه للتصدير.

تصحيح الملفات باستخدام معلومات التصحيح.يقوم Ollydbg بقراءة معلومات تصحيح الأخطاء بتنسيقات MICROSOFT وBorland. تتضمن هذه المعلومات الكود المصدري وأسماء الوظائف والتسميات والمتغيرات العامة والثابتة. دعم المتغيرات والهياكل الديناميكية (المكدسة) محدود للغاية.

تسليط الضوء على الكود.يمكن للمفكك تسليط الضوء على أنواع مختلفة من التعليمات (القفزات، والقفزات الشرطية، ودفع المكدس والظهور، واستدعاءات الإجراء، والإرجاع، والمتميز وغير الصالح) والمعاملات المختلفة (عامة، FPU/SSE أو سجلات القطاع/النظام، معاملات الذاكرة على المكدس أو في ذاكرة أخرى، ثوابت). يمكنك أيضًا إنشاء أنماط إضاءة مخصصة.

تيارات. Ollydbg قادر على تصحيح أخطاء التطبيقات متعددة الخيوط. يمكنك التبديل من سلسلة رسائل إلى أخرى، أو إيقافها مؤقتًا، أو استئنافها، أو إنهاء سلاسل المحادثات، أو تغيير أولويتها. تعرض نافذة المواضيع أخطاء لكل موضوع (على سبيل المثال، استدعاء GetLastError).

تحليل.يعد المحلل أحد أهم أجزاء OllyDbg. فهو يتعرف على الإجراءات والحلقات والمفاتيح والجداول والثوابت والسلاسل المضمنة في التعليمات البرمجية والبنيات المعقدة واستدعاءات وظائف API وعدد معلمات الوظائف وأقسام الاستيراد وما إلى ذلك. يجعل التحليل التعليمات البرمجية الثنائية أكثر قابلية للقراءة، وأسهل في تصحيح الأخطاء، ويقلل من احتمالية التفسيرات الخاطئة والفشل. إنه ليس خاصًا بالمترجم ويعمل بشكل جيد مع أي برنامج PE. يمكنك تحسين نتائج التحليل الخاصة بك عن طريق تعيين تلميحات.

الماسح الضوئي للكائنات.يقوم OllyDbg بمسح وحدات الكائنات (الملفات) أو المكتبات (بتنسيقي OMF وCOFF)، واستخراج التعليمات البرمجية وتقسيمها وتحديد موقعها في البرنامج الذي يتم تصحيح أخطائه.

الماسح الضوئي للمكتبات المستوردة.تقوم بعض مكتبات الارتباط الحيوي (DLL) بتصدير رموزها فقط على شكل ترتيبات، وهي غير قابلة للقراءة بالعين البشرية. إذا كانت لديك مكتبة الاستيراد المناسبة، فسيقوم OllyDbg بترجمة الأرقام الترتيبية مرة أخرى إلى أسماء رمزية.

دعم يونيكود الكامل.تقريبًا جميع العمليات المتاحة لسلاسل ASCII متاحة أيضًا لسلاسل UNICODE، والعكس صحيح.

الأسماء.يعرض OllyDbg جميع الرموز والأسماء المستوردة والمصدرة من معلومات التصحيح وبتنسيقات Microsoft وBorland. يسمح لك Object Scanner بالتعرف على وظائف المكتبة. يمكنك إضافة القيم والتعليقات الخاصة بك. إذا تم تصدير الوظائف الموجودة في بعض ملفات DLL كأرقام ترتيبية، فيمكنك إرفاق مكتبة الاستيراد واستعادة الأسماء الأصلية. يعرف OllyDbg أيضًا الأسماء الرمزية للعديد من الثوابت، مثل مربعات الرسائل أو أخطاء التعليمات البرمجية أو حقول البت، ويقوم بفك تشفيرها إلى استدعاءات دالة معروفة.

وظائف معروفة.يتعرف OllyDbg على أكثر من 2300 وظيفة C وAPI Windows شائعة الاستخدام بالاسم ويقوم بفك تشفير معلماتها. يمكنك إضافة الأوصاف الخاصة بك، أو تعيين فك تشفير معين. يمكنك تعيين نقطة توقف للكتابة على وظيفة معروفة وكتابة المعلمات إلى ملف.

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

كومة.في نافذة Stack، يستخدم OllyDbg الأساليب البحثية للتعرف على عناوين الإرجاع وبنية السجل. ومع ذلك، لاحظ أنها قد تكون بقايا من مكالمات سابقة. إذا تم إيقاف البرنامج مؤقتًا عند وظيفة معروفة، فستقوم نافذة المكدس بفك تشفير المعلمات الفعلية.

سلاسل SEH.يتتبع المكدس سلسلة مقابض SE ويعرضها. السلسلة الكاملة متوفرة في نافذة منفصلة.

يبحث.الكثير من الاحتمالات! البحث عن أمر (دقيق أو غير دقيق) أو تسلسل أوامر، عن الثوابت، سلسلة ثنائية أو نصية (ليست بالضرورة مستمرة)، عن جميع الأوامر التي تشير إلى عنوان، ثابت أو فاصل زمني، عن كل الانتقالات إلى موقع محدد، عن جميع الوظائف التي تستدعي بعض الإجراءات، أو أيًا كان ما يستدعيه هذا الإجراء، لجميع السلاسل النصية المشار إليها، ولجميع الاستدعاءات إلى الوحدات النمطية المختلفة، وللأسماء، وللتسلسلات الثنائية المقنعة في تخصيص الذاكرة بالكامل. إذا تم العثور على مواقع متعددة، يمكنك التنقل بينها بسرعة.

ويندوز.يسرد OllyDbg جميع النوافذ التي تم إنشاؤها بواسطة التطبيق الذي يتم تصحيح أخطائه ويعين نقاط التوقف للنوافذ أو فئة أو حتى رسالة محددة أو مجموعة رسائل.

موارد.إذا كانت دالة Windows API تشير إلى مورد سلسلة، فإن OllyDbg يسترده ويعرضه. يقتصر دعم الأنواع الأخرى على قائمة الموارد المرفقة والتفريغ والتحرير الثنائي.

نقاط التفتيش (نقاط التوقف).يدعم OllyDbg جميع الأنواع المعتادة من نقاط التوقف: المقاطعات البسيطة، والمقاطعات المشروطة، والمقاطعات التي تكتب المعلومات (مثل معلمات الوظيفة) إلى السجل، ونقاط توقف الكتابة والوصول إلى الذاكرة، ونقاط توقف الأجهزة (ME/NT/2000 فقط). كملاذ أخير لتصحيح الأخطاء خطوة بخطوة، يمكن تعيين نقطة توقف INT3 على كل تعليمة في الوحدة. على معالج بسرعة 500 ميجاهرتز ضمن نظام التشغيل Windows NT، يمكن لـ OllyDbg معالجة ما يصل إلى 5000 مقاطعة في الثانية.

المراقبين والمفتشين.المراقبون عبارة عن تعبيرات يتم تقييمها في كل مرة يتم فيها إيقاف البرنامج مؤقتًا. يمكنك استخدام السجلات والثوابت وتعبيرات العناوين والعمليات المنطقية والجبرية بأي تعقيد. يمكنك مقارنة سلاسل ASCII وUNICODE. المفتشون هم مراقبون يحتويون على ما يصل إلى فهرسين ويمكن تمثيلهم كجدول ثنائي الأبعاد يسمح بفك تشفير المصفوفات والهياكل.

تجاوز الذاكرة الديناميكية.في الأنظمة المستندة إلى Win95، يسرد OllyDbg كافة كتل الكومة المخصصة.

مقابض.في الأنظمة المستندة إلى NT، يسرد OllyDbg جميع مقابض النظام التي تنتمي إلى التطبيق الذي يتم تصحيح أخطائه.

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

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

التتبع المباشر (تشغيل التتبع).يقوم Trace بتنفيذ البرنامج خطوة بخطوة ويسجل تنفيذه في مخزن مؤقت دائري كبير. يحتوي هذا البروتوكول على كافة السجلات (باستثناء SSE)، وعلامات الخيوط والأخطاء، والرسائل والمعلمات التي تم فك تشفيرها للوظائف المعروفة. يمكنك حفظ الأوامر الأصلية، مما يسهل تصحيح أخطاء التعليمات البرمجية ذاتية التعديل. يمكنك تحديد شرط لإيقاف التصحيح عن طريق إدخال نطاق عنوان أو تعبير أو أمر. يمكنك حفظ معلومات تصحيح الأخطاء في ملف ومقارنة عمليتي تنفيذ مستقلتين للبرنامج. يتيح لك التتبع إجراء تحليل عكسي لسجل تنفيذ ملايين الأوامر بالتفصيل.

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

إجراء التصحيحات.يقوم المجمّع المدمج تلقائيًا بتحديد أقصر رمز ممكن. يعرض المحرر الثنائي البيانات بتنسيق ASCII وUNICODE والنماذج السداسية العشرية في وقت واحد. تتوفر أيضًا نسخة ولصق قديم جيد. يتيح لك النسخ الاحتياطي التلقائي التراجع عن التغييرات. يمكنك نسخ التغييرات مباشرة إلى الملف القابل للتنفيذ، كما يقوم OllyDbg بتصحيح الأخطاء المثبتة. يتذكر OllyDbg جميع إصلاحات البرنامج من جلسات تصحيح الأخطاء السابقة. يمكنك تطبيقها أو إزالتها ببضع ضغطات على المفاتيح.

ملفات الاستخراج الذاتي.عند تصحيح أخطاء ملف SFX، عادةً ما تريد تخطي برنامج الأرشفة والتوقف عند الدخول إلى البرنامج مباشرة. يقوم OllyDbg بإجراء تصحيح أخطاء SFX من خلال محاولة تحديد موقع الإدخال الفعلي. عادةً ما يفشل تصحيح أخطاء SFX في الأرشيفات المحمية. بمجرد العثور على المدخلات (أو تعريفها)، يمكن لـ OllyDbg تشغيل أداة فك الحزم بشكل أسرع وأكثر موثوقية.

اضافات للبرنامج .يمكنك إضافة مكون إضافي إلى OllyDbg، أو كتابة مكون إضافي خاص بك للبرنامج. تصل الوظائف الإضافية للبرنامج إلى جميع هياكل البيانات المهمة، وتضيف قوائم واختصارات إلى نوافذ OllyDbg الموجودة، وتستخدم أكثر من 100 وظيفة إضافية لواجهة برمجة التطبيقات (API). تم توثيق المكونات الإضافية لواجهة برمجة التطبيقات (API) بشكل جيد. يتضمن التوزيع القياسي وظيفتين إضافيتين للبرنامج: سطر الأوامر والإشارات المرجعية.

UDD.يقوم OllyDbg بحفظ جميع المعلومات المتعلقة بالبرنامج أو الوحدة في ملف فردي واستعادتها عند تحميل الوحدة مرة أخرى. تتضمن هذه المعلومات التسميات والتعليقات ونقاط التوقف والمراقبين وبيانات التحليل والشروط وما إلى ذلك.

يثبت.يمكنك تحديد الخطوط والألوان وأنظمة الإضاءة المخصصة.

وأكثر من ذلك بكثير! هذه القائمة ليست كاملة بأي حال من الأحوال، فهناك العديد من الميزات التي تجعل من OllyDbg مصحح أخطاء مريحًا وممتعًا.

3. موقع البرنامج

في الأساس، لقد استخدمت دائمًا مصحح الأخطاء في جميع الأوقات OllyDbg لتصحيح الأخطاء. هذا مصحح أخطاء أنيق ومريح للغاية وبسيط وفي نفس الوقت يتمتع بوظائف قوية جدًا. لكن في الآونة الأخيرة، واجهت بشكل متزايد برامج x64، ويعمل جهاز الكمبيوتر المنزلي الخاص بي على نظام التشغيل x64، والإصدار 1.10 من OllyDbg لا يعمل بشكل صحيح على نظام التشغيل هذا، فهو يفقد نقطة الدخول الخاصة به وكل شيء حزين بشكل عام. لم تنجح محاولات استخدام الإصدار الأحدث 2.01a أيضًا، لأنه يتجمد في لحظة غير متوقعة ويتوقف عن الاستجابة، بالطبع، يمكنك طرح مجموعة من التصحيحات من الأصدقاء الصينيين وإحياء مصحح الأخطاء بشكل أو بآخر، ولكن لا يزال هناك بعض الحلول. عدد كبير من الأخطاء ويبدو أن التطوير قد توقف (منذ أغسطس 2011، لم يحدث أي تقدم) جعلني أتطلع إلى Interactive Disassembler، وهو اختصار لـ IDA. هذه أداة قوية لتصحيح الأخطاء والبحث في البرامج التي تحتوي على مجموعة من الحيل والحيل الضرورية وغير الضرورية.
ولكن لها أيضًا بعض العيوب التي كانت تمنعني دائمًا من دراسة هذه الأداة القوية:
1. هناك القليل من التوثيق المعقول، بالطبع هناك كتب من السيد K. Kaspersky المحترم، لكنها قديمة جدًا بحيث يكون هناك معنى في قراءتها، ولكن في الواقع الحالي ليس كثيرًا، بشكل أساسي للتطوير العام.
2. سعر هذا المنتج من X-Rays هو ترخيص مبدئي يزيد عن 500 دولار أسترالي، وهذا بدون برنامج X-Rays Decompiler الذي يكلف نوعًا ما من الأموال غير الكافية.
لكن خيبة أمل OllyDbg تغلبت على الضفدع والفطرة السليمة، وقررت دراسة IDA بعد كل شيء.


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

بادئ ذي بدء، بحثت عن معلومات حول الأدلة وشعرت بخيبة أمل إلى حد ما، هناك قدر كبير من المعلومات وقد عفا عليها الزمن، وهناك منتديات حيث يتبادل الناس جميع أنواع الأشياء المفيدة حول المؤسسة الدولية للتنمية، ولكن كان عليّ أولاً أن أتخذ على الأقل دورة الشباب الذكور. لقد ساعدني دليل فيديو من TiGa في ذلك، يمكنك أن تأخذه بعد قضاء عطلة نهاية الأسبوع بأكملها تقريبًا وشرب نصف علبة من البيرة، شاهدت جميع مقاطع الفيديو التعليمية. بعد ذلك خطرت لي فكرة لماذا لا أحاول فهم IDA بمساعدة المقالات القديمة الجيدة من Ricardo Navaja بعنوان "مقدمة للاختراق من الصفر باستخدام OllyDbg"، يمكنك قراءتها باللغة الروسية، على سبيل المثال، قد ينشأ سؤال، ما هو يقوم بـ OllyDbg وIDA، ولكن لأن المقالات مفصلة للغاية وسأبحث عن عناصر مماثلة في IDA، مما سيمنحني فهمًا أساسيًا للعمل مع IDA.

لذلك، لن أصف المهارات الأساسية عند العمل مع المجمّع كما هو الحال في مقالات ريكاردو نافاجا، لأنني أعتقد أن أولئك الذين يتحولون إلى IDA يفهمون بالفعل قليلاً ما هي المكدس، والسجلات، وكيف تعمل الذاكرة وما هي المشروطة وغير المشروطة. القفزة الشرطية هي، ولكن دعونا نبدأ على الفور في البحث عن البرامج الموضحة في مقالات ريكاردو. سأحاول الاطلاع على جميع مقالاته لتحليل الكراك الذي ذكره.

المقالة الأولى التي يتم فيها تحليل الكراكمي هي الفصل رقم 9، ولكن بالنسبة لي سيكون الفصل الأول.
قم بتنزيل الملف الضروري الذي سيتم فحصه، على سبيل المثال من موقع Wasm.ru
قم بتشغيل IDA وافتح الملف فيه عبر File->Open. ثم نرى الصورة التالية:

يمكن ترك جميع الإعدادات في الوضع الافتراضي، لأنها لا تخبرني بأي شيء خاص في الوقت الحالي. انقر فوق "موافق" وشاهد نافذة IDA الرئيسية:


يتم تمييز المواضع التالية بدوائر بالأرقام:
1. معلومات حول القاعدة ونقطة الدخول وحجم قسم الكود الافتراضي والحقيقي ومعلومات أخرى مفيدة حول القسم.
2. الوظائف الموجودة في البرنامج، والوظائف التي يتم استيرادها من المكتبات الخارجية موضحة باللون الوردي. يبدأ- غالبًا ما تكون هذه وظيفة تأتي عند نقطة الدخول، بالمناسبة، انظر إلى الخيارات نقطة الدخوليمكنك الضغط على مفتاح التشغيل السريع CTRL+E.
3. في الواقع، رمز التجميع نفسه للوظيفة المفتوحة الحالية، إذا كنت لا تريد البحث في الوضع الرسومي، فيمكنك تحويله إلى ورقة نصية متواصلة بمسافة، والنقر بزر الماوس الأيمن للتبديل مرة أخرى إلى الرسم في قائمة عرض الرسم البياني.
4. تعتبر الخريطة المصغرة للوظائف مع جميع التحولات وما شابه ذلك مفيدة جدًا للتوجيه في الكود.

لتتمكن من تشغيل تطبيق في مصحح أخطاء، يجب عليك تحديد مصحح الأخطاء نفسه، نظرًا لأن رمز القائمة لا يعد مصحح أخطاء.
انقر F9أو حدد الخيار في الأعلى مصحح الأخطاء- نافذة تسمى حدد مصحح الأخطاءالذي نختار فيه مصحح أخطاء Win32 المحليبالنسبة للمبتدئين، سيكون مصحح الأخطاء هذا كافيا بالنسبة لنا، وسنتعامل مع الباقي لاحقا.

انقر مرة أخرى F9ويبدأ البرنامج دون توقف عند نقطة الدخولكما هو الحال في OllyDbg. يمكن تصحيح ذلك إذا كنت تريد التوقف باستمرار في البداية، فانتقل إلى الإشارة المرجعية مرة أخرى مصحح الأخطاءوهناك نختار مصحح الأخطاء خياراتفي النافذة التي تفتح، يمكنك تحديد المربع توقف عند نقطة دخول العمليةونحصل على نفس رد الفعل كما في OllyDbg؛ عندما نبدأ في تصحيح الأخطاء، نتوقف عند نقطة الدخول. ولكن يمكنك أيضًا تعيين نقطة توقف يدويًا على الفور إذا لزم الأمر من خلال النظر إلى قائمة ASM والتوقف عند هذا الحد.

الآن دعونا نلقي نظرة على نافذة مصحح الأخطاء:


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

ماذا نحتاج هنا؟ الأدوات الرئيسية موضحة في الصورة التالية:


التفكيك- في الواقع يستدعي نافذة بها برنامج مفكك.
تفريغ عرافة- يفتح نافذة مع تفريغ.
الكود الكاذب- تحاول هذه الوظيفة تحويل كود ASM إلى ما يشبه C بشكل مثير للشفقة.
صادرات- ما يصدره البرنامج أو المكتبة.
الواردات- ما يستورده البرنامج أو المكتبة.
الأسماء- قائمة بأسماء API الموجودة في هذا الملف القابل للتنفيذ.
وظائف- قائمة الوظائف الموجودة في البرنامج.
سلاسل- السلاسل النصية المكتشفة في البرنامج.
شرائح- الأجزاء التي تم اكتشافها في الذاكرة.
هذا يكفي للبدء، لأن الغرض من الوظائف الأخرى ليس واضحا بعد، وستكون هناك حاجة إلى الوظيفة الحالية لدراسة برنامج Crackme الأول.

الآن القليل عن مصحح الأخطاء، تظل المفاتيح الرئيسية قياسية
F9- تنفيذ البرنامج
F8- التتبع دون الدخول في الوظيفة
F7- تتبع الخوض في الوظائف
F2- إزالة/تثبيت نقطة توقف على السطر الذي يوجد به المؤشر حاليًا.

كيفية التمييز في IDA حيث نحن الآن في البرنامج الذي نقوم بتصحيح الأخطاء أو نقوم بالفعل بالبحث فيه من خلال استيراد dll - يمكنك البحث في نموذج نصي على يسار رقم الموضع ورؤية الوصف، على سبيل المثال مثل هذا:
kernel32.dll:764FD8F3 موف إيدي، إيدي
حسنا، وفقا لكلمة kernel32. يتضح على الفور أننا الآن في النواة.

حسنًا، لنعد الآن إلى صدعنا الذي طالت معاناتنا.
فلنبدأ تشغيله ونحاول إدخال نوع ما من الاسم والرقم التسلسلي، وسيظهر مربع رسالة يقول "لم يحالفك الحظ يا صديقي!" هذا يعني أننا لم نخمن الاسم والمستخدم. دعونا نحاول التقاط هذه الرسالة ونرى كيف يمكننا إجبارها على إنتاج الرسالة الصحيحة التي تفيد بصحة الاسم والرقم التسلسلي. من المعروف أن إخراج رسالة الفشل يستخدم وظيفة API القياسية messageBoxA، لذلك نحن بحاجة إلى وضع نقطة توقف عليه.
دعنا نذهب إلى منظر->فتح طرق العرض الفرعية->وظائفأو الضغط إزاحة+F3وهنا نرى جميع الوظائف التي تمكنا من تحديدها المؤسسة الدولية للتنمية.
حدد الوظيفة التي نحتاجها messageBoxAوباستخدام القائمة المنسدلة للماوس الأيمن، قم بتعيين نقطة توقف للوظيفة. شيء من هذا القبيل:

نعم. بعد التثبيت، سنواصل تنفيذ البرنامج ونحاول إدخال الاسم والرقم التسلسلي الخاطئين مرة أخرى (بالمناسبة، يمكنك في أغلب الأحيان العودة إلى نافذة تصحيح الأخطاء الافتراضية باستخدام الزر خروج)
توقف تصحيح الأخطاء عند ظهور رسالة حول تسجيل دخول وكلمة مرور غير صحيحين، رائع، دعنا نرى المعلومات المفيدة التي يمكننا استخراجها.
نجد أنفسنا عند مدخل وظيفة messageBoxA، الوظيفة نفسها ليست مثيرة للاهتمام بالنسبة لنا، لذلك ننقر CTRL+F7مما يعني تنفيذ الكود حتى يتم اكتشاف الإرجاع الأول، أي خروج الوظيفة. بعد كل التلاعبات، تبدو النافذة الرئيسية للكود المفكك كما يلي:

نعم! هذا هو الإجراء الذي يقوم بتمرير الوسائط إلى messageBoxA الذي يعرض رسالة حول الرقم التسلسلي والاسم الخاطئين. وبما أن الغرض واضح، يمكنك إعادة تسمية الوظيفة على الفور عن طريق النقر بزر الماوس الأيمن (زر الفأرة الأيمن) عليها sub_401362واختيار العنصر هناك إعادة تسميةأو باستخدام الزر الساخن ن.سأسمي هذه الوظيفة أهتونج! :)

دعونا نلقي نظرة أبعد على مصدر هذا الإجراء وما يكمن وراءه. دعونا انقر F8وسوف نصل إلى المستوى الأعلى. وهناك يمكنك أن ترى على الفور نوعًا من الفحص باستخدام الأسهم، حيث يؤدي سهم واحد إلى اليسار إلى إجراء ضار أهتونجلكن الثاني ليس واضحًا جدًا، لكنه مرئي هناك يتصلوالعنوان sub_40134D، من المثير جدًا رؤية ما هو موجود هناك. الخيار 2 من حيث المبدأ، 1 هو النقر مرتين على LMB (زر الماوس الأيسر). sub_40134Dوالدخول إلى هذه الوظيفة، والثانية هي فقط تمرير الماوس فوقها sub_40134Dوانتظر نصف ثانية، وسيظهر لك جزء من هذه الوظيفة، مثل هذا:

إنه أمر مثير للاهتمام بالفعل، ويبدو أن خيار التحقق الآخر يؤدي إلى النافذة الصحيحة. دعونا نسمي هذا الإجراء جيد.
نقوم بإزالة نقطة التوقف القديمة messageBoxA، نحن لسنا بحاجة إليه، فلنذهب إليه المصحح->نقاط التوقف->قائمة نقاط التوقفوحذف نقطة التوقف القديمة في النافذة التي تفتح.
أنت الآن بحاجة إلى وضع نقطة توقف على jz للتحقق من هذه الإجراءات أهتونجو جيدإما عن طريق الرنمينبي وتحديد الخيار المناسب أو مفتاح التشغيل السريع F2. دعونا نعيد تشغيل البرنامج ونلقي نظرة حولنا.
سوف نحصل على النافذة التالية :

لسوء الحظ، لا يظهر ذلك في الصورة الثابتة، لكن خذ كلامي على محمل الجد، في اللحظة التي يومض فيها السهم الذي يؤدي إلى الإجراء أهتونجوهذا ليس جيدًا جدًا. سيكون من الجميل أن يكون لدينا سهم أخضر يومض في اتجاه الإجراء الذي أطلقناه جيد.للقيام بذلك، تحتاج إلى تعيين علامة ZF على 1.RMB على العلم وتحديد الخيار قيمة الزيادةأو حدد العلم وانقر على الزر +(زائد)لوحة المفاتيح الرقمية. بالطبع من الأفضل مشاهدته في الديناميكيات، ومن الصعب رؤيته في الصور الثابتة، ولكن الآن يومض السهم إلى الجانب جيديبدو الإجراء في القائمة كما يلي:

هنا يكون الأمر أكثر وضوحًا من الناحية الثابتة، عندما يكون ZF = 0، فإن الانتقال لا يحدث ويبدو كخط منقط، وبالتالي ننتهي بإجراء AHTUNG، وعندما يتم ذلك، يمكننا رؤية سهم أخضر سميك ويؤدي إلى الإجراء الجيد.
حسنًا، فلنضغط أخيرًا F9واستمتع بالنتيجة: عمل عظيم، زميله. الآن جرب CrackMe التالي.


صحيح، إذا قمت بإغلاق البرنامج وفتحه مرة أخرى في مصحح الأخطاء، فستختفي العلامة بالطبع، فأنت بحاجة إلى التوصل إلى شيء لتصحيحه ولم يعد منحرفًا بالأعلام، الخيار الأبسط، هذا هو المكان جي زييفعل JNZ، وعلى العكس من ذلك، سيتم قبول أي رقم تسلسلي غير صحيح، باستثناء الرقم الصحيح.
الرمز السداسي JZ - 74 ورمز JNZ هو 75, هذا يعني أننا بحاجة إلى تغيير البايت، والانتقال إلى السطر الذي نريد تغييره، والانتقال إليه يحرر->برنامج التصحيح->تغيير البايت.
ستظهر لوحة بها مجموعة من البايتات:
74 07 E8 18 01 00 00 إب 9A E8 FC 00 00 00 إب 93
فمن الضروري تصحيح الرقم الأول بواسطة 75 لجعلها تعمل
75 07 E8 18 01 00 00 إب 9A E8 FC 00 00 00 إب 93
ستكون قادرًا على رؤية التغييرات في الكود المفكك.
وبالتالي فإن أي رقم تسلسلي باستثناء الرقم الصحيح سوف يمر الآن بشكل صحيح، على الرغم من أنني أعتقد أن هذه خدعة قذرة، فمن الأفضل إما معرفة الرقم التسلسلي أو عمل رقم غير مشروط جي إم بي.

دعونا نحفظ نتيجة التصحيح، ملف->إنتاج الملف، ستسقط مجموعة من عمليات الحفظ المحتملة، حتى في إملف تنفيذى، ولكن لسبب ما لا يعمل، لذلك دعونا نحفظه على أنه عادي ديف.
لننظر إلى الملف لنرى ما حدث:

فقط ما تحتاجه.

حسنًا، هذا كل شيء لهذا اليوم، وأعتقد أن الجزء التالي سيكون خلال أسبوع.

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

ولدت فكرة الدورة من حقيقة أن العديد من الدروس في الدورة الجديدة من CracksLations كانت صعبة للغاية بالنسبة للمبتدئين، وعندما فشلوا في الوصول إلى المستوى المطلوب، وجدوا أنفسهم محبطين، وفي كثير من الحالات، رفضوا ذلك. يكمل. لذلك، فإن الغرض من هذه "المقدمة..." ليس تكرار الدروس الممتازة من "الدورة الجديدة..."، والتي تجاوز عددها بالفعل 500، ولكن وضع الأساس حتى يتمكن من أكملوا هذه الدورة من سوف تكون قادرة على قراءة المزيد من الدروس المعقدة. وهذا، مثل كل شيء في حرفتنا، يتطلب جهدًا كبيرًا، والهدف الرئيسي هو تقليل هذا المقدار، وتوفير المعرفة الأساسية والسماح بمزيد من الفهم للمواد الأكثر تعقيدًا.

لماذا OLLYDBG؟

لن نتحدث هنا عن المواجهة الأبدية بين Soft-Ice وOllyDbg؛ أعتقد أنه حتى متعصبي Soft-Ice يعترفون أنه من الأسهل البدء بـ OllyDbg، نظرًا لوجود الكثير من المعلومات عنها ومن الأسهل دراستها. نحتاج إلى الدخول إلى عالم الاختراق من خلال الباب المسمى "OllyDbg"، وعندها فقط يمكن لأي شخص يحتاج إليه التبديل إلى أي مصحح أخطاء آخر مطلوب، نظرًا لأن طرق الاستخدام فقط هي التي تتغير، لكن الجوهر يظل كما هو.

لنبدأ من البداية

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

نظرًا لأننا نبدأ من الصفر، نحتاج أولاً إلى فك ضغط الأرشيف الذي تم تنزيله في مجلد على محرك الأقراص الثابتة لديك والذي يمكن الوصول إليه بسهولة. قد تكون الفكرة الجيدة هي إنشاء مجلد على محرك الأقراص C:/. على الرغم من أنه سيعمل في أي مكان آخر، إلا أنني سأفترض أنه تم تحديد محرك الأقراص C:/.

بعد فك ضغط الملف، انتقل إلى المجلد الذي تم إنشاؤه وانظر:

يحتوي على الملف القابل للتنفيذ OLLYDBG.exe، والذي نحتاج إلى تشغيله، والذي قمت بإنشاء اختصار له على سطح المكتب الخاص بي للراحة.

حسنًا، كل شيء جاهز للانطلاق. انقر على OllyDbg:

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

هذا هو برنامج OllyDbg خالص، والبرنامج الأول الذي سنفتحه فقط للتعرف على OllyDbg سيكون برنامج CrueHead الشهير CrackMe، المرفق بهذا البرنامج التعليمي.

لفتح ملف في OllyDbg، انتقل إلى ملف -> فتح أو انقر على الأيقونة:

سيتم فتح نافذة يمكنك من خلالها العثور على الملف المطلوب، وهو في هذه الحالة ملف CrueHead’s crackme.

سيتم فتح الكراك المذكور أعلاه، وفي الوقت الحالي لا يهم أنه من غير الواضح تمامًا ما يعنيه العرض الذي يفتح أمامنا - في الوقت الحالي سنستعرض فقط الأجزاء والوظائف المختلفة لـ OllyDbg وبعض الإعدادات، بحيث عندما تظهر في البرامج التعليمية اللاحقة، على سبيل المثال، "انتقل إلى DUMP"، فأنت على الأقل تعرف مكان وجود هذا الخيار.

سنلقي نظرة هنا على الأجزاء الأربعة لنافذة OllyDbg الرئيسية:

1) كود مفكك

وتسمى أيضا القائمة. هنا يوضح لنا أولي الكود المفكك للبرنامج الذي سنقوم بتصحيحه؛ بشكل افتراضي، يتم تكوين Ollie لتحليل البرنامج عند فتحه. يمكن تغيير ذلك في الخيارات -> خيارات التصحيح.

أي أنه إذا تم تحديد خانة الاختيار "AUTO START ANALIISIS OF MAIN MODULE"، فسوف يقوم OllyDbg بتحليل البرنامج وإظهار معلومات إضافية عنه.

هذه هي بداية قائمة الكراك التي تم تحليلها لـ CrueHead، وإذا فتحناها دون تحليل، يمكننا رؤية الفرق.

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

غالبًا ما يعرض OllyDbg بعض أجزاء البرنامج بشكل غير صحيح لأنه يفسر عن طريق الخطأ التعليمات البرمجية القابلة للتنفيذ على أنها بيانات، ثم يعرض شيئًا مثل هذا:

في هذه الحالة، يمكنك إزالة التحليل يدويًا عن طريق النقر بزر الماوس الأيمن على القائمة واختيار "تحليل -> إزالة التحليل من الوحدة".

ومن ثم سيتم عرض القائمة بشكل صحيح.

هناك خيار آخر يمكنك استخدامه لتسهيل الأمور والذي لا أحبه شخصيًا (لكن الأذواق تختلف) وهو القفز وتمييز المكالمات - انقر بزر الماوس الأيمن على القائمة وحدد "المظهر -> التمييز -> القفزات والمكالمات".

سوف تحصل على ما يلي:

نرى هنا أنه يتم تمييز المكالمات باللون الأزرق السماوي، ويتم تمييز التحولات باللون الأصفر.

أصبحت القائمة الآن أكثر قابلية للقراءة، ولكن ليس لدينا أي فكرة عما يعنيه ذلك بعد، ولكن من الجيد أن تكون الأداة جاهزة للاستخدام في المستقبل.

2) السجلات

النافذة الثانية المهمة هي نافذة التسجيل.

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

هناك الكثير من المعلومات التي لا نراها، ولكن يمكنك ضبط وضع العرض على ثلاث حالات ("عرض سجلات FPU" - عرض سجلات FPU، "عرض سجلات 3D الآن" - عرض سجلات "3D الآن" و"عرض سجلات تصحيح الأخطاء" "- عرض سجلات التصحيح). افتراضيًا، يتم عرض العناصر الأولى.

3) كومة أو كومة

الآن دعنا ننتقل إلى "المكدس أو الكومة". لا يوجد الكثير من خيارات التكوين هنا، بخلاف القدرة على عرض المعلومات المتعلقة بسجلات ESP وEBP.

افتراضيًا، وضع عرض المعلومات المتعلقة بـ ESP (وهو أيضًا الأكثر فائدة)، ولكن يمكن تغييره إلى وضع عرض المعلومات المتعلقة بـ EBP، والذي تحتاج إلى النقر بزر الماوس الأيمن فوقه في هذه النافذة وتحديد " GO TO EBP"، والاستخدام الإضافي لعنصر "GO TO ESP" سيعيدنا إلى الوضع السابق.

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

4) تفريغ

تحتوي نافذة التفريغ على العديد من أوضاع العرض التي يمكن تغييرها عن طريق النقر بزر الماوس الأيمن في نافذة التفريغ واختيار الوضع الذي تحتاجه. الوضع الافتراضي هو 8 بايت Hex/ASCII.

الوضع الافتراضي هو أيضًا الوضع الأكثر استخدامًا، ولكن في الوقت نفسه، لدينا القدرة على تغييره لعرض التعليمات البرمجية المفككة (DISSEMBLE)، والنص (TEXT)، والتنسيقات الأخرى (SHORT، LONG، FLOAT).

وأخيرًا، خيار Special -> PE HEADER، والذي، كما سنرى في الفصول القادمة، يمكن أن يكون مفيدًا جدًا.

الآن نحن نعرف الأجزاء الرئيسية من نافذة OllyDbg الرئيسية، ولكن هناك أيضًا نوافذ لا يمكن الوصول إليها بشكل مباشر، ولكن يمكن استدعاؤها إما من خلال القائمة أو من خلال الأزرار الموجودة على لوحة التحكم.

دعونا ننظر إلى كل واحد منهم.

يوضح لنا الزر L أو VIEW->LOG ما يكتبه OllyDbg في نافذة السجل. يمكن تكوينه لعرض أنواع مختلفة من المعلومات، وبشكل افتراضي، تقوم نافذة السجل بتخزين جميع معلومات بدء التشغيل، بالإضافة إلى المعلومات المتعلقة بسجلات نقاط التوقف الشرطية. سنتعرف على الأخير في وقت لاحق، ولكن الآن دعونا نلقي نظرة على المعلومات المتعلقة بالعملية الجارية (في حالتنا، هذا هو صدع CrueHead) والمكتبات التي يقوم بتحميلها.

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

يعرض لنا الزر E أو VIEW->EXECUTABLES قائمة بالوحدات التي يستخدمها البرنامج: exe وdll وocx وغيرها.

هنا أيضًا، يظهر زر الفأرة الأيمن العديد من الخيارات التي لن ننظر إليها حاليًا، ولكننا رأيناها بالفعل عند استكشاف نافذة OllyDbg الرئيسية.

يعرض الزر M أو VIEW->MEMORY الذاكرة التي يشغلها برنامجنا. نرى هنا أقسام التطبيق والمكتبات التي تستخدمها العملية والمكدس والأقسام المختلفة التي يشغلها النظام، وغالبًا ما تشغل البرامج أقسامًا جديدة من الذاكرة أثناء التنفيذ.

من خلال النقر بزر الماوس الأيمن، يمكننا البحث في الذاكرة للعثور على سلاسل من مختلف الأنواع (نص، سداسي عشري، يونيكود)، ومن الممكن أيضًا تحديد نقاط التوقف في الأقسام، بالإضافة إلى القدرة على تغيير حقوق الوصول إلى الأخيرة (اختر SET ACCESS ).

الزر T أو VIEW->THREADS يعرض لنا قائمة المواضيع (المواضيع) الخاصة بالبرنامج.

على الرغم من أننا لا نعرف الآن ما هو عليه، وسوف نكتشف ذلك فقط في الفصول اللاحقة، فلن يكون من الضروري التعرف على كل من النوافذ. وسوف نتعلم كيفية استخدامها لاحقا.

يعرض الزر W أو VIEW->WINDOWS نوافذ البرنامج، ولكن نظرًا لعدم تشغيله بعد، تظل قائمة النوافذ فارغة.

يعرض الزر H أو VIEW->HANDLES المقابض، وسأشرح لاحقًا ما يفعلونه.

الزر C أو VIEW->CPU يعيدنا إلى نافذة OllyDbg الرئيسية.

يعرض الزر / أو عرض->التصحيحات قائمة بالتصحيحات المطبقة إذا تم تغيير البرنامج. وبما أنه لم يتم إجراء أي تغييرات حتى الآن، تظل النافذة فارغة في الوقت الحالي.

يعرض الزر K أو VIEW->CALL STACK "مكدس المكالمات"، وهي قائمة بالمكالمات التي واجهناها حتى النقطة التي توقف فيها البرنامج.

الزر B أو عرض->نقاط التوقف يعرض قائمة بنقاط التوقف العادية الموجودة في البرنامج. لا توجد نقاط توقف للأجهزة أو نقاط توقف للذاكرة، فقط نقاط توقف عادية.

يعرض الزر R أو VIEW->REFERENCES نافذة من الروابط التي تلقيناها نتيجة البحث عن الروابط في Ollie

يعرض الزر "..." أو VIEW->RUN TRACE نتيجة أمر RUN TRACE. يمكننا هنا أيضًا تحديد خيار LOG TO FILE لحفظ نتائج التتبع في ملف نصي.

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

كيفية تكوين OllyDbg ليصبح JIT (مصحح الأخطاء في الوقت المناسب)

بالطبع، لن نستخدم JIT طوال الوقت، ولكن فقط في حالات خاصة، لأنه إذا حدث خطأ في أي برنامج قيد التشغيل على جهازنا، فلن نحتاج إلى استخدام Ollie على الإطلاق (افتراضيًا، dr.watson هو تستخدم كـ JIT).

لجعل OllyDbg مصحح أخطاء JIT، عليك الانتقال إلى الخيارات->تصحيح الأخطاء في الوقت المناسب

واضغط على زر MAKE OLLYDBG JUST IN TIME DEBUGGER وDONE بالتسلسل

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

ربط المكونات الإضافية في OllyDbg

يتيح لك OllyDbg توصيل المكونات الإضافية التي قد تكون مفيدة لحل مشكلة معينة. في الوقت الحالي، سنقتصر على توصيل المكوّن الإضافي COMMAND BAR لمعرفة كيفية القيام بذلك.

بعد ذلك، قم بفك ضغط البرنامج المساعد وإلقاء نظرة على محتويات المجلد الذي تم فيه ذلك:

أولا، تحتاج إلى إنشاء مجلد للمكونات الإضافية. سأقوم بإنشائه في C:/ وسأسميه PLUGINS.

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

للقيام بذلك، انتقل إلى الخيارات->المظهر.

وفي النافذة التي تفتح، افتح علامة التبويب "الأدلة".

نرى أن المسار إلى المكونات الإضافية هو الدليل الذي يوجد به OllyDbg.exe نفسه، ويمكننا وضع المكونات الإضافية هناك، لكني أحب أن أبقيها منفصلة، ​​ثم انقر فوق PLAGIN PATH->BROWSE للعثور على المجلد الذي أنشأناه .

حدد مجلد PLUGINS واحفظ التغييرات.

وهذا يعني أنك تحتاج إلى إعادة تشغيل Ollie حتى يتعرف على المجلد الجديد الذي يحتوي على المكونات الإضافية، ولكن عليك أولاً نسخ آخر مكون إضافي تم تنزيله إليه.

انسخ محتويات الأرشيف بالكامل إلى مجلد PLUGINS.

الآن جميع ملفات البرنامج المساعد "Command Bar" موجودة في مجلد PLUGINS، ويجب أيضًا وضع الباقي فيه (في كثير من الأحيان لا يمكنك نسخ جميع الملفات الموجودة في الأرشيف، ولكن فقط ملف dll).

الآن أغلق OllyDbg، إذا كان لا يزال مغلقًا، وقم بتشغيله مرة أخرى. نرى أن شريط الأوامر وخياراته قد ظهر في قائمة المكونات الإضافية.

في الجزء السفلي من OllyDbg نرى شريط الأوامر المثبت.

هذا حقل نصي لإدخال الأوامر التي يمكن أن تكون مفيدة لنا في كثير من الحالات، وسنرى لاحقًا استخدامها، ولكن من المهم الآن معرفة كيفية توصيل المكونات الإضافية.

لإلغاء تثبيت PLUGIN، ما عليك سوى مسح ملف dll المقابل من مجلد PLUGINS وإعادة تشغيل OllyDbg، وسيختفي البرنامج الإضافي. ومع ذلك، فمن الحكمة الاحتفاظ بشريط الأوامر قيد التشغيل دائمًا.

دعونا نفتح صدع CrueHead مرة أخرى في OllyDbg.

المفاتيح الأكثر فائدة في OllyDbg هي:

F7: ينفذ سطرًا واحدًا من التعليمات البرمجية (إذا كنا في وضع الاتصال، فانتقل إلى القسم المطلوب من التعليمات البرمجية)

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

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

F2: يعين نقطة توقف عادية على السطر المحدد. لإزالة نقطة التوقف هذه، اضغط F2 مرة أخرى.

على سبيل المثال:

نريد تعيين نقطة التثبيت على الموضع 40101A، لذلك نحدد هذا الخط بالماوس.

بنقرة واحدة على الفأرة يتم تحديده ويصبح باللون الرمادي كما في الصورة. ثم اضغط F2.

نرى أن الموضع المقابل في العمود الأول يتحول إلى اللون الأحمر، مما يشير إلى وجود نقطة توقف هنا. بالضغط على F2 مرة أخرى يمكنك إزالته.

F9: يقوم بتشغيل برنامج سيتم تشغيله حتى يصل إلى نقطة توقف، أو يطرح استثناءً، أو ببساطة يتوقف عن التشغيل لسبب ما. عند تشغيل البرنامج، يتم عرض كلمة RUNNING في الركن الأيمن السفلي من OllyDbg.

من خلال إطلاق برنامج CrueHead's crackme، سنرى ما يلي:

لإيقاف تشغيل البرنامج مؤقتًا، اضغط على F12 أو DEBUG->PAUSE.

نرى أن OllyDbg يعرض الكلمة متوقف مؤقتًا. يمكنك متابعة تشغيل البرنامج بالضغط على F9 أو DEBUG->RUN.

لإغلاق البرنامج الذي يتم تصحيح أخطائه، حدد DEBUG->CLOSE.

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

ل كيفية بدء جلسة تصحيح الأخطاء

أسهل طريقة هي تشغيل OllyDbg، وتحديد ملف -> فتح وتحديد البرنامج الذي تريد تصحيح أخطائه. إذا كان هذا البرنامج يتطلب أي معلمات سطر أوامر، فاكتبها في المربع الموجود أسفل مربع الحوار، أو حدد أحد أسطر المعلمات التي استخدمتها في الجلسات السابقة.

يمكن لـ OllyDbg إجراء تصحيح أخطاء ملفات DLL المستقلة. في هذه الحالة، يقوم OllyDbg بإنشاء وتشغيل تطبيق صغير يقوم بتحميل المكتبة واستدعاء الوظائف المصدرة بناءً على طلبك.
إذا كنت تريد إعادة تشغيل آخر برنامج كنت تقوم بتصحيح أخطائه، فما عليك سوى الضغط على Ctrl+F2 (هذا هو مفتاح التشغيل السريع لإعادة تشغيل البرنامج) وسيقوم OllyDbg بتشغيله بنفس المعلمات. وبدلاً من ذلك، حدد القائمة "ملف" ثم البرنامج من السجل. يمكنك أيضًا سحب ملف قابل للتنفيذ أو DLL من Windows Explorer وإفلات الرمز الخاص به في OllyDbg.

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

يمكنك إرفاق OllyDbg بعملية قيد التشغيل. حدد ملف -> إرفاق، وحدد عملية من القائمة. ومع ذلك، لاحظ أنه بعد إغلاق OllyDbg، سيتم الخروج من هذه العملية أيضًا. لا تحاول أبدًا الارتباط بعملية النظام؛ فقد يؤدي ذلك إلى تعطل نظام التشغيل. (لكي نكون منصفين، في معظم الحالات، لن يسمح لك نظام التشغيل بالارتباط بعملية حساسة).

يمكن أن يعمل OllyDbg كمصحح أخطاء JIT في الوقت المناسب. وهذا يتطلب التسجيل في سجل النظام. حدد خيارات -> التصحيح في الوقت المناسب، وفي مربع الحوار الذي يظهر، حدد "جعل OllyDbg مصحح الأخطاء في الوقت المناسب" ). الآن، عندما يتعطل أحد التطبيقات، سيتم سؤالك عما إذا كنت تريد تصحيح هذا التطبيق. ثم سيقوم نظام التشغيل بتشغيل OllyDbg، والذي سيتوقف مباشرة عند النقطة التي حدث فيها الفشل. أو، إذا اخترت الانضمام دون تأكيد، فسيتم تشغيل OllyDbg دون أي أسئلة. لاستعادة مصحح الأخطاء السابق "في الوقت المناسب"، انقر فوق الزر المقابل في مربع الحوار المذكور وهذا كل شيء.

يوجد أيضًا خيار آخر لإضافة OllyDbg إلى قائمة السياق المرتبطة بالملفات التنفيذية في Windows Explorer. (هذه الفكرة تعود إلى JochenGerster). من القائمة الرئيسية لـ OllyDbg، حدد "خيارات|إضافة إلى Explorer"، ثم انقر فوق "إضافة OllyDbg إلى القائمة في Windows Explorer". بعد ذلك، يمكنك النقر بزر الماوس الأيمن على الملف القابل للتنفيذ، أو DLL، وتحديد OllyDbg من القائمة. يقوم هذا الخيار بإنشاء 4 مفاتيح في سجل النظام:

HKEY_CLASSES_ROOT\exefile\shell\Open باستخدام OllyDbg
HKEY_CLASSES_ROOT\exefile\shell\فتح باستخدام OllyDbg\command
HKEY_CLASSES_ROOT\dllfile\shell\Open باستخدام OllyDbg
HKEY_CLASSES_ROOT\dllfile\shell\فتح باستخدام OllyDbg\command

يمكن لـ OllyDbg تصحيح أخطاء تطبيقات وحدة التحكم (المعتمدة على النص).

لا يمكن لـ OllyDbg تصحيح أخطاء تطبيقات .NET. تتكون برامج .NET من كود زائف يقوم Windows بتفسيره أو تجميعه سريعًا في أوامر "86" الأصلية.

لاحظ أنه إذا كنت تستخدم نظام التشغيل Windows NT أو 2000 أو XP، فمن المحتمل أن تحتاج إلى الحصول على حقوق المسؤول لتصحيح أخطاء البرامج.

نقاط التوقف (نقاط التحكم)

يدعم OllyDbg عدة أنواع من نقاط التوقف:

- نقطة توقف منتظمة، يتم استبدال البايت الأول من الأمر الذي تريد التوقف عنده بأمر INT3 (Debugger Trap) خاص. يمكنك تعيين نقطة التوقف هذه عن طريق تحديد الأمر المطلوب في لوحة Disassembler والضغط على F2، أو من قائمة السياق. عند الضغط على F2 مرة ثانية، سيتم مسح نقطة التوقف. لاحظ أن البرنامج يتوقف قبل تنفيذ الأمر مع تعيين نقطة التوقف. عدد نقاط توقف INT3 التي يمكنك تعيينها غير محدود. عندما تقوم بإغلاق البرنامج الذي تقوم بتصحيحه، أو Debugger، يقوم OllyDbg تلقائيًا بحفظ نقاط التوقف على القرص. لا تحاول أبدًا تعيين هذا النوع من نقاط التوقف على البيانات أو في منتصف الأمر! سوف يحذرك OllyDbg إذا حاولت تعيين نقطة توقف خارج قسم التعليمات البرمجية. يمكنك إيقاف تشغيل هذا التحذير في خيارات الأمان. في بعض الحالات، قد يقوم مصحح الأخطاء بإدراج نقاط توقف INT3 المؤقتة الخاصة به.

- نقطة توقف مشروطة(Shift+F2) - نقطة توقف INT3 عادية مع شرط مرتبط. عندما يواجه مصحح الأخطاء نقطة التوقف هذه، فإنه يقوم بتقييم الشرط وإذا كانت النتيجة غير صفر أو كان الشرط غير صالح، فإنه يوقف تصحيح أخطاء البرنامج. ومع ذلك، فإن احتمال حدوث تجاوز بسبب نقطة توقف مشروطة غير صحيحة مرتفع جدًا (ويرجع ذلك بشكل رئيسي إلى زمن انتقال نظام التشغيل). على PII 450 ضمن نظام التشغيل Windows NT، يقوم OllyDbg بمعالجة ما يصل إلى 2500 نقطة توقف شرطية خاطئة في الثانية. إحدى الحالات المهمة لنقطة التوقف الشرطية هي التوقف عند رسائل Windows (مثل WM_PAINT). ولهذا الغرض، يمكنك استخدام المتغير الزائف MSG مع تفسير المعلمة المناسب. إذا كانت النافذة نشطة، راجع نقطة توقف الرسالة الموضحة أدناه.

- نقطة توقف مشروطة مع التسجيل(Shift+F4) - نقطة توقف مشروطة مع القدرة على تسجيل قيمة بعض التعبيرات أو معلمات دالة معروفة في كل مرة يتم فيها تشغيل نقطة التوقف أو عند استيفاء شرط محدد. على سبيل المثال، يمكنك تعيين نقطة توقف للكتابة في بعض إجراءات النافذة لتسجيل جميع المكالمات إلى هذا الإجراء (CALL)، أو معرفات رسائل WM_COMMAND المستلمة فقط، أو تعيينها على استدعاء CreateFile وتسجيل أسماء الملفات للقراءة فقط، إلخ. تعتبر نقطة توقف التسجيل بنفس سرعة نقطة التوقف الشرطية، ومن المؤكد أنه من الأسهل بكثير البحث خلال بضع مئات من الرسائل في نافذة السجل بدلاً من الضغط على F9 بضع مئات من المرات. بهذه الطريقة يمكنك اختيار تفسير أكثر ملاءمة لحالتك.

يمكنك تعيين عداد تمرير - عداد يتناقص في كل مرة يتم فيها استيفاء شرط التوقف. إذا لم يكن عدد التمريرات قبل التخفيض صفرًا، فسوف يستمر OllyDbg في التنفيذ. خذ بعين الاعتبار حلقة يتم تشغيلها 100 مرة (عشرية). لنضع نقطة التوقف في المنتصف ونضبط القيمة على 99. (عشري). سيتم إحباط OllyDbg عند التكرار الأخير.

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

- رسائل نقطة التوقف- نفس نقطة التوقف مع شرط الكتابة، فيما عدا أن OllyDbg يقوم تلقائيًا بإنشاء شرط يسمح لك بإيقاف بعض الرسائل (مثل WM_PAINT) عند نقطة الدخول إلى إجراء النافذة. يمكنك تثبيته في مربع ويندوز.

- تتبع نقطة التوقف(تتبع نقطة التوقف) - حالة حرجة لنقاط توقف INT3 المعينة في كل أمر محدد. إذا كنت تقوم بتتبع الدخول، فستتم إزالة نقطة التوقف وسيتم وضع علامة على العنوان على أنه تم تمريره بعد الوصول إلى الأمر. إذا كنت تستخدم تتبع التشغيل، فسيقوم OllyDbg بإضافة إدخال إلى سجل التتبع وستظل نقطة التوقف نشطة .

- نقطة توقف للذاكرة. يسمح لك OllyDbg بتعيين نقطة توقف واحدة فقط لكل ذاكرة. يمكنك تحديد جزء من الذاكرة في لوحات Disassembler أو Dump في نافذة وحدة المعالجة المركزية واستخدام قائمة السياق لتعيين نقطة توقف على الذاكرة. سيتم حذف نقطة توقف الذاكرة السابقة، إذا كانت موجودة، تلقائيًا. لديك خياران متاحان: الإجهاض عند الوصول إلى الذاكرة (القراءة أو الكتابة أو التنفيذ في الذاكرة) أو الإجهاض عند الكتابة فقط. لتعيين نقطة التوقف هذه، يقوم OllyDbg بتعديل سمات كتل الذاكرة التي تحتوي على التخصيص. في المعالجات المتوافقة مع 80x86، يتم توزيع الذاكرة وحمايتها في كتل بحجم 4096 بايت. إذا قمت بتحديد بايت واحد، فسيتعين على OllyDbg حماية الكتلة بأكملها. يمكن أن يؤدي هذا إلى العديد من الإنذارات الكاذبة ذات الفائض الهائل. استخدم هذا النوع من نقاط التوقف بحذر. تتسبب بعض وظائف النظام (خاصة في نظام التشغيل Windows 95/98) في توقف البرنامج الذي يتم تصحيح أخطائه بدلاً من إنشاء حدث تصحيح عند الوصول إلى الذاكرة المحمية.

- نقطة توقف الأجهزة(متوفر فقط في أنظمة التشغيل Windows ME أو NT أو 2000 أو XP). تسمح لك المعالجات المتوافقة مع 80x86 بتعيين 4 نقاط توقف للأجهزة. على عكس نقطة توقف الذاكرة، لا تؤدي نقاط توقف الأجهزة إلى إبطاء سرعة التنفيذ، ولكنها تغطي فقط ما يصل إلى 4 بايت. يمكن لـ OllyDbg استخدام نقاط توقف الأجهزة بدلاً من INT3 عند تنفيذ التعليمات البرمجية أو مسحها ضوئيًا.

- مقاطعة الوصول إلى ذاكرة واحدة(فاصل لقطة واحدة عند الوصول إلى الذاكرة) (متاح فقط في أنظمة التشغيل Windows NT و2000 وXP). يمكنك ضبطه في نافذة الذاكرة على كتلة كاملة من الذاكرة من قائمة السياق أو بالضغط على F2. تعتبر نقطة التوقف هذه مفيدة بشكل خاص إذا كنت تريد الرد على مكالمة أو العودة إلى بعض الوحدات. بمجرد تنفيذ التوقف، تتم إزالة نقطة التوقف.

- وقف التتبع العادي(إيقاف تشغيل التتبع مؤقتًا) (Ctrl+T) - تحديد الشروط التي يتم التحقق منها في كل خطوة من عملية تتبع التشغيل. يمكنك إيقاف تتبع التشغيل عندما يدخل EIP إلى نطاق آخر أو يغادره، أو عندما يكون الشرط صحيحًا، أو عندما يتطابق أمر مع أحد الأنماط المحددة، أو عندما يكون الأمر مريبًا، أو بعد تتبع عدد محدد من الأوامر . يرجى ملاحظة أن هذا الخيار يمكن أن يبطئ بشكل كبير (ما يصل إلى 20) من سرعة تتبع التشغيل.

يمكن لـ OllyDbg أيضًا إيقاف تنفيذ البرنامج في بعض أحداث تصحيح الأخطاء، مثل تحميل ملف DLL أو إلغاء تحميله، أو بدء سلسلة رسائل أو إيقافها، أو عندما يرسل البرنامج سلسلة تصحيح أخطاء.

أحمق

تعرض نافذة التفريغ محتويات الذاكرة أو الملف. يمكنك الاختيار من بين عدة تنسيقات محددة: بايت، أو نص، أو عدد صحيح، أو عائم، أو عنوان، أو تفكيك، أو رأس PE.

تدعم جميع نوافذ التفريغ وظائف النسخ الاحتياطي والبحث والتحرير. تتيح لك منطقة نافذة التفريغ في نافذة وحدة المعالجة المركزية تحديد العلامات وتعيين نقاط التوقف على الذاكرة والعثور على مراجع البيانات في تنفيذ التعليمات البرمجية وصورة مفتوحة للذاكرة المحددة في ملف قابل للتنفيذ (.exe أو .dll). تعرض قائمة التفريغ مجموعة نسبية فقط من الأوامر المتوفرة.

إذا كان النسخ الاحتياطي متاحًا، فانقر فوق العنوان/النسخ الاحتياطي في اللوحة لتبديل وضع العرض بين العرض الاحتياطي والعرض العادي. تتيح لك الأزرار الأخرى الموجودة على اللوحة تغيير أوضاع التفريغ.

مثل نافذة Disassembler، يقوم Dump بتخزين سجل طويل من مواقع الذاكرة التي تمت زيارتها. يمكنك التنقل عبر السجل بالضغط على الزرين "+" أو "-".

للتمرير عبر البيانات، اضغط باستمرار على المفتاح Ctrl ثم اضغط على الأسهم لأعلى/لأسفل.

وحدات

تسرد نافذة تشغيل الوحدات (اختصار لوحة المفاتيح: Alt+E) جميع الوحدات التي تم تحميلها حاليًا بواسطة العملية التي يتم تصحيح أخطائها. تعرض هذه النافذة أيضًا معلومات مفيدة مثل حجم الوحدة أو عنوان الإدخال أو إصدار الوحدة أو المسار القابل للتنفيذ. عادةً ما يتم إخفاء بعض المعلومات، مثل حجم الوحدة العشرية، والاسم الرمزي لنقطة الإدخال، وما إلى ذلك، بواسطة النظام. لرؤية هذه البيانات، قم بزيادة عرض الأعمدة المقابلة. تدعم قائمة السياق الخيارات التالية:

التفعيل - يعيد فحص الوحدات ويزيل التمييز من الوحدات الجديدة. في معظم الأحيان، يعتني OllyDbg بنفسه.

عرض الذاكرة - يفتح نافذة الذاكرة ويمرر إلى كتلة الذاكرة الأولى التابعة للوحدة المعروضة.

عرض التعليمات البرمجية في وحدة المعالجة المركزية - يفتح التعليمات البرمجية القابلة للتنفيذ للوحدة في Disassembler.

اتبع الإدخال - يتبع نقطة دخول الوحدة النمطية في أداة التجميع

تفريغ البيانات في وحدة المعالجة المركزية - يفتح قسم بيانات الوحدة في تفريغ وحدة المعالجة المركزية.

عرض الأسماء (Ctrl+N) - يعرض جدولاً يحتوي على جميع الأسماء (التصدير والاستيراد والمكتبة والمحددة من قبل المستخدم) المحددة أو المستخدمة في الوحدة النمطية الحالية.

وضع علامة كنظام DLL
وضع علامة على أنها DLL غير تابعة للنظام - لوضع علامة على الوحدة المحددة كنظام أو غير نظام. من خلال وضع علامة على الوحدة كنظام، فإنك تستبعدها من التتبع، مما يؤدي إلى تسريع تنفيذها بشكل كبير. بشكل افتراضي، وحدات النظام هي وحدات موجودة بشكل دائم في دليل النظام (عادةً c:\windows\system على نظام التشغيل Windows 95/98، وc:\winnt\system32 على NT/2000/XP).

قم بتحديث ملف .udd الآن - يكتب كافة البيانات المعتمدة على هذه الوحدة إلى ملف .udd. تقوم ملفات .udd بحفظ نقاط التوقف والعلامات والتعليقات والمراقبين والتحليل وما إلى ذلك بين جلسات تصحيح الأخطاء. يقوم OllyDbg تلقائيًا بإنشاء ملف .udd عند إلغاء تحميل الوحدة.

عرض الملف القابل للتنفيذ - يعرض تفريغ الملف القابل للتنفيذ.

عرض جميع الموارد - يعرض قائمة بجميع الموارد المحددة في الوحدة بالإضافة إلى معلومات مختصرة. لا يدعم OllyDbg الموارد ككائن منفصل؛ كل ما يمكنك فعله هو تفريغ المورد وتحريره في شكل ثنائي.

عرض سلاسل الموارد - يعرض قائمة بموارد السلسلة ومعرفاتها.

عرض ملف تعريف تتبع التشغيل - يحسب ملف التعريف لهذه الوحدة. انظر أيضًا تشغيل التتبع.

تحليل جميع الوحدات - يسمح لك بتحليل جميع الوحدات في وقت واحد. يستخرج التحليل معلومات مفيدة من التعليمات البرمجية المحملة؛ عادةً ما يكون تصحيح الأخطاء أسرع وأكثر موثوقية بمجرد تحليل التعليمات البرمجية.
بالنقر المزدوج على السطر، ستنتقل إلى الكود الذي يتم تشغيله في الوحدة في لوحة Disassembler.

بطاقة الذاكرة

تعرض نافذة خريطة الذاكرة كافة كتل الذاكرة التي يستخدمها البرنامج الذي يتم تصحيح أخطائه. لا توجد أدوات قياسية لإنجاز هذه المهمة، لذلك قد يحدث أن يقوم OllyDbg بدمج عدة أجزاء من الذاكرة الموزعة في كتلة ذاكرة واحدة كبيرة. ومع ذلك، في معظم الحالات ليست هناك حاجة إلى حل دقيق. للحصول على قائمة بكتل الذاكرة التي يطلبها أحد التطبيقات من خلال الاستدعاءات إلى GlobalAlloc() و LocalAlloc() وما إلى ذلك، استخدم قائمة الكومة.

إذا كانت كتلة الذاكرة عبارة عن قسم من وحدة قابلة للتنفيذ، فسيخبرك OllyDbg بنوع البيانات التي تحتوي عليها الكتلة: التعليمات البرمجية والبيانات والموارد وما إلى ذلك.

توجد بعض الاختلافات بين نظامي التشغيل Windows 95/98 وWindows NT/2000. في نظام التشغيل Windows 95/98، لا يتمكن OllyDbg من إظهار أسماء الملفات المعروضة. كما أن نظام التشغيل Windows 95/98 يحد من أنواع الوصول إلى الذاكرة المسموح بها: القراءة والكتابة. ضع في اعتبارك أيضًا أن نظام التشغيل Windows NT/2000 يتمتع بنطاق أوسع بكثير من الإمكانات، بما في ذلك تنفيذ الوصول والنسخ عند الكتابة وعلامة الحماية. يتجاهل OllyDbg سمة النسخ عند الكتابة.

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

يمكنك إظهار نافذة الذاكرة بالضغط على Alt+M.

تتوفر عناصر قائمة السياق التالية:

التفعيل - يقوم بتحديث قائمة الذاكرة المخصصة وإلغاء تخصيص كتل الذاكرة الجديدة.

عرض في Disassembler - يفتح كتلة ذاكرة في Disassembler. يتوفر هذا الخيار فقط عندما تحتوي كتلة الذاكرة على تعليمات برمجية قابلة للتنفيذ أو مستخرج ذاتي لبعض الوحدات.

تفريغ إلى وحدة المعالجة المركزية - يعرض محتويات كتلة الذاكرة في منطقة نافذة تفريغ وحدة المعالجة المركزية.

تفريغ - تفريغ محتويات كتلة الذاكرة في نافذة منفصلة. إذا كان نوع كتلة الذاكرة معروفًا، فسيقوم OllyDbg تلقائيًا بتحديد تنسيق التفريغ.

عرض جميع الموارد - إذا كانت الكتلة تحتوي على بيانات الموارد، فستظهر قائمة بجميع الموارد والبيانات المرتبطة بها. لا يدعم OllyDbg الموارد ككائن منفصل؛ كل ما يمكنك فعله بالموارد هو تفريغها وتحريرها بتنسيق ثنائي.

عرض سلاسل الموارد - إذا كانت الكتلة تحتوي على بيانات الموارد، فسيقوم Ollie بإدراج جميع سلاسل الموارد مع معرفاتها.

البحث - يسمح لك بالبحث في كافة كتل الذاكرة، بدءًا من الكتلة المخصصة، قبل مواجهة سلسلة ثنائية. إذا تم العثور على السلسلة، يعرض OllyDbg تفريغ كتلة الذاكرة التي تم العثور عليها. تشترك خريطة الذاكرة ونافذة التفريغ في نفس نمط البحث، لذا يمكنك متابعة البحث على الفور حتى يظهر التكرار التالي في التفريغ. يمكنك إغلاق نافذة التفريغ بالضغط على Esc.

ضبط إمكانية الوصول (F2؛ متوفر فقط في نظام التشغيل Windows NT/2000) - يحمي كتلة كاملة من الذاكرة. بعد نقطة التوقف، يقوم OllyDbg بإيقاف البرنامج الذي يتم تصحيح أخطائه وإزالة نقطة التوقف. تعتبر نقطة التوقف هذه مفيدة بشكل خاص إذا كنت تريد الرد على مكالمة أو العودة إلى بعض الوحدات.

إزالة قطع الوصول (F2) - يزيل قطع الوصول المثبت من كتلة الذاكرة.

تعيين نقطة توقف الذاكرة عند الوصول(تعيين نقطة توقف عند الوصول إلى الذاكرة) - يضبط نقطة توقف عند الوصول إلى الذاكرة في كتلة الذاكرة بأكملها. ستتم مقاطعة البرنامج في كل مرة يصل فيها البرنامج الذي يتم تصحيح أخطائه إلى كتلة الذاكرة هذه. يدعم OllyDbg نقطة توقف واحدة فقط لكل ذاكرة. في نظام التشغيل Windows 95/98، قد يتعطل البرنامج الذي يتم تصحيح أخطائه عندما تصل إجراءات النظام إلى كتل الذاكرة التي تحتوي على نقطة توقف. استخدمه كملاذ أخير.

تعيين نقطة توقف الذاكرة عند الكتابة(قم بتعيين نقطة توقف للكتابة على الذاكرة) - لتعيين نقطة توقف على كتلة الذاكرة بأكملها. سيتم مقاطعة البرنامج في كل مرة يكتب فيها إلى كتلة الذاكرة هذه. في نظام التشغيل Windows 95/98، قد يتعطل البرنامج الذي يتم تصحيح أخطائه عندما تصل إجراءات النظام إلى كتل الذاكرة التي تحتوي على نقطة توقف. استخدمه كملاذ أخير.

إزالة نقطة توقف ذاكرة SFX - يوقف البحث عند نقطة الدخول الفعلية إلى البرنامج المعبأ (SFX). يستخدم هذا البحث نوعًا خاصًا من نقاط توقف الذاكرة.

تعيين الوصول- يضبط سمة حماية الذاكرة المطلوبة على كتلة الذاكرة بأكملها.
الخيارات الممكنة:

لا يمكن الوصول
اقرأ فقط
القراءة / الكتابة
ينفذ
تنفيذ / قراءة

الوصول الكامل

نسخ إلى الحافظة

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

الجدول بأكمله - لنسخ بطاقة الذاكرة بأكملها إلى الحافظة كنص متعدد الأسطر. يحتوي السطر الأول من هذا النص على عنوان النافذة ("MemoryMap")، ويحتوي السطر الثاني على عناوين الأعمدة، وتحتوي جميع الأسطر اللاحقة على سجلات بيانات الذاكرة. تحافظ النسخة على عرض الأعمدة. لاستبعاد عمود من النسخ، قم بتقليل عرضه إلى الحد الأدنى (سيتحول باقي العمود إلى اللون الرمادي).

المراقبين والمفتشين

تحتوي نافذة المراقب على عدة تعبيرات. ويعرض قيمهم في العمود الثاني. يقوم OllyDbg بتخزين التعبيرات في ملف .udd الخاص بالوحدة الرئيسية بحيث تكون متاحة في المرة التالية التي تقوم فيها بتصحيح الأخطاء.

المفتش عبارة عن نافذة مستقلة يمكنها إظهار محتويات متغير، أو مصفوفة ذات بعد واحد أو ثنائي الأبعاد، أو حتى عناصر محددة من مصفوفة من الهياكل. التعبير هو في الأساس نفس التعبير Observer، لكن يمكن أن يتضمن معلمتين: %A و%B. عند تثبيت Inspector، يمكنك تحديد حدود لهذه المعلمات. يقوم OllyDbg بعد ذلك بحساب كافة التركيبات الممكنة لـ %A و%B في تعبير يبدأ من 0 إلى الحد الأقصى (غير متضمن)، ويعرض النتائج في جدول. لا يمكن أن يتجاوز الحد الأقصى لـ %B (عدد الأعمدة) 16.

مكدس المكالمة

تحاول نافذة Call Stack (Alt+K) تتبع تسلسل المكالمات على مكدس مؤشر الترابط المحدد وعرضه، إلى جانب المعلمات المعروفة أو المقترحة للوظائف التي يتم استدعاؤها. تكون هذه المهمة سهلة عندما تقوم الوظائف التي يتم استدعاؤها بإنشاء إطارات مكدسة قياسية (PUSH EBP; MOV EBP,ESP). لا تقلق برامج التحسين الحديثة بشأن الإطارات المكدسة، لذلك يستخدم OllyDbg حيلًا مختلفة. على سبيل المثال، يحاول OllyDbg تتبع التعليمات البرمجية إلى الإرجاع التالي ويحسب أي تغييرات في الدفع أو البوب ​​أو ESP. إذا لم يساعد ذلك، فإن OllyDbg يتخذ نهجًا أكثر خطورة ويستغرق وقتًا طويلاً: يقوم OllyDbg بفحص المكدس، محاولًا العثور على جميع عناوين الإرجاع والاختبار المحتملة حيث تم استدعاء الوظيفة بواسطة العبارة المقابلة، بما في ذلك الأوامر التي تم تحليلها. هناك أيضًا استدلالات أخرى مشكوك فيها إلى حد ما. يمكن أن يكون تصفح المكدس بطيئًا حقًا. يقوم OllyDbg بإنتاجه فقط إذا كانت نافذة Call Stack مفتوحة.

تحتوي نافذة Call Stack على 5 أعمدة: العنوان، المكدس، الإجراء، المستدعى من، الإطار.

يحتوي عمود العنوان على العنوان الموجود على المكدس، ويعرض Stack قيمة عنوان المرسل أو المعلمة المقابلة.

الإجراء (أو الإجراء / الوسائط) - يعرض المكان الذي تضع فيه نافذة Call Stack عنوان الوظيفة المطلوبة على المكدس. في بعض الحالات، لا يكون OllyDbg متأكدًا من صحة هذا العنوان ويضيف إحدى العلامات التالية:

نقطة الدخول التي تم العثور عليها غير موثوقة

ربما لم يتمكن OllyDbg من العثور على نقطة دخول موثوقة، ويجب التحقق من العنوان الذي تم العثور عليه باستخدام الاستدلال

يتضمن OllyDbg، ولم يتمكن من العثور على نقطة الإدخال ويعرف فقط أن هذا الإجراء يتضمن عنوان العرض

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

الاستدعاء من هو عنوان الأمر الذي يتم استدعاؤه بواسطة هذا الإجراء.
يتم إخفاء العمود الأخير، الإطار، بشكل افتراضي ويعرض قيمة مؤشر الإطار (سجل EBP) إذا كان معروفًا.

يعد فحص المكدس أكثر موثوقية وأسرع بكثير عندما يتم تحليل جميع الوظائف المطلوبة.

شجرة الدعوة

تستخدم شجرة الاستدعاء (CALL) (مفتاح Ctrl+K في Disassembler) نتائج التحليل لإعداد قائمة بالوظائف التي يتم استدعاؤها بواسطة إجراء معين، بشكل مباشر أو غير مباشر، وقائمة بجميع الاستدعاءات المعروفة لتلك الوظيفة. التأثير الجانبي - يتعرف على ما إذا كان الإجراء المحدد متكررًا بشكل صريح. تعني كلمة "صراحة" أنه لا يمكن تتبع الطلبات بعنوان غير معروف، مثل CALL EAX. إذا قام الإجراء بإجراء مكالمات غير معروفة، فإن Call Tree تضيف علامات "وجهة (وجهات) غير معروفة".

يتم التعليق على بعض الوظائف التي يتم استدعاؤها بإحدى الكلمات التالية:

ورقة لا تستدعي أي وظائف أخرى
نقي لا يستدعي أي وظائف، وليس له أي آثار جانبية
RETN يتكون من أمر RETN واحد
وظيفة Sys في نظام DLL. حسب التعريف، DLL الخاص بالنظام هو DLL موجود بشكل دائم في دليل النظام

للتنقل عبر شجرة المكالمات، انقر نقرًا مزدوجًا فوق العنوان الموجود في العمود "تم الاتصال من" أو عمود "المكالمات/المكالمات المباشرة". تقوم نافذة "شجرة الاتصال" بحفظ سجل أفعالك (المفاتيح "-" و"+").

إذا كان البرنامج الذي تقوم بتصحيحه يتكون من عدة وحدات، فإنني أوصي بتحليل كل هذه الوحدات. لا تحاول Call Tree التعامل مع وظائف النظام.

ملفات الاستخراج الذاتي (SFX).

يتكون ملف SFX من أداة فك الحزم وبرنامج أصلي معبأ. عند فحص الملفات المضغوطة، عادةً ما تريد تخطي أداة الحزم والتوقف عند نقطة دخول البرنامج ("الإدخال الحقيقي"). يحتوي OllyDbg على العديد من الميزات التي تسهل هذه المهمة.

عادةً ما يتم تحميل أداة فك الحزم إلى عناوين خارج قسم البرنامج الأصلي. في هذه الحالة، يتعرف OllyDbg على الملف باعتباره SFX.

عندما يتطلب خيار SFX تتبعًا حقيقيًا للمدخلات، يقوم OllyDbg بتعيين نقطة توقف للذاكرة في قسم التعليمات البرمجية بأكمله. عادة ما يكون فارغًا أو يحتوي على بيانات مضغوطة. عندما يحاول أحد البرامج تنفيذ بعض الأوامر داخل منطقة محمية ليست RET أو JMP، يقوم OllyDbg بالإبلاغ عن الإدخال الحقيقي. هذه هي الطريقة التي يعمل بها استخراج البايت بايت.

هذه الطريقة بطيئة جدًا. هناك طريقة أخرى أسرع. في كل مرة يحدث فيها استثناء أثناء قراءة البيانات، يقرأ OllyDbg من كتلة الذاكرة 4K، ويعطل نافذة القراءة السابقة. في كل استثناء لكتابة البيانات، فإنه يسمح بالكتابة إلى هذه الكتلة ويمنع الكتابة إلى الكتلة السابقة. عندما ينفذ برنامج أوامر في منطقة غير محمية، يقوم OllyDbg بالإبلاغ عن الإدخال الحقيقي. ومع ذلك، إذا كان الإدخال الحقيقي داخل نافذة القراءة أو الكتابة، فسيتم الإبلاغ عن موقعه بشكل غير صحيح.

يمكنك تصحيح عنوان تسجيل الدخول يدويًا. حدد عنوان الإدخال الجديد وفي قائمة السياق الخاصة بنافذة Disassembler، حدد Breakpoint-> قم بتعيين إدخال SFX حقيقي هنا. إذا تم تمكين خيار SFX المناسب، فسيقوم OllyDbg بتخطي أداة فك الحزم بسرعة وبشكل موثوق في المرة القادمة.

يمكنك التنقل خلال البرنامج الذي تقوم بتصحيح أخطائه بالضغط على F7 (الخطوة مع الإدخال) أو F8 (الخطوة مع التجاوز). والفرق الرئيسي بين هذه الطرق هو أنه إذا كان الأمر الحالي يستدعي بعض الوظائف، فسيدخل F7 إلى الوظيفة ويتوقف عند أول أمر لها، بينما سيحاول F8 تنفيذ الوظيفة على الفور. إذا قمت بتجاوز دالة، فإن أي نقطة توقف أو حدث تصحيح داخل الوظيفة سيوقف تنفيذ البرنامج الرئيسي مؤقتًا، لكن نقطة التوقف المؤقتة بعد استدعاء الإجراء ستظل نشطة، وسوف تصل إليها عاجلاً أم آجلاً.

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

بدلاً من الضغط على F7 أو F8 عدة مئات من المرات، يمكنك استخدام الرسوم المتحركة (Ctrl+F7 أو Ctrl+F8). في هذه الحالة، يقوم OllyDbg تلقائيًا بتكرار F7 أو F8 بعد اكتمال الخطوة السابقة وتعديل جميع النوافذ. تتوقف العملية عندما:

  • تضغط على Esc أو تقوم بتشغيل أي أمر متقدم آخر، أو
  • سوف يلبي OllyDbg نقطة توقف محددة مسبقًا، أو
  • سيقوم البرنامج الذي يتم تصحيحه بطرح استثناء.

باستخدام المفاتيح "+" و"-"، يمكنك إرجاع سجل التنفيذ.

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

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

تتبع خطوة بخطوة

يمنحك التتبع خطوة بخطوة القدرة على ملاحظة أجزاء التعليمات البرمجية التي تم تنفيذها وتلك التي لم يتم تنفيذها. الطريقة المطبقة في OllyDbg بسيطة للغاية. يقوم بتعيين نقطة توقف INT3 لكل فريق داخل المنطقة المحددة. عند تنفيذ نقطة توقف، يقوم OllyDbg بإزالتها ووضع علامة على الأمر على أنه تم تمريره. نظرًا لأنه يتم تنفيذ كل نقطة توقف للتتبع مرة واحدة فقط، فإن هذه الطريقة سريعة جدًا.

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

عندما تقوم بتعيين نقطة توقف للتتبع، حتى في أمر واحد داخل وحدة نمطية، يقوم OllyDbg بتعيين مخزن مؤقت للتتبع يبلغ حجمه ضعف حجم قسم التعليمات البرمجية.

لاحظ أنه عندما تقوم بحذف بيانات تتبع الخطوات، فإنك تقوم أيضًا بحذف التتبع القسري.

التتبع المباشر

يعد التتبع الأمامي وسيلة لعكس تنفيذ البرنامج، وهو أمر ضروري في بعض الحالات. يمكنك أيضًا استخدام التتبع المباشر للتوصيف البسيط. في الأساس، يقوم OllyDbg بتنفيذ البرنامج الذي يتم تصحيح أخطائه خطوة بخطوة، مثل الرسوم المتحركة، ولكنه لا يغير النوافذ - والأهم من ذلك - يخزن العناوين ويسجل المحتويات والرسائل والمعاملات المعروفة في مخزن مؤقت للتتبع. إذا كان الكود الذي تقوم بتصحيحه يتم تعديله ذاتيًا، فيمكنك الاحتفاظ بالأوامر الأصلية. ابدأ التتبع للأمام بالضغط على Ctrl+F11 (التتبع مع الإدخال) أو Ctrl+F12 (التتبع مع التجاوز). إيقاف التتبع - مفاتيح F12 أو Esc.

يمكنك تحديد مجموعة من الشروط التي يتم التحقق منها في كل خطوة من خطوات تنفيذ التتبع الأمامي (مفتاح التشغيل السريع: Ctrl+T). يتوقف التتبع الأمامي عندما يواجه شرطًا. تشمل الشروط:

بالطبع، يتطلب التتبع المباشر قدرًا كبيرًا من الذاكرة، بمتوسط ​​16 إلى 35 بايت لكل تعليمات اعتمادًا على الوضع، وهو بطيء جدًا. على معالج بسرعة 500 ميجاهرتز يعمل بنظام التشغيل Windows NT، يمكن لهذه العملية تتبع ما يصل إلى 5000 تعليمات في الثانية. في نظام التشغيل Windows 95 يكون الأمر أبطأ: 2200 أمر فقط في الثانية. لكن في العديد من الحالات، على سبيل المثال، عندما ينتقل أحد البرامج إلى عنوان غير موجود، تكون هذه هي الطريقة الوحيدة لإيجاد حل للمشكلة. يمكنك استبعاد تسلسلات التعليمات شبه الخطية (مع مخرج واحد في نهاية التسلسل) من عملية التتبع الأمامية. عندما يواجه OllyDbg تسلسلًا مستبعدًا، يقوم OllyDbg بتعيين نقطة توقف مؤقتة للأمر الذي يتبع الكتلة المستبعدة مباشرة وينفذها على الفور. بالطبع، أي عودة أو انتقال إلى تعليمات برمجية خارجية يجعل المراجعة الصحيحة مستحيلة، لذلك يتحقق OllyDbg من جزء التعليمات البرمجية الذي تريد استبعاده، وفي الحالات الصعبة يطلب منك التأكيد.

في معظم الحالات، لا تحتاج إلى تتبع كود واجهة برمجة تطبيقات النظام. يتيح لك خيار "التتبع دائمًا عبر ملفات DLL الخاصة بالنظام" التتبع دون إدخال واجهات برمجة التطبيقات الوظيفية عند التتبع والرسوم المتحركة مع الإدخال. يفترض OllyDbg أن الوحدة هي نظام إذا كانت موجودة بشكل دائم في مجلد النظام. في نافذة الوحدات، يمكنك وضع علامة على أي مكتبة كنظام أو غير نظام.

لجعل التنفيذ أسرع، يمكنك قصر إجراء التتبع المباشر على أوامر محددة أو أجزاء من التعليمات البرمجية عن طريق تعيين نقاط توقف لبدء التتبع وتشغيل البرنامج. أنا أسمي هذا "تتبع التشغيل القسري". بشكل أساسي، نقاط توقف التوجيه هي نقاط توقف لتتبع الخطوات غير قابلة للإزالة. إذا قمت بحذف تتبع خطوة، فإنك تقوم أيضًا بحذف التتبع الأمامي.

تقوم أوامر التتبع المذكورة في بداية هذا القسم تلقائيًا بفتح مخزن التتبع المؤقت. يمكنك تحديد حجمه (حتى 64 ميجابايت) في الخيارات. يكون هذا المخزن المؤقت دائريًا، وعندما يمتلئ، تتم الكتابة فوق الإدخالات الأقدم.

يمكنك فتح أو مسح المخزن المؤقت لتتبع التشغيل عن طريق تحديد Debug -> فتح أو مسح تتبع التشغيل من القائمة الرئيسية OllyDbg. بمجرد فتح المخزن المؤقت للتتبع، سيقوم OllyDbg بتسجيل جميع فترات التوقف المؤقت في التنفيذ، حتى تلك التي لم تكن ناجمة عن التتبع المباشر. على سبيل المثال، يمكنك التنقل عبر البرنامج بالضغط على F7 أو F8، ثم التراجع عن التعليمات البرمجية باستخدام مفتاحي Plus وMinus. لاحظ أن هذه المفاتيح تعرض السجل عند إغلاق المخزن المؤقت للتتبع. إذا قمت بتتبع برنامج، فإن مناطق السجلات والمعلومات في النافذة تتحول إلى اللون الرمادي، مع التأكيد على أن بيانات التسجيل التي تعرضها ليست بيانات فعلية. لا يقوم المخزن المؤقت للتتبع بتخزين الجزء العلوي من المكدس أو محتويات الذاكرة المستخدمة بواسطة السجلات. تستخدم السجلات والمعلومات والمكدس حالة الذاكرة الفعلية لتفسير السجلات من المخزن المؤقت للتتبع.

يمكن لـ OllyDbg حساب عدد المرات التي يظهر فيها كل أمر في المخزن المؤقت للتتبع الأمامي. في نافذة Disassembler، حدد "عرض -> بيانات الملف الشخصي". يستبدل هذا الأمر عمود التعليقات بعمود ملف التعريف. أو، إذا تم عرض لوحة، فانقر فوقها عدة مرات حتى تعرض معلومات الملف الشخصي. لاحظ أن العداد المعروض ديناميكي ولا يحسب الأوامر القديمة التي تمت إزالتها من المخزن المؤقت للتتبع. يمكنك أيضًا عرض بيانات الملف الشخصي لوحدة كاملة، مرتبة ببضع نقرات، في نافذة ملف تعريف منفصلة

يسمح لك أمر خاص في نافذة Disassembler "Runtrace -> إضافة إدخالات لجميع الإجراءات" بالتحقق من عدد مرات استدعاء كل إجراء تم التعرف عليه. أمر آخر، Runtrace -> إضافة فروع في الإجراء، يفرض تتبع جميع وجهات الفروع المعروفة ضمن الإجراء. في هذه الحالة، يتيح لك ملف التعريف العثور على التحولات التي يتم تنفيذها بشكل متكرر وتحسينها لزيادة السرعة.

يجد خيار "البحث عن -> آخر سجل في تشغيل التتبع" في قائمة السياق الخاصة بنافذة Disassembler وقت تنفيذ الأمر المحدد، وما إذا كان قد تم تنفيذه على الإطلاق، للمرة الأخيرة.
تعرض نافذة التتبع المباشر محتويات المخزن المؤقت للتتبع. لكل أمر، هناك محتويات تسجيل معينة تم تغييرها بواسطة الأمر (بشكل أكثر دقة، تم تغييرها بين الإدخال في الكود المصدري والإدخال المحدث). إذا نقرت نقرًا مزدوجًا فوق أحد الأوامر، فستقوم نافذة منبثقة بتحديد كافة المراجع لذلك الأمر في المخزن المؤقت للتتبع ويمكنك عرضها بسرعة عن طريق الضغط على مفتاحي Plus أو Minus. إذا تم تحديد الخيار "Trace -> Synchronize CPUandRuntrace"، فسينتقل برنامج Disassembler إلى نافذة التتبع الأمامية.

لاحظ أنه عندما تقوم بحذف تتبع الخطوة، فإنك تقوم أيضًا بحذف التتبع القسري للأمام.

تكوين التوزيع

كتالوج OllyDbg110 - تم تنزيل التوزيع من موقع البرنامج

كتالوج OllyDbgHelpRus - المساعدة الرسمية لمصحح أخطاء OllyDbg مترجمة إلى اللغة الروسية. مأخوذة من الموقع http://cracklab.ru/


2. وصف البرنامج (مأخوذ من تعليمات البرنامج)

OllyDbg- مصحح أخطاء 32 بت يقوم بالتحليل على مستوى المجمّع، بواجهة بديهية. مفيد بشكل خاص إذا كان كود المصدر غير متوفر أو عندما تواجه مشاكل مع المترجم.

متطلبات.يعمل تحت أنظمة التشغيل Windows 95، أو 98، أو ME، أو NT أو 2000، أو XP (لم يتم اختباره بنسبة 100%)، على أي كمبيوتر من فئة Pentium، ولكن لتصحيح الأخطاء بسهولة، ستحتاج إلى معالج بسرعة 300 ميجاهرتز على الأقل. OllyDbg كثيف الذاكرة. إذا كنت ستستخدم أدوات إضافية (مكونات إضافية)، أوصي بـ 128 ميجابايت أو أكثر من ذاكرة الوصول العشوائي.

المعالجات المدعومة: OllyDbg يدعم جميع 80x86، Pentium، MMX، 3DNow! ، بما في ذلك أوامر Athlon وSSE وتنسيقات البيانات ذات الصلة. لكنه لا يدعم SSE2.

يثبت.أكثر من 100 خيار للتحكم في تشغيل البرنامج.

تنسيقات البيانات.تعرض نوافذ التفريغ البيانات بجميع التنسيقات الشائعة: HEX، وASCII، وUNICODE، وعدد صحيح 16 بت و32 بت/غير صحيح/ست عشري، ونقطة عائمة 32/64/80 بت، والعنونة، والتفكيك (MASM، أو IDEAL، أو HLA) أو رأس PE أو دفق كتلة البيانات.

مرجع. يحتوي هذا الملف على المعلومات الأساسية اللازمة لفهم واستخدام Ollydbg. إذا كانت لديك تعليمات Windows API (win32.hlp، غير مضمنة لأسباب تتعلق بحقوق الطبع والنشر)، فيمكنك إرفاقها والحصول على مساعدة فورية بشأن مكالمات النظام.

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

تصحيح أخطاءDLL.باستخدام Ollydbg، يمكنك تصحيح أخطاء مكتبات الارتباطات الديناميكية (DLLs). يقوم Ollydbg تلقائيًا بتشغيل ملف صغير قابل للتنفيذ يقوم بتحميل المكتبة فيه ويسمح لك باستدعائه للتصدير.

تصحيح الملفات باستخدام معلومات التصحيح.يقوم Ollydbg بقراءة معلومات تصحيح الأخطاء بتنسيقات MICROSOFT وBorland. تتضمن هذه المعلومات الكود المصدري وأسماء الوظائف والتسميات والمتغيرات العامة والثابتة. دعم المتغيرات والهياكل الديناميكية (المكدسة) محدود للغاية.

تسليط الضوء على الكود.يمكن للمفكك تسليط الضوء على أنواع مختلفة من التعليمات (القفزات، والقفزات الشرطية، ودفع المكدس والظهور، واستدعاءات الإجراء، والإرجاع، والمتميز وغير الصالح) والمعاملات المختلفة (عامة، FPU/SSE أو سجلات القطاع/النظام، معاملات الذاكرة على المكدس أو في ذاكرة أخرى، ثوابت). يمكنك أيضًا إنشاء أنماط إضاءة مخصصة.

تيارات. Ollydbg قادر على تصحيح أخطاء التطبيقات متعددة الخيوط. يمكنك التبديل من سلسلة رسائل إلى أخرى، أو إيقافها مؤقتًا، أو استئنافها، أو إنهاء سلاسل المحادثات، أو تغيير أولويتها. تعرض نافذة المواضيع أخطاء لكل موضوع (على سبيل المثال، استدعاء GetLastError).

تحليل.يعد المحلل أحد أهم أجزاء OllyDbg. فهو يتعرف على الإجراءات والحلقات والمفاتيح والجداول والثوابت والسلاسل المضمنة في التعليمات البرمجية والبنيات المعقدة واستدعاءات وظائف API وعدد معلمات الوظائف وأقسام الاستيراد وما إلى ذلك. يجعل التحليل التعليمات البرمجية الثنائية أكثر قابلية للقراءة، وأسهل في تصحيح الأخطاء، ويقلل من احتمالية التفسيرات الخاطئة والفشل. إنه ليس خاصًا بالمترجم ويعمل بشكل جيد مع أي برنامج PE. يمكنك تحسين نتائج التحليل الخاصة بك عن طريق تعيين تلميحات.

الماسح الضوئي للكائنات.يقوم OllyDbg بمسح وحدات الكائنات (الملفات) أو المكتبات (بتنسيقي OMF وCOFF)، واستخراج التعليمات البرمجية وتقسيمها وتحديد موقعها في البرنامج الذي يتم تصحيح أخطائه.

الماسح الضوئي للمكتبات المستوردة.تقوم بعض مكتبات الارتباط الحيوي (DLL) بتصدير رموزها فقط على شكل ترتيبات، وهي غير قابلة للقراءة بالعين البشرية. إذا كانت لديك مكتبة الاستيراد المناسبة، فسيقوم OllyDbg بترجمة الأرقام الترتيبية مرة أخرى إلى أسماء رمزية.

دعم يونيكود الكامل.تقريبًا جميع العمليات المتاحة لسلاسل ASCII متاحة أيضًا لسلاسل UNICODE، والعكس صحيح.

الأسماء.يعرض OllyDbg جميع الرموز والأسماء المستوردة والمصدرة من معلومات التصحيح وبتنسيقات Microsoft وBorland. يسمح لك Object Scanner بالتعرف على وظائف المكتبة. يمكنك إضافة القيم والتعليقات الخاصة بك. إذا تم تصدير الوظائف الموجودة في بعض ملفات DLL كأرقام ترتيبية، فيمكنك إرفاق مكتبة الاستيراد واستعادة الأسماء الأصلية. يعرف OllyDbg أيضًا الأسماء الرمزية للعديد من الثوابت، مثل مربعات الرسائل أو أخطاء التعليمات البرمجية أو حقول البت، ويقوم بفك تشفيرها إلى استدعاءات دالة معروفة.

وظائف معروفة.يتعرف OllyDbg على أكثر من 2300 وظيفة C وAPI Windows شائعة الاستخدام بالاسم ويقوم بفك تشفير معلماتها. يمكنك إضافة الأوصاف الخاصة بك، أو تعيين فك تشفير معين. يمكنك تعيين نقطة توقف للكتابة على وظيفة معروفة وكتابة المعلمات إلى ملف.

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

كومة.في نافذة Stack، يستخدم OllyDbg الأساليب البحثية للتعرف على عناوين الإرجاع وبنية السجل. ومع ذلك، لاحظ أنها قد تكون بقايا من مكالمات سابقة. إذا تم إيقاف البرنامج مؤقتًا عند وظيفة معروفة، فستقوم نافذة المكدس بفك تشفير المعلمات الفعلية.

سلاسل SEH.يتتبع المكدس سلسلة مقابض SE ويعرضها. السلسلة الكاملة متوفرة في نافذة منفصلة.

يبحث.الكثير من الاحتمالات! البحث عن أمر (دقيق أو غير دقيق) أو تسلسل أوامر، عن الثوابت، سلسلة ثنائية أو نصية (ليست بالضرورة مستمرة)، عن جميع الأوامر التي تشير إلى عنوان، ثابت أو فاصل زمني، عن كل الانتقالات إلى موقع محدد، عن جميع الوظائف التي تستدعي بعض الإجراءات، أو أيًا كان ما يستدعيه هذا الإجراء، لجميع السلاسل النصية المشار إليها، ولجميع الاستدعاءات إلى الوحدات النمطية المختلفة، وللأسماء، وللتسلسلات الثنائية المقنعة في تخصيص الذاكرة بالكامل. إذا تم العثور على مواقع متعددة، يمكنك التنقل بينها بسرعة.

ويندوز.يسرد OllyDbg جميع النوافذ التي تم إنشاؤها بواسطة التطبيق الذي يتم تصحيح أخطائه ويعين نقاط التوقف للنوافذ أو فئة أو حتى رسالة محددة أو مجموعة رسائل.

موارد.إذا كانت دالة Windows API تشير إلى مورد سلسلة، فإن OllyDbg يسترده ويعرضه. يقتصر دعم الأنواع الأخرى على قائمة الموارد المرفقة والتفريغ والتحرير الثنائي.

نقاط التفتيش (نقاط التوقف).يدعم OllyDbg جميع الأنواع المعتادة من نقاط التوقف: المقاطعات البسيطة، والمقاطعات المشروطة، والمقاطعات التي تكتب المعلومات (مثل معلمات الوظيفة) إلى السجل، ونقاط توقف الكتابة والوصول إلى الذاكرة، ونقاط توقف الأجهزة (ME/NT/2000 فقط). كملاذ أخير لتصحيح الأخطاء خطوة بخطوة، يمكن تعيين نقطة توقف INT3 على كل تعليمة في الوحدة. على معالج بسرعة 500 ميجاهرتز ضمن نظام التشغيل Windows NT، يمكن لـ OllyDbg معالجة ما يصل إلى 5000 مقاطعة في الثانية.

المراقبين والمفتشين.المراقبون عبارة عن تعبيرات يتم تقييمها في كل مرة يتم فيها إيقاف البرنامج مؤقتًا. يمكنك استخدام السجلات والثوابت وتعبيرات العناوين والعمليات المنطقية والجبرية بأي تعقيد. يمكنك مقارنة سلاسل ASCII وUNICODE. المفتشون هم مراقبون يحتويون على ما يصل إلى فهرسين ويمكن تمثيلهم كجدول ثنائي الأبعاد يسمح بفك تشفير المصفوفات والهياكل.

تجاوز الذاكرة الديناميكية.في الأنظمة المستندة إلى Win95، يسرد OllyDbg كافة كتل الكومة المخصصة.

مقابض.في الأنظمة المستندة إلى NT، يسرد OllyDbg جميع مقابض النظام التي تنتمي إلى التطبيق الذي يتم تصحيح أخطائه.

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

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

التتبع المباشر (تشغيل التتبع).يقوم Trace بتنفيذ البرنامج خطوة بخطوة ويسجل تنفيذه في مخزن مؤقت دائري كبير. يحتوي هذا البروتوكول على كافة السجلات (باستثناء SSE)، وعلامات الخيوط والأخطاء، والرسائل والمعلمات التي تم فك تشفيرها للوظائف المعروفة. يمكنك حفظ الأوامر الأصلية، مما يسهل تصحيح أخطاء التعليمات البرمجية ذاتية التعديل. يمكنك تحديد شرط لإيقاف التصحيح عن طريق إدخال نطاق عنوان أو تعبير أو أمر. يمكنك حفظ معلومات تصحيح الأخطاء في ملف ومقارنة عمليتي تنفيذ مستقلتين للبرنامج. يتيح لك التتبع إجراء تحليل عكسي لسجل تنفيذ ملايين الأوامر بالتفصيل.

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

إجراء التصحيحات.يقوم المجمّع المدمج تلقائيًا بتحديد أقصر رمز ممكن. يعرض المحرر الثنائي البيانات بتنسيق ASCII وUNICODE والنماذج السداسية العشرية في وقت واحد. تتوفر أيضًا نسخة ولصق قديم جيد. يتيح لك النسخ الاحتياطي التلقائي التراجع عن التغييرات. يمكنك نسخ التغييرات مباشرة إلى الملف القابل للتنفيذ، كما يقوم OllyDbg بتصحيح الأخطاء المثبتة. يتذكر OllyDbg جميع إصلاحات البرنامج من جلسات تصحيح الأخطاء السابقة. يمكنك تطبيقها أو إزالتها ببضع ضغطات على المفاتيح.

ملفات الاستخراج الذاتي.عند تصحيح أخطاء ملف SFX، عادةً ما تريد تخطي برنامج الأرشفة والتوقف عند الدخول إلى البرنامج مباشرة. يقوم OllyDbg بإجراء تصحيح أخطاء SFX من خلال محاولة تحديد موقع الإدخال الفعلي. عادةً ما يفشل تصحيح أخطاء SFX في الأرشيفات المحمية. بمجرد العثور على المدخلات (أو تعريفها)، يمكن لـ OllyDbg تشغيل أداة فك الحزم بشكل أسرع وأكثر موثوقية.

اضافات للبرنامج .يمكنك إضافة مكون إضافي إلى OllyDbg، أو كتابة مكون إضافي خاص بك للبرنامج. تصل الوظائف الإضافية للبرنامج إلى جميع هياكل البيانات المهمة، وتضيف قوائم واختصارات إلى نوافذ OllyDbg الموجودة، وتستخدم أكثر من 100 وظيفة إضافية لواجهة برمجة التطبيقات (API). تم توثيق المكونات الإضافية لواجهة برمجة التطبيقات (API) بشكل جيد. يتضمن التوزيع القياسي وظيفتين إضافيتين للبرنامج: سطر الأوامر والإشارات المرجعية.

UDD.يقوم OllyDbg بحفظ جميع المعلومات المتعلقة بالبرنامج أو الوحدة في ملف فردي واستعادتها عند تحميل الوحدة مرة أخرى. تتضمن هذه المعلومات التسميات والتعليقات ونقاط التوقف والمراقبين وبيانات التحليل والشروط وما إلى ذلك.

يثبت.يمكنك تحديد الخطوط والألوان وأنظمة الإضاءة المخصصة.

وأكثر من ذلك بكثير! هذه القائمة ليست كاملة بأي حال من الأحوال، فهناك العديد من الميزات التي تجعل من OllyDbg مصحح أخطاء مريحًا وممتعًا.

3. موقع البرنامج



أخبر الأصدقاء