مضى على الشبكة و يوم من العطاء.
  • تحذير: يجب على كل روّاد الشبكة تشغيل برامج الاختراق داخل الأنظمة الوهمية وهي بهدف التعلم وحماية الأعضاء والتوعية بها

ليس درس فك حماية

ITACHI_10HITACHI_10H is verified member.

مشرف سابق
>:: v1p ::<

السمعة:

السلام عليكم و رحمة الله تعالى و بركاته

اولا قد تتساءل عن العنوان و لمادا ارتأيت أن أكتبه بتلك الطريقة ,جوابي سهل صراحة لأنني فعلا لست هنا لكسر هاته الحماية التي سنتحدث عنها. لأنه و ببساطة ليست هناك
طريقة واضحة لفكها كاملة على حد علمي 😅 ولو أحدكم يعرف شخصا قام بكسرها او صنع اداة لترجمة تعليماتها أرغب جدا في التحدث اليه هههه لأن هناك محاولات عديدة لفكها أشهرها استعمال سكريبت NoVMP و VTIL .الحماية التي سنتكلم عنها اليوم من أشرس الحمايات في المجال الى غاية يومنا هدا .و فيها خاصية تميزها عن غيرها وهي ما سنقوم بتحليلها فقط اليوم . وليس الحماية بالكامل فقط خاصية صغيرة فيها.لدا يمكنك اعتبار الموضوع كمقال بحثي صغير.

نبدة عن حماية vmprotect
VMProtect هو برنامج لحماية البرمجيات من القرصنة والهندسة العكسية. يعمل عن طريق تحويل كود البرنامج إلى تعليمات مخصصة تعمل داخل آلة افتراضية (Virtual Machine) خاصة به، مما يجعل تحليل الكود أو تعديله صعبًا للغاية. كما يوفر ميزات أخرى مثل إخفاء التعليمات البرمجية، والتشفير، وحماية ضد التفكيك (disassembly) والتصيّد العكسي (reverse engineering). يتم استخدامه غالبًا لحماية البرامج التجارية، الألعاب، ومكافحة الكراكات
ط
بدايـــــــــــــــــــــــــــــــــــة :
كل ما سيتم التطرق له في هدا الموضوع ناتج عن تجربتي الخاصة و من خلال بحثي و تحليلي لهاته الحماية.طوال مسيرتي المتواضعة في مجال الهندسة العكسية كانت تواجهني حمايات كثيرة البعض سهل و البعض الاخر صعب .و كل واحدة تحتاج مستوى من الفهم و الوقت لفكها. لكن هاته الحماية بالتحديد جعلتني أتأمل كثيرا في طريقة صنعها و أهم ما شدني اليها هو شيء يسمى بال(virtual machine) .لا تدع عقلك يدهب بك للمحاكاة كما في vmware او virtual box هاته الvirtual machine خاصية مميزة جدا , على الاقل بالنسبة لي ,فالفكرة وراءها عبقرية ,أعرف فقط حمايتين تدعم هاته الخاصية و هي vmprotect و themida .حمايتين قويتين في المجال .جمايتين تجعلك ترفع القبعة للمطورين لأنه حقيقة اقل ما يقال عنهما انهم الافضل في المجال و لن تكون الأفضل في مجالك الا ادا كان هناك شيء مميز فيك.

التحليل :
بعد مواجهاتي العديدة مع هاته الحماية . أسرتني virtual machines الخاصة بها و أردت التعمق أكثر فتعلقت بها الى حد انني أردت انشاء حماية بvirtualalization خاصة بي .و بعد معاناة نجحت لكن بالطبع ليست بمستوى vmprotect ليس حتى 10% من تعقيدها سأتركها لموضوع اخر لو سمحت الضروف.
المهم صنعت بريمج صغير بالأسمبلي لأقوم بحمايته و تحليله . اخترت الأسمبلي لأنني لم أرد كل الdependencies التي في c++ ولا الframworks التي في c# ولم أرد حقا الخوض في معضلة disabling مكاتب CRT.أردت أن أبدأ العمل مباشرة و أردت اداة التي تراه هو ما ستحصل عليه (what you see is what you get) بعد الcompilation و الlinking و من الأفضل في دلك من غير الأسمبلي ( الأسمبلي المنقدة;))
الكود المصدري :



1.webp



البرنامج سهل يفتح لك dialog box صغيرة كالاتي :


2.webp


لكن لو لاحضت معي هناك procedure في البداية باسم ITACHI بروك سهلة جدا و تعمدت جعلها سهلة .لدواعي تحليلية:) فهاته التعليمات البسيطة ستتحوال لmachine كاملة
نقوم باضافة 2+1 ونضعها في register eax فقط لا أكثر و لا أقل
حماية التطبيق :
بالنسبة لحماية vmprotect تأتي بنسختين واحدة مدفوعة و الاخرى demo , النسخة demo دعنا نقول عنها أنها بدائية و لا تصل لمستوى النسخة المدفوعة و لا توجد بالطبع Virtualization
النسخة المدفوعة حوالي 250 دولار . طبعا من اجل هدا الدرس استعملت نسخة مدفوعة اصدار 3.x و قمت بحماية بريمج x86 bit . هناك فرق بين ال64-بت و 86-بت في طريقة تخزين الregisters و table تدعى handle offset table سنصل لها فيما بعد و العديد من الأشياء الاخرى لمن دعنا نركز على x86

برنامجنا قبل الحماية نجده على هدا الشكل
3.webp

تعليماتنا بفضل الأسملبي و ااااضحة في الأعلى لدينا call للaddress التي تدهب بنا لITACHI procedure
عند حمايتي للبرنامج قمت بتعطيل كل الoptions بما في دلك خاصية تدعى code mutation وهي خاصية تصعب أكثر التحليل لأنها تضع لك اكواد غير مرغوب فيها junk CODE . مع دلك رغم تعطيلها سنجد ان الحماية تضيف junk code في كل الحالات و هدا امر أثار انتباهي و أردت تنبيهكم لو أراد أحد ان يحللها بأن لا يتفاجأ ادا وجدها .طريقة التغلب على هاته الjunk code بسيطة و توجد العديد من الطرق سأشرح احداها عند البدء في التحليل
بعض الخيارات التي قمت بتعطيلها
4.webp


خيارات قوية صراحة لكن ليست محور موضوعنا

بعد الحماية :

5.webp

بعد حماية برنامجنا أول ما ستلاحضه انه تم اضافة section جديدة باسم .vmp0 , هاته الsection تتضمن كود الvirtual machine بأكمله في بعض الحالات لو أضفت بعد الخيارات ستجد انه تم اضافة section أخرى باسم vmp1 يتم وضع فيها handlers table التي تحدثنا عنها من قبل . لكن هاته المرة كل شيء موجود داخل الsection الوحيدة

نفتح برنامجنا بIDA PRO و نرى أنه التعليمات تغيرت بالكامل
6.webp

ستجد انه تم تعويض 5 bytes الى قفزة لعنوان خارج .text section ونعم كما توقعت عزيزي القارئ .انها اول قفزة لنا لvmp section و تبدأ رحلتنا .
عند تتبعنا للقفزة نجد أنفسنا هنا
7.webp


ما نبحث عنه حقيقة هو مدخل يدعى VMENTER و هو مدخلنا للvirtual machine هي procedure تحضر الcontext وتخزن registers و تصنع لنا virtual stack و العديد من الأشياء

8.webp

سنجد ضالتنا هنا الحماية استدعت دالة VMENTER
طلقت عليها الاسم حتى لا يكون هناك خلط و نتعرف عليها)
قبل الدخول للدالة نجد التعليمات التالية
push edi
mov edi, 102B5A49h
pushf
and edi, 7AA11CBAh
mov edi, [esp+8+var_4]
mov [esp+8+var_4], 9F7AA2D2h

call sub_464296
تم دفع edi الدي يحتوي هنا على address التعليمة التي وجهتنا لITACHI procedure وقمنا بعدها بدفع flags register و قمنا ببعض العمليات الحسابية عليه لكن في الاخير و ضعنا local variable داخله وهي نفسها الaddress السابقة
لاحض معي انه في الصورة السابقة تم دفع القيمة 9F7AA2D2 وهي قيمة مهمة سنتطرق لها فيما بعد لكن وجب تدكرها.

9.webp
لاحض معي انه تم اضافة قيمة في الاول لreturn address لتصفيره بعدا سيتم دفع القيمة 9F7AA2D2 كبرامتر لVMENTER وهدا ما سيجعلك تشك في دور هاته القيمة
ثم ندخل للمكان الدي سيبدأ فيه كل شيء


















10.webp

هنا سنستهل قراءتنا بأول مثال عن الjunk code التي دكرتها من قبل فادا رأيت esi في الاول يتم تمرير قيمةhard coded 6D60620E له .في بادئ الأمر ضننت أنها قيمة قد تكون لها دلالة في المستقبل لكن بعدها تجد ان esi تم تغيير قيمتها عبر mov esi,ebx و هدا ما يتناقض مع طرحنا الأول.

سنجد أيضا انه تم دفع كل الregisters بدون استثناء وهدا pattern معروف لدى vmp وفي الاخير يتم ادخال 0 للستاك على ما أضن كدلالة على نهاية push instructions












لكي لا نمل من الشرح سنكمل بادن الله حيث وصلنا في الموضوع القادم. ولنرى ادا كان هناك تفاعل مع الموضوع.
و مرحب بكل التساؤلات
 

المرفقات

  • 1.webp
    1.webp
    23.8 KB · المشاهدات: 74
  • 1739210185508.webp
    1739210185508.webp
    2.4 KB · المشاهدات: 67
  • 1739210873116.webp
    1739210873116.webp
    68.6 KB · المشاهدات: 92
  • 1739212701190.webp
    1739212701190.webp
    10.6 KB · المشاهدات: 62
  • 9.webp
    9.webp
    40.7 KB · المشاهدات: 80
يعطيك العافيه لكن ما هو اساس تعلم هذه الطرق والاساليب لكي تكون موضحة ومفهومة اكثر للقارئ اذا لم يكن له خبرة سابقه بالمجال واحب ان يتعلم من اين يبدا ف اين الطريق؟
تقبل مروري ❤️
 
حبيب القلب ايتاشي رب يوفقك وييسر امورك
طرح أكثر من رائع وصدقاً فتحت عيوني على شغلات ما كنت بعرفها
ننتظر الشرح القادم بإذن الله والجزء الثاني من الموضوع
تحياتي يا مبدع
 
بارك الله فيك أخي العزيز ...
الله يبارك فيك اخي نورت الموضوع
يعطيك العافيه لكن ما هو اساس تعلم هذه الطرق والاساليب لكي تكون موضحة ومفهومة اكثر للقارئ اذا لم يكن له خبرة سابقه بالمجال واحب ان يتعلم من اين يبدا ف اين الطريق؟
تقبل مروري ❤️
صراحة اخي .لتتبع الموضوع يحب ان تكون لديك خلفية على الاقل في المجال.لهدا كان هدفي من كتابة الموضوع فقط ان اعرف الناس على اشياء قد تخفى عنهم بخصوص المجال .لانه عندما تسمع هندسة عكسية يتبادر الى دهنك مباشرة كسر برامج و كراك و ما الى دلك رغم ان المجال اكبر و أعمق من دلك. لو لم يكن لك اي معرفة مسبقة يمكنك متابعة الموضوع التالي كمقدمة لك.مشكور اخي على المرور
بارك الله فيك .. أحسنت
الله يبارك فيك اخي العزيز
حبيب القلب ايتاشي رب يوفقك وييسر امورك
طرح أكثر من رائع وصدقاً فتحت عيوني على شغلات ما كنت بعرفها
ننتظر الشرح القادم بإذن الله والجزء الثاني من الموضوع
تحياتي يا مبدع
أخي العزيز ستورم دائما ما تكرمنا بردودك الحلوة .
الحمد لله اخي نحن لسنا الا أسباب .
ومستنيين ابداعاتك انا عارف ان القيام على الشبكة بحد داته متعب الله يوفقكم
 
التعديل الأخير:

آخر المشاركات

فانوس

رمضان
عودة
أعلى