السلام عليكم
كيف يستطيع نظام التشغيل ويندوز منع برنامج ما
من تغيير قيمة في الذاكرة عندما تكون خارج نظاق البرنامج؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
أرجو عدم نقل الموضوع إلى قسم الأسمبلي لأنني اتحدث عن المؤشرات في السي.
السلام عليكم
كيف يستطيع نظام التشغيل ويندوز منع برنامج ما
من تغيير قيمة في الذاكرة عندما تكون خارج نظاق البرنامج؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
أرجو عدم نقل الموضوع إلى قسم الأسمبلي لأنني اتحدث عن المؤشرات في السي.
تم تعديل هذه المشاركة بواسطة mandareka في 24 يناير 2009 في 17:39
دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب
حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .
الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية
الامة الاسلامية تحتاج لاحداث تسحقها سحقا وتمعسها معسا لتفكر تفكيرا جماعيا بالتغير لان وحدة المشاعر لوحدها لاتكفي وهذة الاحداث كلها خير
عادة الذاكرة الافتراضية بداية من المدى 0x80000000 الى 0xFFFFFFFF محجوزة للنظام (اتكلم عن NT) ولا يمكن لبرنامج يعمل في User-mode مساس البيانات في هذه المنطقة .
عند محاولة القراءة او الكتابة من هذه المنطقة يتم احداث استثناء Access Violation والذي يتم معالجته على اكثر من مرحلة معقدة ثم تسليم الاستثناء للـException Handler الخاص بالبرنامج .
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
مشكور اخي الكريم
ولكن الذي لم افهمه
كيف يقوم نظام التشغيل بذلك
انا الذي اعرفه ان مهمة نظام التشغيل هي تحميل البرنامج في الذاكرة
ومن ثم يقوم بعمل قفز JMP إلى عنوان الكود في الذاكرة
وبعد ذلك كيف يقوم نظام التشغيل بالتحقق من موقع الذاكرة المراد التعامل معه
هل يقوم بأي تعديل على كود البرنامج ليتحقق من وجود استئناءات
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب
حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .
الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية
الامة الاسلامية تحتاج لاحداث تسحقها سحقا وتمعسها معسا لتفكر تفكيرا جماعيا بالتغير لان وحدة المشاعر لوحدها لاتكفي وهذة الاحداث كلها خير
ليس كذلك , يتم احداث الاشتثناء عن طريق الـHardware نفسه وليس عن طريق بحث نظام التشغيل داخل الكود .
اذا كانت الـPAGE التي سيتم القراءة منها محجوزة للنظام فانه تلقائيا يتم احداث استثناء ونقل التنفيذ الى الـException Handler .
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
مشكور جدا
ولكن السؤال الذي يطرح نفسه
هو : كيف يميز الهادروير بين اوامر النظام وأوامر أي برنامج عادي
تحياتي العطرة
تم تعديل هذه المشاركة بواسطة mandareka في 24 يناير 2009 في 23:44
دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب
حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .
الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية
الامة الاسلامية تحتاج لاحداث تسحقها سحقا وتمعسها معسا لتفكر تفكيرا جماعيا بالتغير لان وحدة المشاعر لوحدها لاتكفي وهذة الاحداث كلها خير
عند التعامل مع الذاكرة بشكل بسيط كسطر الاسمبلي التالي مثلا :
__asm mov eax, dword ptr [0xffff7000];
الذي نتوقعه هو قراءة ما بالعنوان السابق وتخزينه في المسجل Eax مباشرة لكن هذا لا يحدث في الأنظمة التي تدعم الـVirtualMemory مثل NT/LINUX .
ما يحدث هو ان المعالج يبحث اولا في جداول خاصة بتوزيع الـMEMORY PAGES ويتم عمل بعض الفحوصات للتأكد من اتمام العملية دون مشاكل .. اذا حدث ولم يتم التوافق فان المعالج يقوم باحداث استثناء .. احد هذه الفحوصات هي الـPrivilege Level ويتم فيه التأكد هل يمتلك البروسسور الحالي الامتيازات اللازمة للتعامل مع هذا الجزء من الذاكرة ام لا .
اثناء عمل Thread في الـUser-mode او ما يسمى بأRing3 لا يمتلك البروسيسور الـPrivilege اللازمة للقراءة او الكتابة من الذاكرة المحجوزة للنظام .
هذا باختصار جداً فالموضوع عميق .. قم بقراءة الـIntel/AMD Architectures Guide لتستزيد في هذه الامور .
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
الموضوع عميق وشيق
ولكن يبقى لدي عدة تساؤلات
اقتباسعند التعامل مع الذاكرة بشكل بسيط كسطر الاسمبلي التالي مثلا :كود__asm mov eax, dword ptr [0xffff7000];
وهل توجد طريقة اخرى للتعامل مع الذاكرة؟؟
اقتباسما يحدث هو ان المعالج يبحث اولا في جداول خاصة بتوزيع الـMEMORY PAGES ويتم عمل بعض الفحوصات للتأكد من اتمام العملية دون مشاكل .. اذا حدث ولم يتم التوافق فان المعالج يقوم باحداث استثناء .. احد هذه الفحوصات هي الـPrivilege Level ويتم فيه التأكد هل يمتلك البروسسور الحالي الامتيازات اللازمة للتعامل مع هذا الجزء من الذاكرة ام لا .
أظن ان الأنظمة التي تعمل في الوضع الحقيقي تكون اسرع بكثير لأن المعالج لا يتكلف بالبحث في هذه الجدوال؟؟
وأخير اتقدم لك بالشكر على هذا التعاون .
تم تعديل هذه المشاركة بواسطة mandareka في 25 يناير 2009 في 02:01
دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب
حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .
الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية
الامة الاسلامية تحتاج لاحداث تسحقها سحقا وتمعسها معسا لتفكر تفكيرا جماعيا بالتغير لان وحدة المشاعر لوحدها لاتكفي وهذة الاحداث كلها خير
اقتباسأظن ان الأنظمة التي تعمل في الوضع الحقيقي تكون اسرع بكثير لأن المعالج لا يتكلف بالبحث في هذه الجدوال؟؟
هذا الوقت يمكن تجاهله .. كما ان اهمية وميزة الـVM لا يمكن الاستغناء عنها .. ولا يوجد نظام عملي لا يستخدم نظام الـVM .
اقتباسوهل توجد طريقة اخرى للتعامل مع الذاكرة؟؟
تختلف التعليمة فقط كتالي مثلا :
__asm cmp eax, dword ptr [0xffff7000];
اختلف شكل الوصول الى الذاكرة فقط .
تم تعديل هذه المشاركة بواسطة GamingMasteR في 25 يناير 2009 في 19:11
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
مشكور جدا على تعاونك اخي الكريم
ما قصرت والله
اطيب امنياتي
أخوك محمد من فلسطين
تم تعديل هذه المشاركة بواسطة mandareka في 25 يناير 2009 في 03:03
دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب
حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .
الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية
الامة الاسلامية تحتاج لاحداث تسحقها سحقا وتمعسها معسا لتفكر تفكيرا جماعيا بالتغير لان وحدة المشاعر لوحدها لاتكفي وهذة الاحداث كلها خير
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…