Microsoft Word - Dokument1

ملفّات مشابهة
Microsoft Word - new.doc

شرح برنامج استعادة الملفات المحذوفة Recover my files من اعداد : رافاييل يوسف مقدمة: آلنا يعلم ان اجهزة الكومبيوتر قادرة على حفظ الملفات على قرصها الصل

شرح توزيعة Parted Magic السلم عليكم و رحمة ال تعالى و بركاته شرح توزيعة Parted Magic )الصدار الثالث( الفهرس : (1 مقدمة (2 تحميل التوزيعة (

<4D F736F F D20D8D1EDDEC920CDD0DD20C7E1E1EDE4DFD32E646F63>

الأول في السي شارب((c#للمبتدائين

How To Make Connection Between Oracle DB Server 9i & Oracle Developer 6i

) NSB-AppStudio برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( ) برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( NSB-AppStudio الدرس األول ) 1 ( الدرس

Microsoft Word - intégral 2sc exp.doc

اردوينو – الدرس الثامن – تغيير درجة الالوان لـ RGB LED

كيفية تفعيل خدمة IIS ونشر موقع ويب على الشبكة احمللي السالم عليكم اصدقائي الكرام في هذا الكتاب سنتناول ما هي خدمة المعلومات وكيفية التفعيل ونشر الموقع

كيفية استخدام موقع 4shared لرفع الملفات وتنظيمها على النترنت للمبتدئين. والمتقدمين في الحاسب. كتاب ل ابراهيم شاهين

Microsoft Word - Excel VBA

المحاضرة الثانية

Microsoft Word - Suites_Numériques_1_sm.doc

السالم عليكم ورحمة هللا وبركاتة كتاب تعلم برمجة االلعاب بأستخدام محرك االلعاب Unity 3D الكتاب مقدم من االستاذ : عماد عارف التوي موقع : Home OF Games ا

How To Install Oracle Forms & Reports 6i

WHAT’S NEW

Microsoft Word - moneybookers

السالم عليكم و رحمة هللا شرح ربط قاعدة بيانات Access بال.. C# مذا ستستفيد من هذا الموضوع!! -معرفة طريقة صنع قاعدة بيانات بالAccess -ربط قاعدة البيانات

Slide 1

اختر عنوان مناسب

Allomani Warehouse User Guide

عرض تقديمي في PowerPoint

S_ARB_032810_Chapter1

Microsoft Word - Access VBA

Microsoft Word - C#2

التحكم في الجهاز عن بعد باستخدام نظام VNC

دليل تدريبي : الحلول لما بعد اختراق الحسابات إعداد : محمد المسقطي Mohammed Al-Maskati بمساعدة : علي السباعي Ali Sibai

The Global Language of Business دليل ارشادي الستخدام صفحة خدمات الشركات األعضاء Members Area 1

Microsoft Word - dériv sc maths.doc

حقيبة الدورة التدريبية التخزين السحابي Google Drive حقيبة المتدربة إعداد املدربة : عزة علي آل كباس Twitter 1438 ه

تنصيب و إعداد تقانة التستجابة الذكية (SRT) التخزين المؤقت باتستخدام أقراص الحالة الصلبة SRT Intel Smart Response Technology Installation Guide (SSD Ca

دليل المستخدم لبوابة اتحاد المالك التفاعلية

Microsoft Word - Question Bank-II Sem. BA Arabic Core Course, Informatics with DTP

نموذج )1( الحد الأدنى لمحتوى )الوكالات( الصفحة الرئيسية تحتوي الصفحة الرئيسية العناصر الأكثر أهمية لزائر موقع الوكالة وتوضع فيها الإعلانات والاخبار ال

Microsoft Word - Kollo_ ARA.docx

ondelum

التعريف بعلم الإحصاء

جامعة حضرموت

مادة اثرائية تكنولوجيا الصف الحادي عشر وحدة الوسائط المتعددة شرح برنامج VSDC إلنتاج وحترير الفيديو المشرف التربوي د.عطايا يوسف عابد مديرية التربية وال

FS Future Series دليل البدء السريع الرجاء قراءة التعليمات التالية من أجل تثبيت وتنشيط 3D. Visualizer برنامج

اسم التجربة:

دولة فلسطين و ازرة التربية والتعليم العالي المبحث: تكنولوجيا المعلومات / النظري بسم هللا الرحمن الرحيم مدة االمتحان : ساعتان نموذج تجريبي مجموع العالم

برنامج المساعدات المادية الذكي خطوات التقديم للمساعدة المادية...2 خطوات رفع المستندات المرفوضة...10 خطوات التاكد من حالة الطلب

correction des exercices pendule pesant Ter

Basics Buffer overflow ç Ê< Êæ]< ËfÖ]<l^é ^ _ < الثغرات.. النوع من هذا تجهل هل هذا الكتاب متخصص في فهم دينامكية هذا نوع من الثغرات! >>>>>>>>>>>>>>> ال

les ondes mecaniques progressives cours

الدليل التدريبي لتسجيل منتج البوابة االلكترونية للمطابقة )سابر( الدليل التدريبي لتسجيل منتج 0

Our Landing Page

المحاضرة الثانية عشر مقاييس التشتت درسنا في المحاضرة السابقة مقاييس النزعة المركزية أو المتوسطات هي مقاييس رقمية تحدد موقع أو مركز التوزيع أو البيانات

عرض تقديمي في PowerPoint

Microsoft Word - AR_ _UM TLCD - KBRC01A.doc

عرض تقديمي في PowerPoint

محاضرة4-كورس1

Microsoft Word - SolutionOOPFinal2011.doc

عبارات الحملة

الدرس : 1 مبادئ ف المنطق مكونات المقرر الرسم عناصر التوج هات التربو ة العبارات العمل ات على العبارات المكممات االستدالالت الر اض ة: االستدالل بالخلف ا

مختبر البرمجة والتحليل العددي قسم علوم الجو جمل التحكم والشرط والتكرار المرحلة الثانية PROGRAM CONTROL, CONDITION AND LOOP STATEMENTS الجمل الشرطية :-

الفهرس: كيفية ضبط الموبايل/التابلت: خدمة االنترنت معرفة مسبقا على الجهاز. في حالة عدم تعريف خدمة االنترنت مسبقا على الجهاز يمكنك ضبطه يدويا ادخل على D

بسم هللا الرحمن الرحيم المادة: مقدمة في بحوث العمليات )100 بحث ) الفصل الدراسي األول للعام الدراسي 1439/1438 ه االختبار الفصلي الثاني اسم الطالب: الرق

Forum.zyzoom.net

Microsoft Word - Sample Weights.doc

1 درس :

تحليل الانحــدار الخطي المتعدد

تمرين 1 ص 99 1 )اجب بصحيح أو خطا : ph > log k e أ )يكون محلول قاعديا إذا آان : سلسلة تمارين حول المعايرة HA/ على الشكل : A pk للمزدوجة بثابتة الحمضيةA

10) série d'exercices chute libre d'un corps solide

