




السمعة:
- إنضم11 ديسمبر 2023
- المشاركات 186
- الحلول 10
- مستوى التفاعل 288
- النقاط 63
السلام عليكم و رحمة الله تعالى و بركاته
كيف الأحوال إخواني إن شاء الله بخير
اليوم لدينا درس خفيف حول تحليل خوارمية حساب السيريال لبرنامج معروف وإن شاء الله نختمها بصنع keygen
نبدأ على بركة الله...
البرنامج الغني عن التعريف INT3RN3T D0WNL04D M4N4G3R بآخر نسخة له يعطيك 30 يوم مجاني و بعدها يطلب منك شراء البرنامج ستواجهك الرسالة التالية عند انتهاء الفترة التجريبية:
كما ترون نحن سنحاول البحث عن مكان التحقق من السيريال
اولا نحمل البرنامج على منقح OLLydbg . يعجبني هدا المنقح كثيرا رقم قدمه لكنه يتوفر على community كبيرة تصنع له اضافات مفيدة
بعدها نقوم بتشغيل البرنامج و نقوم بادخال المعلومات ونضع breakpoint على getdlgitem
نضع breakpoint على getdlgitem انا لدي اضافة تقوم بهاته العملية
بعدها ندخل المعلومات اللازمة و نضغط على اوكي و سنجد أنفسنا هنا
داخل user32.dll نقوم بالتتبع الى غاية تعليمة retn 10 و سنجد انفسنا بعد تعليمة استدعاء call كما هو موضح في الصورة
نتتبع الى غاية تعليمة retn التالية و سنجد أنفسنا في هدا المكان و لقد قمت باضافة comments في المنقح لأنني حللته قبلها و اكتشفت الfunctionalities الخاصة بكل تعليمة
كما في الصورة اولا يتم سحب الFirst name و بعدها ال last name و الايمايل و ما يهمنا هو السيريال
كما ترون نفس الfunction يتم استدعاءها اربع مرات CALL 00CA7058 و ما يهمنا هو الاستدعاء الاخير
كما نرى يتم وضع السيريال في EBP+1A4 =017FCBCC يجب ان نتدكر هدا العنوان لانه مهم في بقية التحليل
في التعليمة التالية يتم التحقق من ادخالنا للسيريالTEST EAX,EAX أو اننا لم ندخله و يقوم بالقفز JNZ
بعدها تأتي تعليمة MOV BL,20 الرقم 20 هنا هيكساديسيمل مقابله بالascii هو blank space
يقوم بcheck على اول حرف من السيريال الدي هو '1' مع blank space و يقوم بالقفز فوق دالة تستدعي ERROR
هنا Loop صغيرة تقوم بالتحقق من كل حرف او رقم في السيريال هل يساوي 0 او لا
بعدها نجد انفسنا هنا بعد التتبع الدالة التي علمتها بالأصفر ستقوم بتحويل الحروف الى capital letters ندخل للfunction sub00CD8EB1
تأخد argument واحدة في ecx عبارة عن الadress للسيريال و هدا امر عادي
نقوم بالخروج من الدالة و نجد هاته التعليمات التي ستقوم بالتحقق من ان الحرف السادس و ال12 و 18 هم عبارة عن separators "-"
الى هنا ينتهي الجزء الاول من الدرس
اتمنى ان يقوم القارئ بتتبع هاته الخطوات باستخدام المنقح الدي يفضله لكي يلمس التعليمات و لفهم أكثر . في الدرس القادم سنتمق اكثر في كيفية التحقق من السيريال و كيف يتم تقسيمه
أي تساؤل لا تخجل من طرحه كلنا هنا لنتعلم و أي اضافة او ملاحضة مرحب بها جدا .
في عون الله.
كيف الأحوال إخواني إن شاء الله بخير
اليوم لدينا درس خفيف حول تحليل خوارمية حساب السيريال لبرنامج معروف وإن شاء الله نختمها بصنع keygen
تذكير: أرجوا أن يفهم القارئ أن الدرس تعليمي و نحن لا نشجع على كسر البرامج نحن نقوم بتحليلها فقط للتعلم . كما أن الدرس لا يشرح الكسر الكامل للبرنامج لاحتواءه على العديد من الchecks نحن فقط سنحلل كيفية إنشاءه للسيريال
نبدأ على بركة الله...
البرنامج الغني عن التعريف INT3RN3T D0WNL04D M4N4G3R بآخر نسخة له يعطيك 30 يوم مجاني و بعدها يطلب منك شراء البرنامج ستواجهك الرسالة التالية عند انتهاء الفترة التجريبية:
كما ترون نحن سنحاول البحث عن مكان التحقق من السيريال
اولا نحمل البرنامج على منقح OLLydbg . يعجبني هدا المنقح كثيرا رقم قدمه لكنه يتوفر على community كبيرة تصنع له اضافات مفيدة
بعدها نقوم بتشغيل البرنامج و نقوم بادخال المعلومات ونضع breakpoint على getdlgitem
نضع breakpoint على getdlgitem انا لدي اضافة تقوم بهاته العملية
بعدها ندخل المعلومات اللازمة و نضغط على اوكي و سنجد أنفسنا هنا
داخل user32.dll نقوم بالتتبع الى غاية تعليمة retn 10 و سنجد انفسنا بعد تعليمة استدعاء call كما هو موضح في الصورة
نتتبع الى غاية تعليمة retn التالية و سنجد أنفسنا في هدا المكان و لقد قمت باضافة comments في المنقح لأنني حللته قبلها و اكتشفت الfunctionalities الخاصة بكل تعليمة
كما في الصورة اولا يتم سحب الFirst name و بعدها ال last name و الايمايل و ما يهمنا هو السيريال
كما ترون نفس الfunction يتم استدعاءها اربع مرات CALL 00CA7058 و ما يهمنا هو الاستدعاء الاخير
كما نرى يتم وضع السيريال في EBP+1A4 =017FCBCC يجب ان نتدكر هدا العنوان لانه مهم في بقية التحليل
في التعليمة التالية يتم التحقق من ادخالنا للسيريالTEST EAX,EAX أو اننا لم ندخله و يقوم بالقفز JNZ
بعدها تأتي تعليمة MOV BL,20 الرقم 20 هنا هيكساديسيمل مقابله بالascii هو blank space
يقوم بcheck على اول حرف من السيريال الدي هو '1' مع blank space و يقوم بالقفز فوق دالة تستدعي ERROR
هنا Loop صغيرة تقوم بالتحقق من كل حرف او رقم في السيريال هل يساوي 0 او لا
بعدها نجد انفسنا هنا بعد التتبع الدالة التي علمتها بالأصفر ستقوم بتحويل الحروف الى capital letters ندخل للfunction sub00CD8EB1
تأخد argument واحدة في ecx عبارة عن الadress للسيريال و هدا امر عادي
نقوم بالخروج من الدالة و نجد هاته التعليمات التي ستقوم بالتحقق من ان الحرف السادس و ال12 و 18 هم عبارة عن separators "-"
الى هنا ينتهي الجزء الاول من الدرس
اتمنى ان يقوم القارئ بتتبع هاته الخطوات باستخدام المنقح الدي يفضله لكي يلمس التعليمات و لفهم أكثر . في الدرس القادم سنتمق اكثر في كيفية التحقق من السيريال و كيف يتم تقسيمه
أي تساؤل لا تخجل من طرحه كلنا هنا لنتعلم و أي اضافة او ملاحضة مرحب بها جدا .
في عون الله.
المرفقات
التعديل الأخير بواسطة المشرف: