عرض مشاركة واحدة
قديم 08-04-2010, 03:07 AM   رقم المشاركة : 1 (permalink)
معلومات العضو
you@11
 
الصورة الرمزية you@11
 

 

 
إحصائية العضو








you@11 غير متواجد حالياً

إرسال رسالة عبر MSN إلى you@11 إرسال رسالة عبر Skype إلى you@11

 

 

إحصائية الترشيح

عدد النقاط : 10
you@11 is on a distinguished road

منقول اتحداك يا ايها المشفر تعرف هذه المعلومات .........


ايها المشفر توقف قليلا
؟
؟
؟
؟
السلام عليكم ورحمة الله تعالى وبركاته

اذا ما نظرنا الى جميع المنتديات العربية و حتى الاجنبية

و اطلعنا على صفحاتها الاولى نجد :

تشفير بفروست خام فقط بالهيكس

تشفير بوزون من الافيرا و الباندا بتغيير قيمة ثنائية وثلاثية و حتى سباعية.

و هكذا من العناوين البراقة لكن

هل تعرف مكونات هذا الملف 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



اول ما يثير الانتباه عند فتح اي ملف pe الحرفان MZ


الحرفان اختصار لmark zbikowsky و هو واحد من افضل مصممين MS-DOS


كما قلنا في السابق ان dos header يشغل 64 بايت من مساحة الملف و اذا ما حسبنا عدد البايتات الملونة (باللون

الاسود) في الصورة السابقة

سنجد 64 بايت تليها 21 خاصة بنداء مقاطعة الدوس (اللون الاصفر) ان كان البرنامج سيشتغل في بيئة الدوس ان لم

يشتغل يتم طباعة الجملة الشهيرة

خاصة بقسم الدوس (اللون الاخضر)ومعناه ان البرنامج سيشتغل على win32

هل رأيت الأربع بايتات التي باللون الاحمر D8000000 هذه البايتات خاصة بالدالة e_ifanew

و هذه هي البنية الخاصةDos MZ header




19 عنصر كما موضح في صورة كل عنصر من نوع 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



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




hjp]h; dh hdih hglatv juvt i`i hglug,lhj >>>>>>>>>

التوقيع

[SIGPIC][/SIGPIC]