وزارة الرتبية الوطنية امتحان بكالوراي التعليم الثانوي الشعبة: تقين رايضي اختبار يف مادة: الرايضيات اجلمهورية اجلزائرية الدميقراطية الشعبية الديوان الو

MS- Access Training 2000

مدرسة هارون الرشيد الثانوية للبنين المهارات العملية / تكنولوجيا المعلومات ( الثاني عشر) إعداد/ أ. خالد الح

الدليل التدريبي لطلب شهادة مطابقة إرسالية )للمنتجات المستوردة( البوابة االلكترونية للمطابقة )سابر( الدليل التدريبي لطلب شهادة مطابقة إرسالية )للمنتجات

MICROECONOMICS

أكاديمیة الجھة الشرقیة تمارین محلولة:المنطق المستوى : الا ولى باك علوم تجریبیة الا ستاذ: نجیب عثماني p q p : ((- 2 ) 2 ¹ 4 ) q : p عبا

الفصل الثاني

الصف السادس االبتدائي الفصل الدراسي االول بسم هللا الرحمن الرحيم الصفحة محتويات الفصل الدراسي األول الموضو

ABU DHABI EDUCATION COUNCIL Abu Dhabi Education Zone AL Mountaha Secondary School g-12 science section Mathematics Student Name:.. Section: How Long i

متطلبات النظام متطلبات جهاز الكمبيوتر الشخصي معالج Pentium 1 Intel غيغا هرتز أو أسرع نظام التشغيل Windows 2000 أوXP Windows مع Service Pack 2 أو Vista

Microsoft Word - 55

ثنائي القطب ثنائي القطب س 4 مادة العلوم الفيزيائية الكهرباء مميزات بعض ثنائيات القطب غير النشيطة الجذع المشترك الفيزياء جزء الكهرباء مميزات بعض ثنائيا

Microsoft Word - 1-NURSE CALL SYSTEM

منتديات طموحنا * ملتقى الطلبة و الباحثين *

Slide 1

ورقة عمل الدرس الثاني تطبيقي اخلاص على هاتفي... برنامج App Inventor اعداد املعلمة : اماني ممدوح املصري مدرسة امحد شوقي الثانوية للبنات اختار اإلجابة ا

درس 02

Student Help

serie

الفرق بين البرمجة الإجرائية و البرمجة المسيرة بالأحداث :

الكيمياء : استعمالات حمض البنزويك الجزء الاول : تحديد النسبة المائوية لحمض البنزويك الخالص C 6 H 5 COOH (aq) + H 2 O (l) C 6 H 5 COO (aq) pk A = logk

ammarimaths collège

عمليات التقييم - تقييم خارجي مستقل لوظيفة التقييم في منظمة العمل الدولية

مقدمة أ- إن البلاغة الفصل الا ول أساسية البحث من كلمة بلغ المعنى وصل المراد وصول رسالة لها كلام تسليمها واحد إلى آخر. و من الا صطلاح هي بلوغ المتكلم ف

Microsoft Word - BacCorr2008SVT_WEB.doc

قوانين اإلستعارة هذه هي قوانين اإلستعارة التي تسري في المكتبات الشعبية في كل من بيورهولم, نوردمالينغ, روبيرت فورش, اوميو, فيندلن و فيينسس. بطاقة المكت

Determinants

الدوال في اكسل الدوال: هي صيغ معرفة مسبقا تقوم بإجراء عمليات حسابية بإستخدم قيم محددة ووسائط مسماة في ترتيب بنية معينة بناء الدالة: إغالق. يبدأ بناء ا

