+ الرد على الموضوع
صفحة 1 من 2 1 2 الأخيرةالأخيرة
النتائج 1 إلى 5 من 7
  1. #1
    استاذ مشهور جدا is on a distinguished road
    تاريخ التسجيل
    06 / 05 / 2006
    الدولة
    بلد الإسلام
    المشاركات
    47
    معدل تقييم المستوى
    281

    Icon1 استاذ مشهور جدا .. عندك فيرس لا يتعرف عليه اي برنامج حماية …تعالي و تعلم كيف تصنع برنامج حماية

    بسم الله الرحمن الرحيم
    أخي الكريم / استاذ مشهور جدا
    هل مر عليك يوم و وجدت فيه فيرس بالصدفة في جهازك و برنامج الحماية عندك لا يتعرف عليه ؟
    أعتقد أن أغلبنا قد واجه تلك المشكلة الخطيرة أو علي الأقل يوجد أحد من المعارف أو الأقارب قد صادفته تلك المشكلة.
    و ان كان كذلك ... إذن .. فما الحل ان وجد ؟
    اعلم ان موضوع مقاومة الفايروسات موضوع طويل ومعقد ومتجدد بإستمرار ولكن الأساسيات باقية إلى اليوم
    القاعدة التي تبنى عليها برامج مكافحة الفايروسات هي:تحليل الفايروس ثم إصدار توقيع ثم إصطيادة
    هذه الثلاث نقاط الاساسية هي موضوعي اليوم , الأمثلة في هذا الموضوع تتطلب برامج هكس
    وديسمبلي وسنأخذ olly + مترجم لغة سي وسنأخذ الفيجول سي. .. و تلك البرامج موجودة عندي لمن يطلبها.
    و الجدير بالذكر ان هناك أكثر من نوع من الفيروسات تختلف باختلاف طريقة عملها فمثلا هناك
    فايروســــات تعمــل عـن طريــــق قاعـــدة بيانــات الريجستـــري
    -
    فـايروســـات تعمــل عــــن طــريــــق ملـفـــات التــأسيـــس ini
    -
    فايروسات تعمل عن طريق الملفــات الدفعيــة للنظام دوس bat
    -
    فايروسات تعمــل عن طريـــق قائمــة البرامــج Start Menu
    -
    فايروسات تعمل عــن طريق حقن الملفات viruses injecting
    -
    فايروسات تعمل عن طريق قطاع الإقلاع BOOT SECTOR

    و للتحدث عن الفيروسات لن يسعني الوقت و المكان هنا للتفصيل و نعود لاهم نقطة سنتعرف من خلالها علي الفيرس و هي كيفية كتابة برنامج Anti Virus نريد توزيعه على معارفنا و اقاربنا ليتم حذف الفيروس
    من أجهزتهم .
    سنأخذ هذا المثال على الاساسيات
    والملف التنفيذي محل التجربة هذا .exe عادي جدا و خالي من اي كود فيروس سنفترض انه ملف الفايروس الذي وجدناه بعد مراقبه النظام. و يمكن تحميلة من هنا

    Download : vir.zip

    بعد ذلك سنبدأ بإصدار توقيع لهذا الفايروس ! ولكي نتمكن من إصدار توقيع ليتم معرفه ملف الفايروس
    به يجب ان نكون ملمين بطريقه بناء الملفات التنفيذية وطريقة تقسيمها ولذلك سنبدأ بدراسة هذه الامور
    -
    اولاً: دراسه لمقدمه الملف التنفيذ
    إن اغلب الملفات في مختلف الأنظمة تكون مقسمه بهذا الشكل ( مقدمة الملف ثم محتواه)
    المقدمه دائما تحتوي على تفاصيل يعتمد عليها الملف ويعتمد عليها النظام في قرائة الملف فمثلاً ملف
    الصور او اي صوره تحتوي في مقدمتها على معلومات مهمه مثل الالوان المستخدمه ونوع الصوره والاحجام
    وهذه المعلومات تكون مهمه لأي برنامج يقرأ هذه الصوره , وبنفس الطريقه تحتوي الملفات التنفيذيه
    على مقدمه بها معلومات مهمه مثل عنوان بدايه تنفيذ البرنامج وعنوان قسم الكود والبيانات والمصادر
    لو بدئنا بدراسه هذه المقدمه لوجدنا انها تنقسم إلى ثلاث اقسام وهي
    1- مقدمه DOS ثم 2- مقدمه PE ثم وفي النهايه sections او الاقسام

    1- مقدمه DOS
    لمشاهدة هذه المقدمه من خلال برنامج olly ومن القائمة veiw إختر file ثم تجول في جهازك
    وإختر مثالنا virus.exe ,, سيظهر لك محتوى الملف بصيغه الهكس , وإذا اردنا عرض
    الملف بصيغه المقدمات إضغط بالزر الأيمن للماوس وإختر Special ثم PE header كما تشاهد في الصورة



    بعد ان تغير طريقة العرض إلى PE header ستظهر لك عند العنوان صفر مقدمه الدوس
    بمعنى ان اول مقدمه عند اول بايت في الملف تمثل مقدمه الدوس كما تشاهد



    الآن سنكتب معنى كل بايت في مقدمه الدوس مع ملاحظة ان كل الارقام ستكون بالنظام الست عشري hex
    اول بايت في اي ملف تنفيذي
    00: MZ
    الحرفين M و Z تمثلان توقيع الملف التنفيذي وتم إضافه للمقدمه لشغله مهمه وهي ان الملفات التنفيذيه لها
    انواع كثيرة جدا مثل ملفات dll وocx و sys و vxd و scr وcpl و.....
    لكثر انواع الملفات التنفيذية تم إضافه توقيع للملف ليعرف النظام انه ملف تنفيذي
    بعد ذلك تبدأ بقيه البيانات التي في الحقيقة ليست لها اهميه في نظام وندوز اهميتها كانت ايام دوس
    02: عدد البايتات في آخر بلوك البلوك مكون من 512 بايت DOS_PartPag
    04: مجموع عدد البلوكات في الملف التنفيذي DOS_PageCnt
    ملاحظه القيمه الأولى ضرب القيمه الثانيه يساوي حجم الملف التنفيذي

    06: عدد مداخل الكتل الذاكريه المتحركه أو المتنقله DOS_ReloCnt
    08: حجم ترويسه الفقره DOS_HdrSize
    0A: الحد الأدنى من الفقرات في الملف التنفيذي DOS_MinMem
    0C: الحد الأعلى من الفقرات في الملف التنفيذي DOS_MaxMem
    0E: قيمه المكدس SS ويمثل DOS_ReloSS
    10:قيمه دليل المكدس SP ويمثل DOS_ExeSP
    12: مدقق المقارنه DOS_ChkSum
    14: قيمه دليل الكود CS:IP ويمثل DOS_ExeIP
    16: بدابه عناوين الكتل الذاكريه ويمثل قسم الكود DOS_ReloCS
    18: علامه تدل على بدايه كتله ذاكريه DOS_TablOff
    وهذا البايت قد يكون مفيد لتحديد الكتله الذاكريه التاليه وهي مقدمه pe الخاصه بنظام وندوز
    1A: قيمه هذه الكلمه دائما صفر لتدل على بدايه البرنامج من الداله الرئيسيه DOS_Overlay

    وبعد هذه المقدمه يجب ان تعرف ان الفايروسات نادرا ماتستخدم هذه المقدمه لان اغلب المعلومات
    بها لايستخدمها النظام.

    نكمل وندخل اكثر في الموضوع ,, قلنا ان البايت 18 بالهكس يمثل الكتله الذاكريه التاليه
    خلونا نستخدمه لنحصل على عنوان كتله pe لو لاحظت ان البايت 18 يساوي القيمه 40
    توجه للسطر 40 ( ملاحظة كل الارقام في هذا الموضوع بالصيغه الهكس )
    ستجد عند العنوان 40 رقم آخر هو C8 ويمثل عنوان بدايه pe توجه للإزاحه C8 ولاحظ مقدمه pe



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

    00:علامه بدايه توقيع البرنامج مكونه من 4 بايت PE signature
    04:نوع الآله التي يعمل عليها البرنامج Machine وتدل على نوع المعالج مثل 386
    06: عدد الأقسام في البرنامج قسم الكود وقسم البيانات وهكذا NumberOfSections
    08: وقت إنشاء البرنامج TimeDateStamp
    0C: مؤشر إلى جدول الرموز الرموز تستخدم في التنقيح ولا تستخدم في البرنامج النهائي PointerToSymbolTable
    10: عدد الرموز NumberOfSymbols
    14: حجم ترويسة (PE signature) الملف غير متضمنه حجم الأقسام وهي متساويه في كل البرامج SizeOfOptionalHeader
    16:خصائص البرنامج Characteristics مثل برنامج نظام او مكتبه ربط او....انواع الملفات التنفيذية
    18:نوع ترويسة الملف MagicNumber
    1A:رقم إصدار الرابط النهائي MajorLinkerVersion الرابط هو احد اقسام مترجم لغه البرمجه
    1B:رقم إصدار الرابط الأولي أو التجريبي يساوي 0 MinorLinkerVersion
    1C:حجم قسم الكود في البرنامج التنفيذي SizeOfCode
    20: حجم قسم البيانات للبرنامج SizeOfInitializedData
    ملاحظه بعض المترجمات تعتبر كل الأقسام بيانات وتكون القيمه هنا الحجم الوهمي لكل الأقسام
    بعضها لا يعتبر قسم الكود بيانات وتكون القيمه هنا الحجم الوهمي لكل الأقسام عدى قسم الكود
    24:حجم قسم البيانات الغير متغير SizeOfUninitializedData
    28: عنوان بدايه تنفيذ البرنامج AddressOfEntryPoint
    2C:عنوان بدايه قسم الكود BaseOfCode
    30: عنوان بدايه قسم البيانات BaseOfData
    34: عنوان البرنامج في الذاكره ImageBase
    ملاحظه بعد ما يشتغل البرنامج وينقل إلى الذاكره كل العنواين مثل عنوان بدايه البرنامج وعناوين الأقسام
    يضاف إليها عناون البرنامج في الذاكره وهو عنوان وهمي


    38: يحتوي إزاحه أول قسم في البرنامج وعاده يكون قسم الكود والفائده ترتيب أقسام البرنامج SectionAlignment
    3C: يحتوي على تنسيق الأقسام والفرق بين حجم القسم الفعلي والوهمي ولذلك سيتم شرحها مع الأقسام FileAlignment
    3E:إصدار نظام التشغيل النهائي MajorOSVersion
    40: إصدار نظام التشغيل الأولي MinorOSVersion
    ملاحظه أي إصدار أولي أو تجريبي يساوي صفر
    42: إصدار العنوان الوهمي للبرنامج راجع الإزاحه 34 وغالبا يساوي إصدار نظام التشغيل MajorImageVersion
    44: الإصدار الأولي للعنوان يساوي 0 MinorImageVersion
    46: إصدار النظام الفرعي النهائي يساوي إصدار نظام التشغيل MajorSubsystemVersion
    48: الإصدار الأولي للنظام الفرعي يساوي 0 MinorSubsystemVersion
    4A: محجوز للنظام
    4E:حجم عنوان البرنامج يساوي العنوان الفعلي لآخر قسم +حجم القسم الفعلي SizeOfImage
    52: حجم كل الترويسات بمعنى أول مايبدأ شفره البرنامج بعد الترويسه SizeOfHeaders
    56:مدقق المقارنه CheckSum وهو عباره عن إعطاء الملف توقيع لا يشبه اي ملف آخر , سندخل في هذا الموضع عل نهاية الموضوع.

    5A: خصائص إظهار البرنامج برنامج رسومي أو كونسل مثل الدوس ولكن 32 بت Subsystem
    5C: خصائص ربط المكاتب بالثريد أو العمليه DLLCharacteristics
    5E:الحجم الإفتراضي للمكدس وهو دائما يساوي واحد ميجابايت SizeOfStackReserve

    62: الحجم الحالي للمكدس SizeOfStackCommit
    66: الحجم الإفتراضي للكومه وهو دائما يساوي واحد ميجا SizeOfHeapReserve
    6A: الحجم الحالي للكومه SizeOfHeapCommit
    ملاحظه كل الأربع الأحجام للمكدس والكومه متشابهه في كل البرامج إذا لم يغيرها المبرمج نفسه

    6E: أعلام المشغل البرنامج LoaderFlags
    72:القيمه الإفتراضيه لعناوين وأحجام الأقسام الفعليه في كل المترجمات يساوي 16 أي 10 بالهيكس NumberOfRvaAndSizes
    وهو أن لكل قسم عنوان فعلي واحد وحجم فعلي واحد ... عدد الأقسام ضرب 2 قد يكون عدد الأقسام
    أكبر ... ههههه ليست مشكلة ... إعلم انها ليست كلها فعليه وهذه الاساليب متبعه في برامج التشفير

    76: عنوان جدول الدوال المصدره من الملف Export Table address
    7A: حجم جدول الدول المصدره Export Table address
    7E: عنوان جدول الدوال المستورده للملف Import Table address
    82: حجم جدول الدوال المستورده Import Table size
    86: عنوان جدول مصادر الملف الأيقونات والنوافذ وغيرها Resource Table address
    في مثالي تجده صفر لأنني لم أستخدم اي ايقونه او نافذه او صوره
    8A: حجم جدول مصادر الملف Resource Table size

    8E: عنوان جدول الإستثناءات والأخطاء في البرنامج Exception Table address
    92: حجم جدول الإستثناءات Exception Table size
    96: عنوان جدول شهادة البرنامج Certificate File pointer
    9A: حجم جدول شهادة البرنامج Certificate Table size
    هذه الجداول لا اعرف متى تكون مستخدمه ربما سأعرفها ان شاء الله في المستقبل
    إلا ان القيمه الإفتراضيه لهذه الجداول 0 واعتقد انها ستستخدم مثل طريقه
    شهادة الوثوقيه للمواقع

    9E: عنوان جدول الكتل الذاكريه المتنقله Relocation Table address
    A2: حجم جدول الكتل Relocation Table size
    الكتل المتنقله عباره عن طريقه لتخزين كود تنفيذي في قسم البيانات
    ظهر استخدامه اول مره في برامج الضغط والحزم ثم في برامج التشفير والآن في الفايروسات

    A6: عنوان بيانات تصحيح البرنامج غير مستخدم في البرنامج النهائي Debug Data address
    AA: حجم البيانات Debug Data size
    AE: عنوان بيانات تصميم وبنيه البرنامج Architecture Data address
    B2: حجم البيانات Architecture Data size
    B6: عنوان جدول المؤشرات العامه Global Ptr address
    BA: حجم الجدول
    BE: محجوز للنظام
    C2: عنوان مخزن خيوط او ثريد البرنامج المحليه TLS Table address
    C6: حجم الجدول TLS Table size
    CA: عنوان جدول تشكيله البرنامج Load Config Table address
    CE: حجم الجدول Load Config Table size
    D2: عنوان تحديد جدول إستيراد الدوال Bound Import Table address
    D6: حجم الجدول Bound Import Table size
    DA: جدول العناوين لعناوين الإستيراد Import Address Table address
    DE: حجم الجدول Import Address Table size
    E2: جدول الإنتظام لإستيراد الدوال Delay Import Descriptor address
    E6: حجم الجدول Delay Import Descriptor size
    EA: عناون بدايه ملفات التشغيل لتقنيه الكوم COM+ Runtime Header address
    EE: حجم جدول الإستيراد Import Address Table size
    F2: محجوز للنظام Reserved
    F4: محجوز للنظام Reserved
    -

    بعد ذلك يبدأ تنسيق الأقسام في البرنامج وكلها نفس القاعده
    0-7: إسم القسم وحجمه 8 بايتات SECTION
    0B: الحجم الفعلي للقسم VirtualSize
    0F: العنوان الفعلي للقسم VirtualAddress
    13: الحجم الوهمي للقسم SizeOfRawData
    17:العنوان الوهمي للقسم PointerToRawData
    القصد منه الفصل بين الأقسام ... مثلا .. لو فتحت أي برنامج
    بمحرر هكس من بدايه البرنامج ستلاحظ قسم الكود وبعده فراغ وهي الاصفار
    وبعدين القسم الأول من البيانات وبعده فراغ هذه الفراغات للتقسيم
    ولهذا فإن الحجم الفعلي للقسم يساوي القسم بدون الفراغ والحجم الوهمي يساوي القسم زائد الفراغ

    1B:مؤشر إلى عنوان التحريك للقسم PointerToRelocations
    1F:مؤشر إلى رقم السطر PointerToLineNumbers
    23:رقم النقل للقسم NumberOfRelocations
    25:عدد الأسطر NumberOfLineNumbers
    هذه المعلومات خاصه للتبديل بين الأقسام
    القيمه الإفتراضيه صفر

    27:خصائص القسم Characteristics قسم شفره أو بيانات أو قسم متحرك و للكتابه أو غيره
    وهكذا مع كل الأقسام


    يتبع ان شاء الله



     
  2. #2
    استاذ مشهور جدا is on a distinguished road
    تاريخ التسجيل
    06 / 05 / 2006
    الدولة
    بلد الإسلام
    المشاركات
    47
    معدل تقييم المستوى
    281

    Icon1 مشاركة: استاذ مشهور جدا .. عندك فيرس لا يتعرف عليه اي برنامج حماية …تعالي و تعلم كيف تصنع برنامج حماية

    تابع الشرح

    وبعد الإنتهاء من المقدمه سنبدأ في النوع الأول من التواقيع لإصطياد الفايروسات وهو توقع pe
    اسهل برامج antivirus تعتمد على حفظ قيم كل هذه المقدمات ويتم كتابة برنامج لمقارنه هذه
    القيم في كل الملفات التنفيذية إذا تم إيجاد قيم متشابه يتم عرضه على انه فايروس
    -
    كتابه كود يقارن الثلاث مقدمات بسيط جدا وبالتحديد في لغه السي توجد تعاريف تدل على كل
    مقدمه وهي المتغيرات التاليه

    مجموعات متغيرات تمثل مقدمه dos
    PIMAGE_DOS_HEADER DosHeader;
    مجموعة متغيرات تمثل مقدمه pe
    PIMAGE_NT_HEADERS PEHeader;
    مجموعة متغيرات تمثل مقدمه Section
    PIMAGE_SECTION_HEADER Section;

    بناخذهم مثال خطوة بخطوة , اولا استخدام PIMAGE_DOS_HEADER DosHeader
    ابدأ وانسخ الفايروس الخاص بنا virus.exe إلى الدرايفر C بمعنى C:\virus.exe
    وبعد ذلك نريد حفظ توقيع مقدمه dos للفايروس بمعنى حفظ قيم المقدمه بالرمز hex
    من خلال olly إنسخ اول 28 بايت وتدل على مقدمه الدوس وبعد ذلك أحفظهم في متغير بلغة السي
    بهذا الشكل



    بهذه الطريقة نكون عرفنا توقيع لمقدمه dos للفايروس وطريقه التشييك على الملفات التنفيذية بسيطة
    هذا كود لداله scan virus



    بهذا الكود نكون قد تحققنا من خلال مقدمه الدوس ان الملف virus.exe هو الفايروس الذي نبحث عنه او لا


    2- إستخدام مقدمه pe لفحص الفايروس PIMAGE_NT_HEADERS
    بنفس الفكره السابقه نحفظ قيمة hex الكامله لمقدمه pe للفايروس ونخزنها في برنامج antivirus بإسم PEHdrSignature
    لاحظ في هذا المثال كيف سنقوم بإستخراج بدايه بيانات pe للملف التنفيذي من خلال معلومات مخزنه في مقدمه dos
    لو راجعت بدايه الموضوع ستتذكر هذا السطر
    18: علامه تدل على بدايه كتله ذاكريه DOS_TablOff وفي مثالنا الكتله الثانيه هي pe
    ويرمز لهذا البايت في لغه السي DosHeader->e_lfanew وهو متغير من ضمن متغيرات DosHeader

    الكود التالي لفحص مقدمات pe و dos



    وبعد هذه الامثله ما رايك بموضوع كتابه anti virus اكيد بتكون شغلانه سهله ؟!

    المهم بعد تقنيات البحث عبر المقدمات وهي التقنيات الاساسية في برامج الانتي فايروس

    توجد طرق وأساليب كثيرة وهي ما يميز برنامج مقاومه عن آخر فمثلا توجد طرق البحث العشوائي
    وهذا النوع جيد فمثلا يتم إختيار 100 بايت كتوقيع هذه ال 100 بايت موزعه في كل البرنامج
    فمثلا بايت في سطر 1 وبايت في سطر 14 وبايت 25 وبايت 5000 وبايت في نهايه الملف
    هذه الطريقه فائدتها ان البحث عن الفايروسات يكون اسرع بكثير من بحث المقدمات
    شوف هذا المثال





    وبعد هذه الأكواد والامثله نكون قد وضحنا مفهوم التواقيع وطريقة برمجة الانتي فايروس
    و ان شاء الله سألحق دورة متخصصة بالتفصيل الغير ممل و لكنها ستكون تفاصيل أكثر تعقيدا و لكنها مهمه جدا .

    شكرا للجميع وبالتوفيق ان شاء الله



     
  3. #3
    المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute المودة has a reputation beyond repute الصورة الرمزية المودة
    تاريخ التسجيل
    17 / 08 / 2004
    العمر
    33
    المشاركات
    20,806
    معدل تقييم المستوى
    26172

    افتراضي مشاركة: استاذ مشهور جدا .. عندك فيرس لا يتعرف عليه اي برنامج حماية …تعالي و تعلم كيف تصنع برنامج حماية

    شكراً لك اخي الكريم ... بارك الله فيك ... تحياتي .

     
  4. #4
    استاذ مشهور جدا is on a distinguished road
    تاريخ التسجيل
    06 / 05 / 2006
    الدولة
    بلد الإسلام
    المشاركات
    47
    معدل تقييم المستوى
    281

    افتراضي مشاركة: استاذ مشهور جدا .. عندك فيرس لا يتعرف عليه اي برنامج حماية …تعالي و تعلم كيف تصنع برنامج حماية

    بارك الله فيك أخي الكريم / [you]
    و شكرا لمرورك الطيب و جزاكم الله عنا خيرا



     
  5. #5
    صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute صناع الحياة has a reputation beyond repute الصورة الرمزية صناع الحياة
    تاريخ التسجيل
    09 / 06 / 2005
    الدولة
    مصر
    العمر
    52
    المشاركات
    21,349
    معدل تقييم المستوى
    26561

    افتراضي مشاركة: استاذ مشهور جدا .. عندك فيرس لا يتعرف عليه اي برنامج حماية …تعالي و تعلم كيف تصنع برنامج حماية

    [grade="00008B FF6347 008000 4B0082"]جزاك الله كل الخير أخى الكريم على مجهودك الرائع
    تقبل شكرى وتقديرى[/grade]

     

 
+ الرد على الموضوع
صفحة 1 من 2 1 2 الأخيرةالأخيرة

معلومات الموضوع

الأعضاء الذين يشاهدون هذا الموضوع

الذين يشاهدون الموضوع الآن: 1 (0 من الأعضاء و 1 زائر)

     

مواقع النشر (المفضلة)

مواقع النشر (المفضلة)

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك