black007
إداري سابق وداعم للمنتدى (خبير فحص ملفات)
داعــــم للمنتـــــدى
★★ نجم المنتدى ★★
عضوية موثوقة ✔️
كبار الشخصيات
غير متصل
من فضلك قم بتحديث الصفحة لمشاهدة المحتوى المخفي
بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته

فى سبيل زياده الوعى الامنى فى المجتمع العربى حاولت قدر المستطاع تسهيل الامر على الاخوه الذين يحبون تحليل الملفات فى دوره بسيطه وضعت فيها كل خبراتى المتواضعه عن تحليل الملفات عن طريق تحليلها على الطريقه الديناميكيه
الدوره سانتكلم فيها ان شاء الله عن كل ما يخص الملفات الخبيثه وسنتعرف فيها على اشياء كثيره جدا لذلك اتمنى من كل من يريد البدا فى هذا المشوار ان يحاول التركيز قدر الامكان فى المعلومات التى ستم طرحها ان شاء الله
ما اطمح اليه زياده الوعى الامنى فى المجتمعات العربيه والتقليل من الاعتماد على برامج الحمايه قدر المستطاع لذلك ادعو الله ان يوقنى فى اتمام الدوره الى النهايه على ان يكون هذا العمل خالص لوجه الله تعالى ولا اطلب سوى الدعوه لى ولوالدى
ملحوظه الدوره موجه للمستخدم المبتدا - الى متوسط


الدرس الاول
ما هو تعريف التحليل الديناميكيه
التحليل الديناميكى هو محاوله تشغيل الملف فى حاله الرن تايم ( الوقت الحقيقى ) لمراقبه سلوك البرنامج - ما الذى يستطيع ان يفعله هذا البرنامج - الدوال المخفيه التى يستدعيها - المكتبات التى يعتمد عليها فى تشغيل نفسه - الملفات التى يزرعها - الملفات التى يعدل عليها وغيرها من الامور المهمه التى من خلالها نسطيع ان نستنتج ماذا يفعل هذا الملف تحديدا

تركيب الملفات التنفيزيه
مصطلح "PE" هو اختصار الى "Portable Excutable" اي برنامج مستقل قابل للتنفيذ دون الحاجة الى تنصيبة ويعمل على كل أنظمة الوندوز بغض النظر عن نوع المعالج المستخدم
الصورة التاليه تبين أجزاء البرامج بصيغة "PE"

يبدأ هيكل البرنامج بDOS Header الفائدة منة انة في حال تم تشغيل الملف من نظام الـ MS-DOS سيتعرف نظام الدوس على الملف على انة ملف MS-DOSبعد ذلك يستمر الى Dos Stubاي نسخة عن البرنامج الاصلي بصيغة الدوسثم يأتي PE Header وهو الجزء الذي يحتوي معلومات التشغيل للبرنامج
المعلومات الحقيقية التي يتم تنفيذها من قبل نظام التشغيل في البرامج التي بصيغة "PE" تقسم الى "Blocks" وتسمى "Sections"انواع هذة الــ "Sections" تماما مثل الملفات اللي في الهارد ديسك تلقى ملفات للقراءة فقط وملفات ممكن تعدل عليها "Writeable" وملفات قابلة للتنفيذ "Executable" هذة الـ "Sections" ايضا تصنف الى "Writable,data,Executable,Read only" وتفرز على هذا الاساس فالمعلومات التي للقرأءة فقط توضع في "Section" واحد وهكذا

كيف يتم تنفيذ البرنامج في الذاكرة
1- عند تشغيل البرنامج يقوم الـ"PE Loader" الخاص بنظام التشغيل بقراءة الـ "DOS Header" اذا كان هناك "PE Header" سخبره بذلك فيقوم الــ"PE Loader" بالقفز الى "PE Header" ليبدأ التنفيذ
2- الـ"PE Header" يعطي معلومات اساسية عن تنفيذ البرنامج و الـ "Sections" الموجودة في البرنامج ويوجها الــ"PE Loader" لتنفيذ الــ "Sections"
3- ينتقل الـ"PE Loader" الى الـ " Sections" على التوالي ويقوم بتخصيص عنواين لها في الذاكرة ليتم تنفيذها وايضا يعطي لها نفس الخواص في الذاكرة من حيث "Read only writeable "
4- ثم يقوم الـ "PE Loader" بتنفيذ ما يسمى بالـ "Import Table" الذي يحمل معلومات الملفات المساعدة لتنفيذ البرنامج اي ملفات الــ "DLL"