المحاضرة الرابعة التكامل المحدد Integral( (Definite درسنا في المحاضرة السابقة التكامل غير المحدد التكامل المحدد لها. ألصناف عدة من التوابع وسندرس في ه

Microsoft Word - ترتÙ−ب جدًٗ اٗآÙ−ٗتس.docx

Microsoft Word - QA-Reliability

Public Sector Institutions Reform & Development (in Arabic)

Microsoft Word - ??????? ?? ?????? ?????.doc

النسخ:

مقدمه: بسم الله الرحمن الرحيم شرح لصيغة ملف الPE الحمد الله رب العالمين والصلاة والسلام علي اشرف المرسلين نبينا محمد وعلى اله وصحبه اجمعين ثم اما بعد. قمت بكتابه هذا الشرح لصيغه ملف الPE وهى صيغة الملف المستخدم فى بيي ة الوندوز للتسهيل على القارئ الكريم فهم طريقة عمل البرامج فى بيي ة الوندوز. لا ادعى بانى خبير فيها ولكن با ستخدام بعض الادوات واهمها ollydbg ومعرفة خباياه. نستطيع إستنتاج الكثير عن هيي ه هذه الملفات الهدف الاساسى من فهم صيغة ملفات الPE (PORTABLE EXECUTABLE) هو لفهم مكوناته والتى سوف تساعدنا فى العثور على الاخطاء البرمجيه بشكل اسهل والتغير فى مسار البرنامج آيفما نريد حتى وإن لم تتوفر لدينا الشفره المصدريه للبرنامج. بالطبع الموضوع ليس سهلا وانا مازلت فى بداية تعلمى لهذه الماده, لذلك انصح الذى يريد ان يقراء هذا الموضوع ان يتحلى بالصبر ويحاول تقسيمه إلى اجزاء ولا يمر على جزء إلا إذا تاآد من انه قد فهم محتواه فهما آام لا. ايضا احب ان اذآر القارء الكريم باننى إنسان ومعرض للخطاء والنسيان, لذلك ارجو من آل من يقراء هذا الموضوع ويجد فيه خطا ما ان يخبرنى حتى اتمكن من تعديله وذلك إما على منتديات الفريق العربى ahmed_d404@yahoo.se فى قسم الاسمبلى او على البريد الالكترونى www.arabteam2000-forum.com والان ادعكم معى الشرح واسي ل االله العلى القدير ان ينفعنى وإياآم به: ملاحظه: سوف احاول على قدر المستطاع إختيار الكلمات المناسبه لترجمة المصطلحات التقنيه, ولكن فى نفس الوقت ساضع المصطلحات باللغه الانجليزيه بين قوسين حتى يسهل على القارء الرجوع إلى قاموس والتاآد من الترجمه الصحيحه للمصطلح. 1

بنية الملف File Structure نقوم اولا با لقاء نظرة شامله على مكونات الملف وبعد ذلك ناتى على آل جزء ونشرحه بالتفصيل. بيي ة الملف مقسمه إلى خمس اجزاء اساسيه وهى على النحو التالى: قاي مة تعريف الدوز Header) (DOS MZ قسم الدوز stub) (DOS قاي مة تعريف الPE (PE Header) قاي مة اقسام البرنامج table) (Section اقسام البرنامج (Sections).1.2.3.4.5 1.صورة اقسام ملف الPE 2

IMAGE_DOS_HEADER STRUCT قسم قاي مة تعريف الدوز Header) (DOS MZ e_magic WORD? e_cblp WORD? آما تلاحظ فى صورة اقسام ملف الPE اول جزء فى الملف هو قاي مة تعريف الدوز e_cp WORD? Header) (DOS MZ لو بحثت فى ملف windows.inc بالنسبه لمستخدمى e_crlc WORD? الاسمبلى او ملف windows.h بالنسبه لمستخدمى السى عن دالةstruct إسمها e_cparhdr WORD? e_minalloc WORD? IMAGE_DOS_HEADER STRUCT ستجدها معرفه آما هو مبين فى e_maxalloc WORD? القاي مه. e_ss WORD? e_sp WORD? الstruct يتكون من 19 عنصر آلها من نوع word عدى اخر عنصر فهو من e_csum WORD? نوع double word الstruct بالكامل يتكون من 40 بايت. e_ip WORD? e_cs WORD? من اسماء الحقول يمكننا ان نستنتج الكثير فمثلا الحقل e_sp ماذا تتوقع ان يكون e_lfarlc WORD? محتواه بالتاآيد مو شر المكدس pointer) (stack, آذلك الحقل e_ip من الاسم e_ovno WORD? يمكننا ان نستنتج انها مو شر الاوامر pointer) e_cs,(instructions حقل e_res WORD 4 dup (?) الاوامر( segment.(code وهكذا. e_oemid WORD? الان نريد ان نشاهد ذلك فى ارض الواقع ونرى شكل قاي مة تعريف الدوز (DOS e_oeminfo WORD? e_res2 WORD 10 dup (?) Header) MZ فى ملف حقيقى, دعونا نختر برنامج وليكن حجمه صغير ا و e_lfanew DWORD? نستدعيه من ollydbg ثم نستعرض بداية الملف, تابع الان معى الخطوات التاليه: IMAGE_DOS_HEADER ENDS شغل برنامج ollydbg ومن قاي مة file اختر open ثم اختر البرناج الذى تريد إستعراضه. اضغط على الزرار Alt-M من لوحة المفاتيح, ستظهر لك قاي مة تشريحيه للذاآره map). (Memory.2 قاي مة تشريحيه الذاآره فى هذه القاي مه ستجد سطر يحتوى على النص PE header وإلى اليسار منه إسم البرنامج الذى إخترته, وآما هو واضح من الصوره فا ن اسم البرنامج الذى إخترته هو,win وآما تلاحظ ايضا من الصوره فى السطر ما قبل الاخير فهناك PE header اخر وثالث ورابع, ولكنه ليس PE header البرنامج الذى إستدعيناه. احتفظ بهذه النافذه امامك لاننا سنعود إليها مرارا وتكرارا فهى تحتوى على آل ما نحتاجه فى هذا الشرح. بعد ان حددنا السطر علينا الان با ختياره بالزر الايمن للفاره ومن ثم نختار Dump آما هو موضح فى الصوره, ستفتح لنا نافذه اخرى, علينا الان ان نذهب إلى اعلى النافذه ومقوم بتحليل محتوياتها. 3. بداية ملف الPE 3

رغم ان الاسماء تختلف فى ollydbg عنها فى ملف windows.h إلا ان المحتوى هو ما يهمنا, إنظر إلى اول سطر تلاحظ وجود الرمز MZ جميع ملفات الوندوز التنفيذيه تبداء بهذين الرمزين, وهى فى الحقيقه رمز لا سم مخترع ملفات الدوز القديمه Zbikowsky).(Mark لن اقوم بشرح جميع محتويات لانها خاصه ببرامج الدوز وهى لا تهمنا آثيرا لفهم ملفات الPE المهم هو ان نعرف ان اول 36 بايت من الملف تخص برنامج الدوز, اما اخر 4 بايت فهى عنوان الheader.PE 4. عنوان الheader PE لو حسبنا 36 بايت من بداية الملف فسنجد فى العناوين من 37 إلى 40 عنوان الheader PE ولكن ollydbg تسهل علينا ذلك بوضع شرح للداله آما هو موضح فى الصوره. إذا نستنتج من ما سبق ان قاي مة الدوز Header) (DOS MZ تتكون من 40 بايت, اول 2 بايت تحتوى على الاحرف.PE يتبعها شرح لمحتويات برنامج الدوز فى 34 بايت, واخيرا 4 بايت تحمل عنوان الheader MZ قسم الدوز stub) (DOS إذهب إلى قاي مة تشريح الذاآره وهى التى وضحناها فى الصوره رقم 2 بالاعلى, والان بد ستظهر لك نافذه الCPU.,Dump in CPU لا من ان تختار Dump اختر 6. قسم الدوز قسم الدوز هو فى الواقع برنامج آامل يعمل فى بيي ة الدوز ويمكنك ان تكتب برنامج يعمل فى بيي ة الدوز والوندوز, ولكن جرت العاده على ان برنامج الدوز يحتوى فقط على نص يخبرك بان هذا البرنامج يعمل فى بيي ة الوندوز. لا شك ان العديد منها حاول ان يستدعى برنامج وندوز من بيي ة الدوز فى وندوز 98 وما قبلها وآل ما آنا نحصل عليه هو النص التالى This program can not be run in DOS mode ومن ثم يغلق البرنامج, وما يفعله بكل بساطه هو ان البرنامج يستدعى الداله رقم 9 من int 21 ليكتب هذا السطر ثم يصل لنهاية البرنامج, ولكن با مكان المبرمج ان يضع برنامج آامل فى قسم الدوز حيث يعمل البرنامج فى بيي ه مزدوجه. قسم الدوز ليس بهذه الاهميه لفهم محتوياته بالتفصيل يكفى ان نعرف انه عند تشغيل برنامج وندوز فى بيي ة الدوز يقوم البرنامج بتشغيل الشفره الموجوده فى قسم الدوز. قاي مة تعريف الPE (PE Header) ملفات وندوز تبدا فى هذا القسم واهم نقطه فى ما سبق هى اننا حصلنا على عنوان الHeader PE من قاي مة تعريف الدوس وآما ذآرنا سابقا العنوان مجود فى البايت 37 إلى 40 وهى 4 بايت او.double word عند تشغيل اى ملف برنامج او مكتبة DLL يقوم النظام من التاآد من صحة الملف ثم ينتقل إلى هذه النقطه مهملا آ لا من قوام الدوز و قسم الدوز. 4

هذا الجزء من الملف يتكون من داله struct تحتوى على ثلاثة عناصر: IMAGE_NT_HEADERS STRUCT Signature DWORD? FileHeader IMAGE_FILE_HEADER <> OptionalHeader IMAGE_OPTIONAL_HEADER32 <> IMAGE_NT_HEADERS ENDS العنصر الاول هو من نوع double word وهذا العنصر معرف نوع الملف, يحتوى معرف الملف على الاحرف PE وباقى المساحه تحتوى على اصفار. 7. معرف الملف لنذهب إلى صفحة الDump فى ollydbg لنشاهد ذلك, آما هو موضح فى الصوره 7. الرقم 50 هو حرف P بالHex والرقم 45 هو حرف E بالHex IMAGE_FILE_HEADER STRUCT Machine WORD? NumberOfSections WORD? TimeDateStamp DWORD? PointerToSymbolTable DWORD? NumberOfSymbols DWORD? SizeOfOptionalHeader WORD? Characteristics WORD? IMAGE_FILE_HEADER ENDS العنصر الثانى هو عباره عن struct للتذآره مره اخرى جميع هذه الدوال موجوده فى ملف windows.h بالنسبه للسى و ملف windows.inc بالنسبه للاسمبلى. آما تلاحظ فى القاي مه فا ن الداله الثانيه تتكون من word 10 اى 20.byte 8. معلومات معرف الملف عنصر واحد فقط يهمنا فى هذه الداله وهو العنصر الثانى NumberOfSections هذا العنصر يحدد على عدد اقسام البرنامج, وإذا اردنا ان نضيف قسم جديد فلابد ان نعلم البرنامج بهذه الاضافه عن طريق إضافه 1 للعدد الاصلى. فى المثال الموضح بالصوره رقم 8 عدد اقسام البرنامج تتكون من 3, إذا إذا اردنا إضافه قسم جديد فلابد من إضافه 1 للعدد حيث يصبح 4 فى هذه الحاله. فى الغالب تستطيع معرفة عمل آل داله من إسمها, مثلا الداله Machine تدل على نوع الجهاز الذى سيعمل البرنامج عليه, والداله TimeDateStamp تدل على وقت وتاريخ إنشاء الملف وهكذا, لكن الان ما يهما هو عدد اقسام البرنامج لذلك لن نتطرق لتحليل آل جزي يه من مكونات الداله, وخاصتا اننا لا نهدف لا ستخدامها. 5

IMAGE_OPTIONAL_HEADER32 STRUCT Magic WORD? MajorLinkerVersion BYTE? MinorLinkerVersion BYTE? SizeOfCode DWORD? SizeOfInitializedData DWORD? SizeOfUninitializedData DWORD? AddressOfEntryPoint DWORD? BaseOfCode DWORD? BaseOfData DWORD? ImageBase DWORD? SectionAlignment DWORD? FileAlignment DWORD? MajorOperatingSystemVersion WORD? MinorOperatingSystemVersion WORD? MajorImageVersion WORD? MinorImageVersion WORD? MajorSubsystemVersion WORD? MinorSubsystemVersion WORD? Win32VersionValue DWORD? SizeOfImage DWORD? SizeOfHeaders DWORD? CheckSum DWORD? Subsystem WORD? DllCharacteristics WORD? SizeOfStackReserve DWORD? SizeOfStackCommit DWORD? SizeOfHeapReserve DWORD? SizeOfHeapCommit DWORD? LoaderFlags DWORD? NumberOfRvaAndSizes DWORD? DataDirectory IMAGE_DATA_DIRECTORY IMAGE_NUMBEROF_DIRECTORY_ENTRIES dup(<>) IMAGE_OPTIONAL_HEADER32 ENDS العنصر الثالث والاخير هو ايضا من نوع struct وعدد عناصره آثيره وحجمه byte 224 العنصر الاخير فى الداله ياخذ مساحة وحده.byte 128 ايضا هنا توجد العديد من الدوال التى لا نحتاج إلى تغيرها و العديد منها نستطيع معرفتها من إ سم الداله, ساقوم بشرح الدوال المهمه باقى الدوال يمكنك ان تشاهد نتاي جها من خلال ollydbg وعلى آل حال ساترك فقط الدوال التى لن نحتاج إلى التغير فيها والتى تحصل على قيمه ثابته داي ما. آل الدوال التى تبداء بSize لا تحتاج إلى شرح فهى فقط تعبير عن الحجم فى الذاآره فى سبيل المثال SizeOfCode هى حجم شفرة البرنامج فى الذاآره, و SizeOfImage هى حجم البرنامج آكل فى الذاآره وهكذا.. بالطبع هذه الدوال تحسب تلقاي يا عند تغير حجم البرنامج ولا نحتاج إلى تعديلها يدويا, لذلك اآتفى بذآر معناها دون التطرق إلى تفاصيل اآثر. والان إلى النقاط المهمه جدا اولا الداله AddressOfEntryPoint هذه الداله هى التى تحدد مكان إنطلاقة البرنامج, بمعنى ان العنوان الذى تحمله هذه الداله هو الذى يحدد من اى نقطه يبداء البرنامج. العناوين فى ملف PE تحفظ آعنوان نسبى وليس آعنوان مطلق, بمعنى انه لو وجدنا العنوان 1000 فى الداله AddressOfEntryPoint معنى ذالك انها ستنتقل إلى عنوان البرنامج الاصلى فى الذاآره + 1000 يعنى العنوان يبداء العد من النقطه التى حمل البرنامج فيها فى الذاآره.هذه الطريقه فى الاشاره للذاآره تسمى Relative Virtual ) RVA (Address نعود إلى ollydbg لنشاهد ذلك: نحن نعلم ان عنوان برنامجنا فى الذاآره هو 400000h آما هو موضح فى الصوره رقم 3. 9. نقطة البدايه Ollydbg تخبرنا ان نقطة بدايه البرنامج هى 1000 بمعنى ان نقطة البدايه توجد على بعد 1000 بايت من اول الملف. 10. بدية البرنامج وبالفعل البرنامج يبداء عند النقطه 401000h آما هو واضح فى الصوره اعلاه. اغلب العناوين فى ملف الPE تستخدم هذه الطريقه للوصول إلى نقطه معينه فى البرنامج. نعود إلى شرح باقى الدوال: الداله ImageBase تحتوى على عنوان بداية البرنامج وهو فى اغلب الاحيان 400000h فى بعض الحالات الشاذه يحمل البرنامج على عنوان غير العنوان المذآور فى.ImageBase ولكن هذه الحالات نادره جدا لذلك يمكننا ان 6

ناخذها آقاعده ان العنوان المذآرو فى ImageBase هو عنوان بداية البرنامج من ذلك ولمعرفة ما إذا آان بالفعل البرنامج قد حمل على العنوان 400000h. ونستطيع ان نستخدم ollydbg للتاآد يمكننا ان نستخدم ImageBase معى AddressOfEntryPoint للوصول إلى بدايه الشفره وذلك بجمع العنصرين, وهذه هى الطريقه المتبعه بدا من قراي ة عنوان بداية البرنامج يدويا. الداله SectionAlignment هى لتنسيق محتويات اقسام البرنامج فى الذاآره فى الغالب هذه الداله تحتوى على الرقم 1000h, وذلك يعنى ان آل قسم فى البرنامج لابد ان يبداء بعنوان يقبل القسمه على 1000h إختيار هذا الرقم ماهو إلا لان المعالج يستطيع الوصل إلى العناوين القابله للقسمه على 1000h اسرع من العناوين الغير قابله للقسمه على.1000h الداله FileAlignment هى لتنسيق محتويات البرنامج فى القرص الصلب او اى ذاآره ثناي يه تحتوى على الرقم 200h. وهى فى الغالب 11. تنسيق الملف IMAGE_DATA_DIRECTORY STRUCT VirtualAddress DWORD? الدله الاخيره IMAGE_DATA_DIRECTORY هى عباره عن isize DWORD? مصفوفه من نوع struct عدد العناصر فى هذه المصفوفه تحدده IMAGE_DATA_DIRECTORY ENDS الداله IMAGE_NUMBEROF_DIRECTORY_ENTRIES نحضر هذه الداله من ملف windows.h الداله ماهى IMAGE_NUMBEROF_DIRECTORY_ENTRIES equ 16 إلى العدد 16, معنى ذلك ان المصفوفه تتكون من 16 عنصر وآل عنصر هو من نوع.struct ال 16 عنصر ماهى إلى عناوين المقاطع التى IMAGE_DIRECTORY_ENTRY_EXPORT equ 0 IMAGE_DIRECTORY_ENTRY_IMPORT equ 1 يتكون منها البرنامج وهى معرفه فى ملف IMAGE_DIRECTORY_ENTRY_RESOURCE equ 2, windows.h احضرت منها فقط اول ثلاثة عناصر ويمكنك مشاهدة جميع العناصر فى ملف الوندوز. وبالطبع العناوين هى نوع RVA وللوصول إلى الموقع الحقيقى فى الذاآره نتبع نفس الطريقه التى إتبعناها فى المثال السابق. 12. خارطة البرنامج آما تلاحظ لم نستخدم فى هذا البرنامج سوى Import Table وعنوانه فى الذاآره هو 402058h لنذهب إلى ollydbg ونرى ماذا يوجد فى هذا العنوان, نذهب اولا إلى نافذة الDump وهناك نختار Ctrl-G فى النافذه التى تفتح نكتب العنوان 402058 ثم بزر الفاره الايمن اختر من القاي مه bytes).hex <- Hex/ascii 16) 7

13. الدوال المستورده نستطيع ان نرى جميع الدوال التى تم إستيرادها من ضمنها مثلا الداله BeginPaint آاول داله من الدوال المستورده إلى البرنامج, بنفس الطريقه يمكنك الوصول إلى الدوال المصدره او الresources او حتى دوال ال+ com. بهذا نكون قد إنتهينا من شرح اآبر جزء الا وهو قاي مة تعريف الPE بالتاآيد هناك الكثير من الطلاسم, واشياء انا لا اعرفها مثل آيف ينسق الPE دوال ال+ com او الTLS, آما انه من الصعب شرح آل صغيرة وآبيره فى الذاآره لذلك عليك اخى القارء البحث ومحاولة فهم مكانيكيه عمل الPE وذلك بمتابعة البرنامج الصغيره من خلال ollydbg او آتابة برامج صغيره وتحميلها من خلال ollydbg ومن ثم إلقاء مقارنه بينها وبين برامج اخرى لكى ترى الفرق. قاي مة اقسام البرنامج table) (Section هى عباره عن شرح لمحتويات الاقسام, فمثلا قسم الكود.text هو القسم الذى يحتوى على شفرة البرنامج ولذلك لابد ان نعرف هذا القسم فى اقسام البرنامج وهكذا.. قاي مة اقسام البرنامج تتكون من struct آما هو موضح IMAGE_SECTION_HEADER STRUCT فى القاي مه. Name1 db IMAGE_SIZEOF_SHORT_NAME dup(?) union Misc لن نشرح جميع الدوال ولكن نريد فقط ان نفهم PhysicalAddress dd? الاساسيات بالنسبه لهذا القسم. VirtualSize dd? الداله الاولى هى عباره عن إسم فمثلا قسم الشفره آما ends ذآرنا من قبل فهو.text وفى لغة الدلفى يسمى code VirtualAddress dd? ولكن الاسم لا يو ثر على سير البرنامج, ويمكنك ان SizeOfRawData dd? PointerToRawData dd? تختار اى إسم بشرط ان لا يتعدى الاسم 8 احرف PointerToRelocations dd?.(byte) PointerToLinenumbers dd? يليه الدله PhysicalAdress وهى عنوان الداله فى NumberOfRelocations dw? القسم فى الذاآره, ثم VirtualSize وهو حجم NumberOfLinenumbers dw? المحتوى المستخدم فقط, يعنى القسم ربما يكون اآبر Characteristics dd? IMAGE_SECTION_HEADER ENDS ولكن هنا يوضع فقط القسم المستخدم. على سبيل المثال نفترض ان قسم الكود يتكون من 1000 بايت والشفره الموجوده بداخل هذا القسم هى 200 بايت فقط, إذا الVirtualSize هو حجم الشفره وليس حجم القسم آكل. 8

الداله VirtualAddress هى من نوع RVA للقسم وهذه الفكره تم شرحها سابقا. الدوال التى تبداء بكلمة pointer هى دوال من نوع RVA على سبيل المثال PointerToRawData هى مو شر لبداية البيانات الموجوده فى هذا القسم. واخيرا الداله Characteristics هذه الداله تحدد آيفية التعامل معى هذا القسم, وهناك ثلاث مواصفات لكيفيه التعامل معى اقسام البرامج, إما انها تقراء read permission او انه يمكن تغير محتواها write permission او انه يمكن التعامل معها على انها شفرة برنامج,execute permission وبالطبع يمكن تحديد اآثر من طريقه للتعامل معى القسم آالكتابه والقراي ه معا او القراي ه والتشغيل معا الخ.. 14. اقسام البرنامج نجد فى ollydbg اقسام البرنامج مباشرتا بعد الHeader PE من الصوره نستطيع ان نستنتج ان هناك ثلاث اقسام لهذا البرنامج وان القسم الاول هو عباره عن شفره لانه يحمل الداله EXECUTE و,READ اما القسم الثانى فهو عباره عن بيانات ثابته لا يمكن تغيرها لانه من نوع READ فقط, والاخيره من نوع READ و WRITE اى اننا يمكننا ان نغير محتوياتها من خلال البرنامج اثناء عمله. اقسام البرنامج (Sections) القسم الاخير فى ملف الPE هو قسم ويحتوى على الشفره و البيانات مقسمه على حسب ما سبق ذآره فى قاي مة الاقسام وبالاحجام التى تم تحدديها فى القاي مه. للذهاب إلى اى قسم ما عليك سوى ان تختار بزر الفاره الايمن قم تختار Go to address وبعد ذلك تكتب العنوان وollydbg سيقوم بنقلك إلى موقع القسم, غالبا إذا اردت الانتقال إلى شفرة الكود فافضل طريقه هى ان تذهب إلى نافذه الCPU وهناك تستطيع ان تشاهد تحليل آامل للشفره آما هو موضح فى الصوره رقم 10. وإذا اردت مشاهدة الresources يمكنك إستخدام برنامج مثل,ResHacker اما بالنسبه للاقسام الاخرى فبرنامج ollydbg يفى بالغرض. 15. قسم البيانات الصوره الاخيره تظهر قسم البيانات التى توجد فى العنوان,RVA 3000 ذهبنا إلى هذا القسم بكتابة العنوان 403000 بعد إختيار Go To address وبعد ذلك إخترنا إظهار البيانات على شكل.hex 16 هذه آانت بنية الملفات التنفيذيه للوندوز والتى يرمز لها بالاحرف PE وهى إختصار ل( PORTABLE,(EXECUTABLE ارجو ان اآون قد وفقت فى شرحها وإلى اللقاء فى درس اخر إن شاء االله تعالى. تم بحمد االله تعالى 9