10-05-2024, 05:09 PM
رحلة في عالم الهندسة العكسية
https://www.youtube.com/playlist?list=PL...Moshvgu35x
# الفصل 0 : تمهيد
اعاده برمجه المثال 0.4 عن طريق Visual Studio وعمل التتبع والباتشينك
الآن سأقوم بإنشاء نفس البرنامج ولكن هذه المرة باستخدام Visual Studio 2022.
تأكد من تحديد x eighty-six وليس x sixty-four.
إذا كنت لا ترى، النافذتين والdisassembly ، والregisters يمكنك تنشيطها من قائمة تصحيح الأخطاء ثم تحديد التفكيك أو السجلات أو أي نافذة أخرى.
يمكنك أن ترى عندما Step over المسجل EAX نقوم بتغييره إلى القيمة 4.
يمكنك أن ترى أن النتيجة هي برنامج يتم تجميعه باستخدام Microsoft Linker والcompiler هو Microsoft Visual C++.
يمكننا مقارنة هذا البرنامج المصنوع ب Visual Studio والبرنامج الآخر المصنوع ب MinGW.
الآن سنقوم بفتح البرنامج بـ x sixty-four dbg الإصدارthirty-two bit.
تستطيع أن ترى نقطة الدخول هي هذه الوظيفة "mainCRTStartup"
دالة تحدد عنوان البداية المحدد من قبل المستخدم لملف .exe أو DLL.
مزيد من المعلومات يمكنك العثور عليها في learn.microsoft.com CPP:
سأضغط على زر "step into".
يمكنك العثور على الكثير من المعلومات حول أي اسم وظيفة تراه في مصحح الأخطاء، فقط ابحث في الإنترنت وستجد الكثير من المعلومات.
الآن لن أستخدم الأزرار ولكن سأستخدم الفأرة وانقر نقرًا مزدوجًا على الوظيفة ويمكننا الدخول عليها ومفتاح آخر يمكننا استخدامه وهو الطرح Minus لنعود إلى ما كنا عليه في المقام الأول.
هذه قاعده بما اننا نحن نبحث على كود الخروج فدائما سنختار اخر استدعاء للوظيفة.
الان دعنا نستكشف اخر اسطر في هذه block of code سنذهب الى ما يسمى بالEpilogue.
البداية الprologue هي الجزء الأول من function في لغة اassembly.
تقوم بإعداد بيئة الfunction، بما في ذلك حفظ المؤشر الأساسي السابق saving the previous base pointer،
وتأسيس مؤشر أساسي جديد establishing a new base pointer،
وتخصيص مساحة للمتغيرات المحلية على الستاك allocating space for local variables on the stack.
أما النهاية، فالepilogue هو الجزء الأخير من الfunction. يعيد بيئة الfunction إلى حالتها الأصلية، بما في ذلك استعادة مؤشر الستاك stack pointer والمؤشر الأساسي base pointer، قبل إرجاع control flow إلى الfunction المستدعية.
لذا، للخلاصة:
الPrologue: القسم الأول، يقوم بإعداد بيئة الfunction.
الEpilogue: القسم الأخير، يرجع بيئة الfunction الى ما كانت عليه قبل الاستدعاء.
حسنا لنكتشف هذه السطر موجود فيها exit اذا ليس هذا ما نبحث عنه.
كما ترى هنا، لدينا اسم وظيفة invoke Main لذا فإن اسم هذه الوظيفة مثير للاهتمام للغاية وأعتقد أن هذا هو ما نبحث عنه.
حسنا ساعيد كلامي مره اخرى بما انا نبحث على كود الخروج فاننا دائما سنبحث على اخر استدعاء لfunction في كود الحالي.
فكما ترى وجدنا تعليمه التي تقوم بتحويل القيمه اربعه الى المسجل EAX.
يمكنك استعمال خاصيه الاضافه الى المفضله او إشارة مرجعية bookmark.
فمثلا هنا سنغير القيمه اربعه الى القيمه ثلاثه ثم نعمل باتشينغ ثم نجرب اهل البرنامج يشتغل بنجاح او لا.
هنا ملاحظه وضعت لك صورتين الصوره اللي على اليمين هي صوره من البرنامج بالdebugger الخاص بx sixty-four dbg فكما ترى عنوان تغيير القيمه الregiset هو نفسه العنوان الموجود في المصحح x sixty-four dbg.
https://www.youtube.com/playlist?list=PL...Moshvgu35x
# الفصل 0 : تمهيد
- 0.1 تحميل و تثبيت : x64dbg و Detect it easy
- 0.2 Program Analysis رحلة استكشافية لتحليل البرامج
- 0.3 علّم نفسك كيفية فهم رموز الخروج exit code وتحليل الأخطاء في x64dbg
- 0.4 معلومات مهمة حول عملية الdebugging وكيفية استخدام x64dbg debugger بشكل فعال
- 0.5 اعاده برمجه المثال 0.4 عن طريق cLion IDE وعمل التتبع والباتشينك
- 0.6 اعاده برمجه المثال 0.4 عن طريق Visual Studio وعمل التتبع والباتشينك
اعاده برمجه المثال 0.4 عن طريق Visual Studio وعمل التتبع والباتشينك
الآن سأقوم بإنشاء نفس البرنامج ولكن هذه المرة باستخدام Visual Studio 2022.
تأكد من تحديد x eighty-six وليس x sixty-four.
إذا كنت لا ترى، النافذتين والdisassembly ، والregisters يمكنك تنشيطها من قائمة تصحيح الأخطاء ثم تحديد التفكيك أو السجلات أو أي نافذة أخرى.
يمكنك أن ترى عندما Step over المسجل EAX نقوم بتغييره إلى القيمة 4.
يمكنك أن ترى أن النتيجة هي برنامج يتم تجميعه باستخدام Microsoft Linker والcompiler هو Microsoft Visual C++.
يمكننا مقارنة هذا البرنامج المصنوع ب Visual Studio والبرنامج الآخر المصنوع ب MinGW.
الآن سنقوم بفتح البرنامج بـ x sixty-four dbg الإصدارthirty-two bit.
تستطيع أن ترى نقطة الدخول هي هذه الوظيفة "mainCRTStartup"
دالة تحدد عنوان البداية المحدد من قبل المستخدم لملف .exe أو DLL.
مزيد من المعلومات يمكنك العثور عليها في learn.microsoft.com CPP:
سأضغط على زر "step into".
يمكنك العثور على الكثير من المعلومات حول أي اسم وظيفة تراه في مصحح الأخطاء، فقط ابحث في الإنترنت وستجد الكثير من المعلومات.
الآن لن أستخدم الأزرار ولكن سأستخدم الفأرة وانقر نقرًا مزدوجًا على الوظيفة ويمكننا الدخول عليها ومفتاح آخر يمكننا استخدامه وهو الطرح Minus لنعود إلى ما كنا عليه في المقام الأول.
هذه قاعده بما اننا نحن نبحث على كود الخروج فدائما سنختار اخر استدعاء للوظيفة.
الان دعنا نستكشف اخر اسطر في هذه block of code سنذهب الى ما يسمى بالEpilogue.
البداية الprologue هي الجزء الأول من function في لغة اassembly.
تقوم بإعداد بيئة الfunction، بما في ذلك حفظ المؤشر الأساسي السابق saving the previous base pointer،
وتأسيس مؤشر أساسي جديد establishing a new base pointer،
وتخصيص مساحة للمتغيرات المحلية على الستاك allocating space for local variables on the stack.
أما النهاية، فالepilogue هو الجزء الأخير من الfunction. يعيد بيئة الfunction إلى حالتها الأصلية، بما في ذلك استعادة مؤشر الستاك stack pointer والمؤشر الأساسي base pointer، قبل إرجاع control flow إلى الfunction المستدعية.
لذا، للخلاصة:
الPrologue: القسم الأول، يقوم بإعداد بيئة الfunction.
الEpilogue: القسم الأخير، يرجع بيئة الfunction الى ما كانت عليه قبل الاستدعاء.
حسنا لنكتشف هذه السطر موجود فيها exit اذا ليس هذا ما نبحث عنه.
كما ترى هنا، لدينا اسم وظيفة invoke Main لذا فإن اسم هذه الوظيفة مثير للاهتمام للغاية وأعتقد أن هذا هو ما نبحث عنه.
حسنا ساعيد كلامي مره اخرى بما انا نبحث على كود الخروج فاننا دائما سنبحث على اخر استدعاء لfunction في كود الحالي.
فكما ترى وجدنا تعليمه التي تقوم بتحويل القيمه اربعه الى المسجل EAX.
يمكنك استعمال خاصيه الاضافه الى المفضله او إشارة مرجعية bookmark.
فمثلا هنا سنغير القيمه اربعه الى القيمه ثلاثه ثم نعمل باتشينغ ثم نجرب اهل البرنامج يشتغل بنجاح او لا.
هنا ملاحظه وضعت لك صورتين الصوره اللي على اليمين هي صوره من البرنامج بالdebugger الخاص بx sixty-four dbg فكما ترى عنوان تغيير القيمه الregiset هو نفسه العنوان الموجود في المصحح x sixty-four dbg.