تعريف صيغ الملفات
امتداد الملف extension هو لاحقة تلحق بالملف لتوضيح ترميز محتويات الملف
يتكون الامتداد من الحروف بعد النقطة الأخيرة في اسم الملف

يستخدم الامتداد في تمييز أنواع الملفات وصيغتها الداخلية والبرامج التي تقوم بفتحها أو تشغيلها
مثال عام على اشهر انواع الصيغ المشهوره
exe للبرامج التنفيزيه // ملحوظه ( هناك بعض الصيغ الاخى التى تعتبر تنفيزيه ولكن exe تعتبر الشائعه بينهم )
dll لمكتبات الويندوز
pdf لبرامج النصوص
doc/ docx ميكروسوفت اوفيس ورد
xls/ xlsx ميكروسوفت اوفيس اكسيل
JPG / PNG / GIF لملفات الصور
MP3 / WAV لملفات الصوت
AVI /MKV /MP4 لملفات الفديو

تعريف لمكتبات الويندوز
DLL (Dynamic Link Library) هي عبارة عن مجموعة من البرامج الصغيرة (Small Programs) يتم استدعائها عند الحاجة اليها من البرامج الكبيرة او برامج التنفيذية EXE (Executable) عند عملها
فملف الـ DLL يحتوي على مجموعة من الرموز (Codes) من اجل اداء امر معين فعند حاجة الملف التنفيذي لملف الـ DLL فانه يقوم باستدعائه و استخدام الامر المناسب له من بين مجموعة الاوامر التي فيه
مثال على ذلك برنامج تنفيذي بحاجة الى مكان فارغ بالقرص الصلب (HardDisk) يقوم هذا البرنامج باستدعاء ملف الـ DLL الذي يحتوي على الاوامر اللازمة لذلك فيقوم ملف الـDLL باخبار البرنامج التنفيذي عن المكان الفارغ و هذا يجعل البرنامج التنفيذي اقل حجما و دون الحاجة الى كتابة الامر الذي اصلا موجود و بالتالي لن تحتاج جميع البرامج كتابة الاوامر التي تحتوي على معلومات عن الاماكن الفارغة
ايضا ملفات الـ DLL لا تحتاج الى ان تخزن نفسها في ذاكرة العشاوئي (Random Access Memory) مع البرنامج التنفيذي الذي يعمل و بالتالي توفير المساحة في الـ RAM
مثلا عند عمل على معالج النصوص وورد (Microsoft Word) و ارادة طباعة النص على الطابعة فانه يتم استدعاء ملف الـDLL الخاص بالطابعة دون الحاجة الى تخزينه بالـ RAM مع البرنامج التنفيذي و يتم استخدام الاوامر التي فيه لطباعة النص
تصنف ملفات الــ DLL الى قطاعات و كل قطاع يحتوي على الصفات الخاصة به مثلا قابل للكتابة فقط او للقراءة فقط او قابل للتنفيذ او غير قابل للتنفيذو الرموز(Codes) في ملفات الـ DLL يتم استخدامها باكثر من برنامج تنفيذي واحد و بالتالي يتم وجوده في مكان واحد في قطاع محدد بالقرص الصلب و لا داعي لوجوده في اكثر من مكان لاكثر من برنامج و بالتالي سهولة الوصول اليه
يحتوى ملف DLL على عنوان استيراد (Import Address) خاص به فحين حاجة الملف التنفيذي الى هذا الملف فانه يقوم بطلب هذا العنوان لاستدعاء الملف حيث يوجد جدول للعنوانين خاص لملفات الــ DLL يتم الحصول على العنواين منه و استدعاء الملفات المطلوبة
فملفات الــ DLL هي ملفات تنفيذية صغيرة لا يمكن ان تعمل وحدها وانما تعمل فقط من خلال برنامج تنفيذي كبير

العمليات Process
هو عباره عن برنامج قيد التشغيل تحت المعالجة ويتالف من العديد من ال program code والتى تعرف باسم text section ويحتوي على العداد program counter و النشاط الحالي current activity وايضا على محتويات سجل المعالج processor’s registers والملفات ومحتويات الذاكرة وغيرها

تكوين البروسيس داخل الزاكره

