تقييم الموضوع :
  • 5 أصوات - بمعدل 1.8
  • 1
  • 2
  • 3
  • 4
  • 5
ما ضرورة oep او original entry point وماهي طرق ايجاده؟
#2
وعليكم السلام
إقتباس :لكن ما اهميته في الrce لماذا نحتاج الoep لعمل التنقيح...؟
تبرز أهميته انه يمثل البداية للكود الاصلي للبرنامج الذي نريد هندسته عكسياً، وليس الكود للكود الخاص بالـ packer او الـloader.
انت تريد الاطلاع على الكود الاصلي للبرنامج وتريد التعديل علية سواء لفهم خوارزمية التسجيل وتجاوزها او صنع كيجن لها او اضافة تعديلات على كود البرنامج، ولكنك لن تجد كود البرنامج الهدف ما لم تجد  بداية كوده، ويجب ان تعلم ان برامج الحماية تحاول اخفاء الـOEP بشتى الطرق لمنعك من الاطلاع على الكود الاصلي لذلك البرنامج المحمي يبدأ من الـOEP  للـ packer او الـloader وليس الـOEP  الاصلي.
الـOEP  مهم حتى لنظام التشغيل ويستخدم من قبل النظام لتشغيل البرنامج وهو موجود في الـPEheader في قسم الـ Optional Header
[صورة مرفقة: MyalJdH.png]
typedef struct _IMAGE_OPTIONAL_HEADER {
  WORD                 Magic;
  BYTE                 MajorLinkerVersion;
  BYTE                 MinorLinkerVersion;
  DWORD                SizeOfCode;
  DWORD                SizeOfInitializedData;
  DWORD                SizeOfUninitializedData;
    DWORD                AddressOfEntryPoint;   <--------------هنا
  DWORD                BaseOfCode;
  DWORD                BaseOfData;
  DWORD                ImageBase;
  DWORD                SectionAlignment;
  DWORD                FileAlignment;
  WORD                 MajorOperatingSystemVersion;
  WORD                 MinorOperatingSystemVersion;
  WORD                 MajorImageVersion;
  WORD                 MinorImageVersion;
  WORD                 MajorSubsystemVersion;
  WORD                 MinorSubsystemVersion;
  DWORD                Win32VersionValue;
  DWORD                SizeOfImage;
  DWORD                SizeOfHeaders;
  DWORD                CheckSum;
  WORD                 Subsystem;
  WORD                 DllCharacteristics;
  DWORD                SizeOfStackReserve;
  DWORD                SizeOfStackCommit;
  DWORD                SizeOfHeapReserve;
  DWORD                SizeOfHeapCommit;
  DWORD                LoaderFlags;
  DWORD                NumberOfRvaAndSizes;
  IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
  
ولكن برامج الـ packer ستغير هذه القيمة وتضع  الـOEP  للـ packer او الـloader الخاص بها بدلاً من القيمة الاصلية

عملت لك صورة توضح الامر Smile تخص حماية UPX
[صورة مرفقة: Z8gtXPt.png]
 
إقتباس :ماهي الطرق المثلى او الصحيحة لايجاد الoep ؟
طريقة ايجداها ليست مهمه سهلة وتختلف حسب نوع الحماية وتعقيدها والتقنيات التي تستخدمها لمنعك من ايجاد الـOEP  الاصلية.
بصراحة لست خبير هنا واتمنى من لديه معلومات كافية ان يرد عليك.
إقتباس :وهل تختلف صعوبة ايجاد الrce عندما يكون البرنامج مشفر او محمي؟
نعم الاختلاف كبير، واضن الصورة التي تخص حماية UPX فوق توضح الامر، ببساطة هدف برامج الحماية هي ابعادك عن الكود الاصلي قدر الامكان.
سبحان الله وبحمده، سبحان الله العظيم
أعضاء أعجبوا بهذه المشاركة : EAX+4 , mribraqdbra , farfes , soukdok , Cyros


الردود في هذا الموضوع
RE: ما ضرورة oep او original entry point وماهي طرق ايجاده؟ - بواسطة Gu-sung18 - 17-07-2019, 10:12 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم