دخول
أفضل 10 أعضاء في هذا المنتدى
Admin | ||||
algeriendu40 | ||||
samra | ||||
moh-beni24 | ||||
fatima zohra | ||||
sousou | ||||
magui | ||||
ابوعلاء | ||||
ikhlasse | ||||
saida |
أفضل 10 أعضاء في هذا الأسبوع
لا يوجد مستخدم |
المواضيع الأخيرة
تعال تعرف على مكونات exe والاحتراف مهم
صفحة 1 من اصل 1
تعال تعرف على مكونات exe والاحتراف مهم
السلام عليكم ورحمة الله تعالى وبركاته
شباب حبيت انقل لكم
موضوع رائع انا استفدت منه
كثير
انا ما دري هو مكرر او لا
اذا ما نظرنا الى جميع المنتديات العربية و حتى الاجنبية
و اطلعنا على صفحاتها الاولى نجد :
تشفير بفروست خام فقط بالهيكس
تشفير بوزون من الافيرا و الباندا بتغيير قيمة ثنائية وثلاثية و حتى سباعية.
و هكذا من العناوين البراقة لكن
هل تعرف مكونات هذا الملف exe و ما هي البنية الاساسية له؟ ام فقط تغيير قيم وكفى؟
اذن هيا بنا نكشتف سويا اسرار هذه النوعية من الملفات
الملف exe من الملفات التنفيذية كما يعلم الجميع وتندرج اضافة الى ملفات dll و ocx و..
في ما يعرف بملفات pe
لكن ما معنى هذا الاختصار؟
هو اختصار لكلمة portable executable
و كما قلنا اضافة الى exe توجد dll و ocx
لكننا هنا سنحاول شرح مكونات exe وطبعا ما ينطبق عليه ينطبق على الباقي
اذن ماهي البنية الاساسية لملفات pe
يتكون ملف pe من خمسةاقسام
1 قائمة تعريف الدوس = Dos MZ Header
2 قسم الدوس = Dos stub
3قائمة تعريف بي = Pe Header
4 قائمة اقسام البرنامج = Section table
5 اقسام البرنامج = Section
على الاقل لابد من وجود قسمين في اقسام البرنامج و قد تصل حتى ثمانية اقسام
كل ملفات pe تبدأ Dos Header و التالي تشغل مساحة 64 بايت من الملف في هذه الحالة يتم تشغيل الملف من الدوس
فإن كان الملف ملائم يتم نداء مقاطعات الدوس وهي 21hأما اذا كان البرنامج يعمل تحت بيئة win32 انذاك سيتم نداء المقاطعة
21h ثم الخدمة رقم 9 وهي الخاصة بطبع النصوص مثل L.!This program cannot be run in DOS mode
اذن دعنا نتعمق قليلا في مكونات هذا الملف و التجربة ستكون على سرفر بفروست مدمنين بفروست خخخخخ
لنفتح السرفر باي محرر الهيكس و ليكن hex workshop
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
[size=21]اول ما يثير الانتباه عند فتح اي ملف pe الحرفان MZ
الحرفان اختصار لmark zbikowsky و هو واحد من افضل مصممين MS-DOS
كما قلنا في السابق ان dos header يشغل 64 بايت من مساحة الملف و اذا ما
حسبنا عدد البايتات الملونة (باللون الاسود) في الصورة السابقة
سنجد 64 بايت تليها 21 خاصة بنداء مقاطعة الدوس (اللون الاصفر) ان كان
البرنامج سيشتغل في بيئة الدوس ان لم يشتغل يتم طباعة الجملة الشهيرة
خاصة بقسم الدوس (اللون الاخضر)ومعناه ان البرنامج سيشتغل على win32
هل رأيت الأربع بايتات التي باللون الاحمر D8000000 هذه البايتات خاصة بالدالة e_ifanew
و هذه هي البنية الخاصةDos MZ header
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
عنصر كما موضح في صورة كل عنصر من نوع word اي 2بايت عادا الدالة e_ifanew التي تاتي في اخر الصورة
فطولها dword اي 4 بايت
كما تعلمنا في السابق ان الذاكرة تقرأ القيم عكسيا
بمعنى ان القيمة D8000000 ستقرأها الذاكرة هكذا 000000D8
اي ان البايت الايمن يصبح الاول يليه الثاني يليه الى اخر
و هو الاوفست بداية القسم PE header
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
و بذلك نكون قد انتهينا من شرحDos MZ header و dos stub
PE header
الـ Pe header يمثل الجزء الاساسي من بينية الملف و يشمل 248 بايت كما في الصورة
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
و هذا القسم له بنية خاصة به و هي IMAGE_Nt_HEADERS و يتكون من ثلاث عناصر وهي معرفة كما يلي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]
signature يمثل 4 بايت اي 00 00 45 50 و هذه هي القيم الخاصة ببداية PE Header
اما file Header يمثل 20 بايت بعد signature و يشمل معلومات حول خصائص الملف مثل عدد الاقسام .تاريخ انشاء الملف نوع الجهاز
و العنصر File Header له بنية خاصة به
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
هذه الدالة تدل على نوعية الجهاز المستخدم
بالنسبة لمستخدمي intel 386 القيمة هي 014c
اما ان كان cpu من نوع intel 486 فالقيمة هي 014d
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
الدالة NumberofSections خاصة بعدد اقسام البرنامج بحيث اذا ما اردنا ان
نضيف قسم او نحذف قسم لازم نعدل على هذه القيمة على حسب ما نريد
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
و بإمكاننا التأكد بواسطة البرنامج LordPE
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
TimeDateStamp هذه الدالة تدل على تاريخ ووقت انشاء الملف
PointerToSymbolTable و NumberOfSymbols هذين العنصرين يستخدموا لdebuginformation
SizeOfOptionalHeader هو حجم OptionalHeader
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
اذا عكسنا هذه القيمة و اخدت وضعها الطبيعي فإنها تصبح هكذا 00e0 وهي تساوي 224 بالعشري وهو فعلا حجم الOptionalHeader
characteristics هذه الدالة تشير الى خصائص الملف كونه exe ام DLL و الصورة التالية توضح
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
كما ترى في الصورة القيمة 0F01 لوعكسنها ستصبح 010F
واذا استعملنا برنامج LordPe
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ذا ضغطنا على التبويب الملون بالأخضر ستحصل على هذا الشكل
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
اقتباس:
اقتباس:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
optionalHeader تمثل 224 بايت بعد fileHeader ويشمل معلومات خاصة بملف Pe
مثل حجم الكود و حجم البيانات و نقطة الادخال الاصلية للبرنلمج
وهذا العنصر له بنية خاصة به وهي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
سوف نتطرق لأهم الدوال
AddressOfEntryPoint هذه الدالة تحدد نقطة انطلاقة البرنامج وهو اول امر
سوف يتم تنفيذه وهذه النقطة هي عبارة عن عنوان في الذاكرة و يتم الاشارة
إليها بRVA
Relative virtual address
imagebase تشير هذه الدالة الى عنوان بداية البرنامج في الذاكرة و هذا هو العنوان 400000 وهو ثابت بنسبة 99%
SectionAlignment هذه الدالة تشير الى تنسيق محتويات اقسام البرامج في
الذاكرة و في الاغلب تكون القيمة 1000h وعلى سبيل المثال اذا كانت قيمة
هذه الدالة 1000h
عندئد كل قسم يجب ان يبدأ في مضاعفات العدد 1000h فإذا كان القسم الاول يبدأ عند 401000h القسم الثاني سيكون 402000
fileAlignment تشير الى تنسيق محتويات البرنامج على القرص الصلب و غالبا ما تكون قيمة هذا القسم 200h
على سبيل المثال اذا كانت قيمة هذه الدالة 200h عندئد كل قسم يجب ان يبدأ
في مضاعفات هذا العدد ان كان offset للقسم الأول يساوي 200h فإن القسم
الثاني يجب ان يحدد عند offset
400h
sizeOfImage حجم البرنامج ككل في الذاكرة
sizeOfheaders حجم كل header اضافة الى قائمة اقسام البرنامج وهذه القيمة مساوية لحجم الملف ناقص حجم اقسام البرنامج
dataDirectory عبارة عن مصفوفة تتكون من 16 عنصر ولها بينية خاصة بها وهي Image_data_Directory
وهي تمثل 128 بايت من ال Optionalheader و الDataDirectory وهي معرفة كما في الشكل التالي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
virtual address ينسب اليه فهو ImageBase + RVA
isize يشمل حجم بيانات كل عنصر من العناصر 16 ولكن بالبايتات و كما قلنا
من قبل ان هذه المصفوفة تتكون من 16 عنصر كما في الشكل التالي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ولكي تتضح لنا الصورة جيدا نحمل سرفرنا الى برنامج lordPe ثم نضغط على directoies لنرى مثل هذه الصورة
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
كما ترى في الصورة 16 عنصر لكن في برنامجنا توجد اربع عناصر لهم قيم اما الباقي قيمهم صفر
و يتم توضيح الاربع عناصر في برنامج محرر hex على الشكل التالي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ملاحظة الRVA هو عبارة عن virtualAddress-Imagebase
و بذلك نكون قد انتهينا من شرح Pe header و الجزء الاول
و ان شاء الله لنا عودة في الجزء الثاني و المتعلق بشرح Section Table و ٍsection
السلام عليكم ورحمة الله
منقول من موضوع
المبدع
vallecano[/size]
شباب حبيت انقل لكم
موضوع رائع انا استفدت منه
كثير
انا ما دري هو مكرر او لا
اذا ما نظرنا الى جميع المنتديات العربية و حتى الاجنبية
و اطلعنا على صفحاتها الاولى نجد :
تشفير بفروست خام فقط بالهيكس
تشفير بوزون من الافيرا و الباندا بتغيير قيمة ثنائية وثلاثية و حتى سباعية.
و هكذا من العناوين البراقة لكن
هل تعرف مكونات هذا الملف exe و ما هي البنية الاساسية له؟ ام فقط تغيير قيم وكفى؟
اذن هيا بنا نكشتف سويا اسرار هذه النوعية من الملفات
الملف exe من الملفات التنفيذية كما يعلم الجميع وتندرج اضافة الى ملفات dll و ocx و..
في ما يعرف بملفات pe
لكن ما معنى هذا الاختصار؟
هو اختصار لكلمة portable executable
و كما قلنا اضافة الى exe توجد dll و ocx
لكننا هنا سنحاول شرح مكونات exe وطبعا ما ينطبق عليه ينطبق على الباقي
اذن ماهي البنية الاساسية لملفات pe
يتكون ملف pe من خمسةاقسام
1 قائمة تعريف الدوس = Dos MZ Header
2 قسم الدوس = Dos stub
3قائمة تعريف بي = Pe Header
4 قائمة اقسام البرنامج = Section table
5 اقسام البرنامج = Section
على الاقل لابد من وجود قسمين في اقسام البرنامج و قد تصل حتى ثمانية اقسام
كل ملفات pe تبدأ Dos Header و التالي تشغل مساحة 64 بايت من الملف في هذه الحالة يتم تشغيل الملف من الدوس
فإن كان الملف ملائم يتم نداء مقاطعات الدوس وهي 21hأما اذا كان البرنامج يعمل تحت بيئة win32 انذاك سيتم نداء المقاطعة
21h ثم الخدمة رقم 9 وهي الخاصة بطبع النصوص مثل L.!This program cannot be run in DOS mode
اذن دعنا نتعمق قليلا في مكونات هذا الملف و التجربة ستكون على سرفر بفروست مدمنين بفروست خخخخخ
لنفتح السرفر باي محرر الهيكس و ليكن hex workshop
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
[size=21]اول ما يثير الانتباه عند فتح اي ملف pe الحرفان MZ
الحرفان اختصار لmark zbikowsky و هو واحد من افضل مصممين MS-DOS
كما قلنا في السابق ان dos header يشغل 64 بايت من مساحة الملف و اذا ما
حسبنا عدد البايتات الملونة (باللون الاسود) في الصورة السابقة
سنجد 64 بايت تليها 21 خاصة بنداء مقاطعة الدوس (اللون الاصفر) ان كان
البرنامج سيشتغل في بيئة الدوس ان لم يشتغل يتم طباعة الجملة الشهيرة
خاصة بقسم الدوس (اللون الاخضر)ومعناه ان البرنامج سيشتغل على win32
هل رأيت الأربع بايتات التي باللون الاحمر D8000000 هذه البايتات خاصة بالدالة e_ifanew
و هذه هي البنية الخاصةDos MZ header
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
عنصر كما موضح في صورة كل عنصر من نوع word اي 2بايت عادا الدالة e_ifanew التي تاتي في اخر الصورة
فطولها dword اي 4 بايت
كما تعلمنا في السابق ان الذاكرة تقرأ القيم عكسيا
بمعنى ان القيمة D8000000 ستقرأها الذاكرة هكذا 000000D8
اي ان البايت الايمن يصبح الاول يليه الثاني يليه الى اخر
و هو الاوفست بداية القسم PE header
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
و بذلك نكون قد انتهينا من شرحDos MZ header و dos stub
PE header
الـ Pe header يمثل الجزء الاساسي من بينية الملف و يشمل 248 بايت كما في الصورة
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
و هذا القسم له بنية خاصة به و هي IMAGE_Nt_HEADERS و يتكون من ثلاث عناصر وهي معرفة كما يلي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]
signature يمثل 4 بايت اي 00 00 45 50 و هذه هي القيم الخاصة ببداية PE Header
اما file Header يمثل 20 بايت بعد signature و يشمل معلومات حول خصائص الملف مثل عدد الاقسام .تاريخ انشاء الملف نوع الجهاز
و العنصر File Header له بنية خاصة به
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
هذه الدالة تدل على نوعية الجهاز المستخدم
بالنسبة لمستخدمي intel 386 القيمة هي 014c
اما ان كان cpu من نوع intel 486 فالقيمة هي 014d
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
الدالة NumberofSections خاصة بعدد اقسام البرنامج بحيث اذا ما اردنا ان
نضيف قسم او نحذف قسم لازم نعدل على هذه القيمة على حسب ما نريد
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
و بإمكاننا التأكد بواسطة البرنامج LordPE
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
TimeDateStamp هذه الدالة تدل على تاريخ ووقت انشاء الملف
PointerToSymbolTable و NumberOfSymbols هذين العنصرين يستخدموا لdebuginformation
SizeOfOptionalHeader هو حجم OptionalHeader
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
اذا عكسنا هذه القيمة و اخدت وضعها الطبيعي فإنها تصبح هكذا 00e0 وهي تساوي 224 بالعشري وهو فعلا حجم الOptionalHeader
characteristics هذه الدالة تشير الى خصائص الملف كونه exe ام DLL و الصورة التالية توضح
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
كما ترى في الصورة القيمة 0F01 لوعكسنها ستصبح 010F
واذا استعملنا برنامج LordPe
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ذا ضغطنا على التبويب الملون بالأخضر ستحصل على هذا الشكل
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
اقتباس:
اقتباس:
0001+0002+0004+0008+0100=010F كيف تم حساب تلك القيمة؟ انطلاقا من هذا الجدول |
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
optionalHeader تمثل 224 بايت بعد fileHeader ويشمل معلومات خاصة بملف Pe
مثل حجم الكود و حجم البيانات و نقطة الادخال الاصلية للبرنلمج
وهذا العنصر له بنية خاصة به وهي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
سوف نتطرق لأهم الدوال
AddressOfEntryPoint هذه الدالة تحدد نقطة انطلاقة البرنامج وهو اول امر
سوف يتم تنفيذه وهذه النقطة هي عبارة عن عنوان في الذاكرة و يتم الاشارة
إليها بRVA
Relative virtual address
imagebase تشير هذه الدالة الى عنوان بداية البرنامج في الذاكرة و هذا هو العنوان 400000 وهو ثابت بنسبة 99%
SectionAlignment هذه الدالة تشير الى تنسيق محتويات اقسام البرامج في
الذاكرة و في الاغلب تكون القيمة 1000h وعلى سبيل المثال اذا كانت قيمة
هذه الدالة 1000h
عندئد كل قسم يجب ان يبدأ في مضاعفات العدد 1000h فإذا كان القسم الاول يبدأ عند 401000h القسم الثاني سيكون 402000
fileAlignment تشير الى تنسيق محتويات البرنامج على القرص الصلب و غالبا ما تكون قيمة هذا القسم 200h
على سبيل المثال اذا كانت قيمة هذه الدالة 200h عندئد كل قسم يجب ان يبدأ
في مضاعفات هذا العدد ان كان offset للقسم الأول يساوي 200h فإن القسم
الثاني يجب ان يحدد عند offset
400h
sizeOfImage حجم البرنامج ككل في الذاكرة
sizeOfheaders حجم كل header اضافة الى قائمة اقسام البرنامج وهذه القيمة مساوية لحجم الملف ناقص حجم اقسام البرنامج
dataDirectory عبارة عن مصفوفة تتكون من 16 عنصر ولها بينية خاصة بها وهي Image_data_Directory
وهي تمثل 128 بايت من ال Optionalheader و الDataDirectory وهي معرفة كما في الشكل التالي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
virtual address ينسب اليه فهو ImageBase + RVA
isize يشمل حجم بيانات كل عنصر من العناصر 16 ولكن بالبايتات و كما قلنا
من قبل ان هذه المصفوفة تتكون من 16 عنصر كما في الشكل التالي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ولكي تتضح لنا الصورة جيدا نحمل سرفرنا الى برنامج lordPe ثم نضغط على directoies لنرى مثل هذه الصورة
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
كما ترى في الصورة 16 عنصر لكن في برنامجنا توجد اربع عناصر لهم قيم اما الباقي قيمهم صفر
و يتم توضيح الاربع عناصر في برنامج محرر hex على الشكل التالي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ملاحظة الRVA هو عبارة عن virtualAddress-Imagebase
و بذلك نكون قد انتهينا من شرح Pe header و الجزء الاول
و ان شاء الله لنا عودة في الجزء الثاني و المتعلق بشرح Section Table و ٍsection
السلام عليكم ورحمة الله
منقول من موضوع
المبدع
vallecano[/size]
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
الأحد أبريل 21, 2013 5:13 am من طرف Admin
» ما اروع هذه النكت الجزائرية
الأحد أبريل 21, 2013 5:08 am من طرف Admin
» اختبر ذكاء
الأحد أبريل 21, 2013 5:02 am من طرف Admin
» لـغــــز مـعـلمــة الرياضيــات
الأحد أبريل 21, 2013 4:58 am من طرف Admin
» 8 الغاز
الأحد أبريل 21, 2013 4:52 am من طرف Admin
» الغاز صعبة
الأحد أبريل 21, 2013 4:49 am من طرف Admin
» ألغاز
الأحد أبريل 21, 2013 4:46 am من طرف Admin
» وصفات القضاء على القشرة/خاص بالاكاديمية
الأحد أبريل 21, 2013 4:41 am من طرف Admin
» العناية بالشعر الجاف في خمس خطوات بسيطة
الأحد أبريل 21, 2013 4:39 am من طرف Admin