ال(stack ) تحتوي على البيانات المؤقته ( /parameters /return addresses/ local variables )
ال data فيحتوي على متغيرات عامة global variables
ال heep يحتوي على المتغيرات الديناميكية اى المساحه التى يشغلها البروسيس داخل الزاكره الموقته
ال text فيحتوي على كود البرنامجprogram code

مراحل تنفيذ البروسيس داخل الزاكره

new : تعني مرحلة انشاء الـ(process) وتحميله من القرص الصلب وتجهيزه لدخول على قائمة ready
ready : اي جاهز للمعالجة في هذه المرحلة الـ(process) ينتضر دوره لدخول على المعالج
running : الـ(process) في هذه المرحلة يدخل على المعالج
waiting : بعض الـ(process) التي تتطلب الحصول على مدخلات أو تخرج مخرجات تكون في قائمة waiting حيث ينتظر الحصول على مدخل ما أو أن يخرج مخرج ما
terminated : بعد أن ينهي الـ(process) عمله يتم القضاء علىه في هذه المرحلة
للاطلاع على العمليات التى تعمل فى الخفاء يمكن ذلك عن طريق
Alt + Ctrl + Del ثم Start Task Manager
او
Right Click Taskbar ثم Start Task Manager

او عن طريق برنامج Process Explorer

عند تشغيل ملف ما تظهر عمليه الملف مع عدد تعريفات له

نلاحظ اذا اردت اريد ان اعرف ما هى المكتبات التى يستدعيها هذا الملف
يمكن ذلك عن طريق
برنامج Process Explorer


المسارات Thread
التعليمات thread (أو thread of execution)
هو عبارة عن طريق يتبعها المعالج ال Processor لتنفيذ مهمة معين أو كود معين
فكل مسار تنفيذ واحد يكون تابع لبرنامج او كود أو مهمة واحدة
مسارات التنفيذ Threads وعلاقتها بال processes
كل Process يحتوي على ثريد Thread واحد او اكثر
(لان البروسس قد يحتوي على اكثر منThread )
ولكن الThread الواحد لا يكون تابع الا لprocess واحد فقط
كيف يحتوي ال processes على اكثر من thread؟؟؟
أي ان البروسس الواحد يقوم بعملية تنفيذ اكثر من اجراء في وقت واحد
كيفية تنفيذ العملياتprocesses حسب انواع ال threads
1- عمليات تتم في مسار تنفيذ واحد single threaded process
البرنامج الذى يؤدى مهمة معينة فى وقت معين يسمى برنامج Single Threaded Process

2- عمليات تتم في مسارات تنفيذ متعدده multithreaded process
البرنامج الذى يقوم بأداء أكثر من مهمة اى يحتوى على مسارات تنفيذ يسمى Multi ThraededProccess
نستفيد من مسارات التنفيذ Multi Threading فى أمكانية قيام البرنامج بأداء أكثر من مهمة فى وقت واحد

مثال بسيط لفهم كيفية تنفيذ العمليات حسب انواع الthreads
لو تحدثنا عن احد المستندات في برنامج ال Microsoft word ((عند تشغيل هذا البرنامج يعنى انه process )) ثم لو حاولنا القيام بعملية طباعة المستندprint والتدقيق الاملائي spill check واجراء عملية الحفظ savingفي وقت واحد
اولا :اذا كانت هذه العمليات لا يمكن ان تتم في نفس الوقت أي يجب ان ينتهي من الطباعه ثم بامكانه التدقيق وبعد الانتهاء منه يكون بامكانه الحفظ فهذا يعنى ان جميع هذه العمليات الثلاث تتم في thread واحد , وهذا هو معنى ان تكون عمليات تتم في مسار تنفيذ واحد single threaded process
ثانيا : اذا كانت هذه العمليات تتم في نفس الوقت فهذا يعنى ان البرنامج يحتوى على ثلاث مسارات تنفيذيه
ال thread الاولى للطباعه والثانيه للتدقيق الاملائي والثالثه للحفظ وهذا هو معنى ان تكون عمليات تتم في مسارات تنفيذيه متعدده multithreaded process

الى هنا ينتهى الدرس الاول بحمد الله
تحياتى وتقديرى للجميع
اتمنى الافاده للجميع
اخوكم ومحبكم دوما
مصطفى & black007

التعديل الأخير بواسطة المشرف: