بسم الله الرحمن الرحيم
حسنناً بالنسبه لطريقه التي اريدها هي المشاكل تعرض عن طريق برنامج المحادثه والدرس يوضع في المنتدي ويكون توقيت برنامج المحادثه 9:00 بتوقيت جرينتش تقريباً
*****************بالنسبه لطلب إعاده شرح جدول ال Gdt حسننأ انظر اسفل*********************
في البدايه ماهو النمط المحمي:
النمط المحمي نمط تعدد في اقسمام الذاكره كما حددها مبرمج النظام كل قسم يمتلك درجه حمايه مختلفه عن الأخر فقسم النظام له اعلي درجه حمايه حيث لا يستطيع اي برنامج يعمل التعدي في بيانات النظام من هنا اتت كلمه النمط المحمي حيث يتم حمايه نظام التشغيل الموجود في الذاكره ويتم حمايته بعد تحديد النظام للمعالج اي قسم هوه موجود فيه ويتم الولوج(اي جلب البيانات او تنفيذ شفره) عن طريق النظام الأتي محدد القسم:مكان البيانات او الشفره هذا خلاف النمط الحقيقي الذي يجلب البيانات عن طريق الشكل الأتي القسم:البيانات او الشفره .
ما متطلبت المرور إلي هذا النمط:
لكي يتم المرور إلي هذا النمط لابد من توافر شرطين 1-جدول التقسم او جدول المداخل او جدول المواصفات العام 2- البت pe في مسجل التحكم CR0 يساوي واحد معناه تفعيل النمط المحمي
قلت انه لابد من توافر جدول المداخل او جدول الاقسام ولكن ما هو:
جدول المداخل GDT جدول يتم حفظ فيه بيانات عن الأقسام او اقسام الذاكره من درجه حمايه وهل هذا القسم موجود في الذاكره الحقيقيه او الوهميه ويتم حفظ عدد الأقسام في هذه الذاكره
لم أفهم بعد:
حسننا ربما تساعدك هذه الصور علي تصور القصه وفهم نظام الحمايه المقصود
ماذا بعد عن هذا الجدول
هناك خصاص اخري ايضأ مثل تحديد طول القسم او المدخل ولكن كيفيه حساب الطول قد ذكرها الأخ حكيم قبلاً وايضاً تحديد كيفيه جلب الببيانات مثلأ إذ قمت بهذه التعليمه في الأسمبلي
pop eax
معناه اخرج 32 بت من المكدس *** حيث سيتم تحديد طريقةالبرنامج في جلب البيانات هل هي بطول 32 بت كما رأينا ام بطول 16 بت إذا قمت بجعلها 16 بت في قسم النظام وانت تستخدم نواه مصنوعه ب سي/سي++ فهاذا معناه خطأ لأان السي /سي++ تجلب البيانات بطول 32بت
وهذا ليس بالنسبه للبيانات فقط بل للكل اي شفره + بيانات فلابد الا تتواجد تعليه خاصه لمسجلات 32بت في هذا القسم
*****************************************
اظن انه قد حان الوقت للبدأ في كتابه جدولنا الخاص
اولاً كيف اخبر المعالج بمكان تواجد الجدول:
لكي تخبر المعالج بمكان تواجد الجدول لابد من تحديد قيمتين هما طول الجدول ومكانه
فمكان الجدول تحدد للمعالج مكان بدء البحث عن بيانات القسم الذي يحاول البرنامج الولوج
إليه + معلومات القسم الذي يعمل في البرنامج
سؤال بسيط هل سيستمر المعالج في البحث ربما يبحث في بيانات غير بيانات الجدول
تذكر طول الجدول و بدايته فما يحددان للمعالج متي سينهي البحث
سؤال اخر كيف سأخبر المعالج بهذه البيانات
عن طريق التعليمه Lgdt [gdt] حيث lgdt عنوان المعلومتين السابقتين
سؤال اخر ما هو تكوين بيانات القسم(اي المعلومات التي تحدد درجه حمايته ....إلخ)؟
حسننأ تتكون تلك المعلومات من الاتب
البتات من إلي : الوصف 0 15 : يتم تحديد فيها طول القسم كاملاً وطريق الحساب ذكرها الأخ حكيم 16 31 : يتم فيها تحديد وضع قيمها يحتاجه المعالج عن التحويل من العنوان الخطي إلي محدد القسم:مكان البيانات وذالك لان نواه السي بلس بلس او السي تكتب العنوان الخطي نضعها بالقيمه صفر حتي لا شير إلي بيانات اخري 32 39 :نفس السابق 40 44 :نوع القسم طولها اربع بيتات كل بت يمتلك صلاحيه معينه مدرجه بلأسفل اولاً صلاحيات اقسام البيانات 0000 تعني انه للقرأه فقط 0001 للقرأه ويمكن الوصول إلي معلوماته 0010 للقرأه والكتابه 0011 للقرأه والكتابه ويمكن الوصول إليه 0100 للقرأه فقط 0101للقرأه ويمكن الوصول 0110 قرأه وكتابه 0111 للقرأه والكتابه ويمكن الوصول اقسام الشيفره 1000 للتنفيذ فقط 1001 للتنفيذ فقط ويمكن الوصول 1010 للتنفيذ والقرأه 1011 للتنفيذ والقرأه وإمكانيه الوصول 44 44 : قسم نظام 1=نعم 0 =لا وفي حالتنا سنضع نعم 45 46 :درجه الحمايه 0 تعني انها درجه حمايه للنظام 1 تعني درجه حمايه لخدمات النظام 2 " " " " " 3 درجه حمايه البرامج 47 47 :هل القسم موجود في الذاكره ام انه في ذاكره وهميه ربما تكون علي القرص الصلب 1 =نعم 48 51:اخر رقم في الطول (اي طول القسم) 52 52 :محجوز لمعالج 64 بت 53 53 : " " " " 54 54: طريقه جلب البيانات 1 تعني بطريقه 32بت و 0 تعني 16 55 55 : البت الذي يحدد طريقه حساب الحجم 56 63 :نفس البيتات من 16 إلي 31
هكذا قد عرفنا مكونات بيانات القسم
سؤال كيف اكتب الجدول الان
هنا الان مثال لطريقه كتابه الجدول وحاول مقارنته مع السابق
dw 0,0,0,0 db 0xFF,0xFF,0,0,0,10011011b,11011111b;limit(0:15),limit(0:15),base(16:31),base(32:39),base(56:63),47 46 45 44 43 42 41 40,55,54,53,52,51,50,49,48,base(65:63) قمت بوضع ترتيب البيتات حتي تكون مثله
قمت بإعداد جدولي وتحميل كيف امر إلي النمط المحمي
كما قلنا من قبل عن طريق جعل البت pe = 1 اي تفيعل النمط المحمي
مثال mov eax,CR0 or al,1 mov CR0,eax
كيف اشغل النواه(كيف احسب محدد القسم)
اولاً احضر رقم ترتيب المدخل (مثلا انت في جدولك كتبت 10 مداخل ونواتك في المدخل رقم 10 فالرقم 10 هو المقصود) ثم حول للبيناري = 1010 اضف من جه اليمين 0 إضافيه ثم احضر درجه افضليه القسم وحولها للبيناري = 00 اضفها لليمين في النهايه البيتات = 1010000 هكذا هي بيتات
محدد القسم بالتحويل إلي الهكس = 0x50
نرجوا ان نكون قد وفينا هذه المره في الشرح اي استفسار :lol:
my new site click here
