الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]سؤال حول الوصول الي مقاطعات البيوس من خلال الوندوز اكس بي

بدأه aziz nor في 17 يوليو 2008 · 15 رد · 4,219 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اريد ان اطرح سؤال و هو

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

الي الادوات والمقطعات لاني سمعت ان الوندوز لا يسمح بدالك

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

لاني اعرف تاثير تعليمات الاسمبلي وخطورتها لدا انا متحفظ قليلا علي التعامل المباشر مع المترجمات

وادا كان الجواب بعدم فدرة التعامل المباشر ماهي الحلول المقترحة للوصول الي المقاطعات في النظام المحمي

وشكرا

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#2
اقتباس
وادا كان الجواب بعدم فدرة التعامل المباشر ماهي الحلول المقترحة للوصول الي المقاطعات في النظام المحمي

تستطيع الوصول إلى مقاطعات البيوس من Windows و لكن بعد سطور من التعليمات حتى تنفذ ماتريد .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#3

بارك الله فيك اخي سيف

لكن لو تفضلت مع مزيد من الشرح لانك لم تعطيني الطريقة للوصول الي المقطعات

والحقيقة هدا ماكنت ابحث عنه

يعني هل يوجد اكواد خاصة

ام الامر متعلق بالمترجم المستخدم

ولك مني الشكر الجزيل

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#4

هناك دوال خاصة أنا لا أعرفها جرب البحث في MSDN تعطيك الصلاحيات للوصول إلى العتاد و لا أظن أنه يتعلق بالمترجم.

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#5

في الـNt based systems مثل Xp مثلاً لا يمكنك استعمال اغلب التعليمات الخاصة بالتعامل مع العتاد من مستوى المستخدم ,, تحتاج الوصول الى مستوى النظام او العمل تحت نظام 16بت .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6

بسم الله الرحمن الرحيم

شكرا شكرا شكرا للاخوة علي المشاركة القيمة

لكن السؤال يبقي مطروحا ماهي المقطعات التي اصبحت محظورة علي

والحقيقة لكي اكون دقيق فس سؤالي

انا اريد استعمال الاسمبلي مع السي لبرمجة العتاد مثل كارت الصوت والفيديو وغيرها

لكن فكرتي هي ان تكون هده الدريفرات مستقلة عن بنية النظام

لاني من المناهضين لفكرة البرمجة علي نظام واحد فقط

فان استعمل البرمجة بسي و سي بلس بلس لانها تتميز بقابلية النقل من منصة الي اخري

وكدالك ابرمج بمكتبة

gtk+

لانها قابلة لنقل من منصة الي اخري كدالك

لكن العيب في هده المكتبات انها تعاني في البطء مع التعامل المباشر مع الهارد وير هدا اصلا ادا كان نظام التشغيل يسمح لها بالوصول اصلا

وسؤال اخر حيرني هو

انه من خلال اطلاعي وبحثي في المنتدي عرفت ان الانظمة المبنية تحت 32 بت

تكون تحت مسمى النظام المحمي وهي لا تسمح للمبرمج بالوصول الي العتاد مباشرة بل تجعل بين المبرمج والعتاد

محرك وهمي له القدرة علي خداع المبرمج ان صح التعبير انا لما علمت الفكرة انصدمت حقيقة من ان النضام لا يسمح لنا بهده الصلاحيات

ولا يقول لي احد انه من اجل حماية المبرمج من الاستعمال الخاطي والسيء للعتاد

والسؤال المطروح كيف استطاع مبرمجوا العتاد البرمجة من برمجة العتاد ادا

ولا تقولو لي بدوال

api

الخاصة بوندوز لاني هدا اعرفه

بل اسال عن الطريقة بالاسمبلي مباشرة

ولكم مني الشكر الجزيل

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#7

أسئلة كثيرة يا اخي لكن ينقصها الترتيب :wacko:

-----------------

اقتباس
ماهي المقطعات التي اصبحت محظورة علي

استعمل اي اداة تمكنك من رؤية الـInterrupts Table ,, ستجد مع كل معاطعة ما يسمى بالـDPL وهو يخص المستوى الذي يمكنك تنفيذ المقاطعة منه ,, اذا كان 0 (Ring 0) فلا يمكنك تنفيذ المقاطعة إلا من الـkernel-mode ,, اذا كان 3 اذا يمكن التنفيذ من الـUser-mode ... لاحظ اني اتكلم عن 32bit .

اقتباس
برمجة العتاد مثل كارت الصوت والفيديو وغيرها لكن فكرتي هي ان تكون هده الدريفرات مستقلة عن بنية النظام

لا يمكن ذلك عمليا ,, ستحتاج الى استخدام الروتينات التي يمدك بها النظام من اجل التعامل مع الذاكرة ووو .

اقتباس
لكن العيب في هده المكتبات انها تعاني في البطء مع التعامل المباشر مع الهارد وير هدا اصلا ادا كان نظام التشغيل يسمح لها بالوصول اصلا

اقرأ قليلا وحاول التفرقة بين الـkernel-mode والـuser-mode ,, اصلا مكتبات السي++ القياسية لا يمكنك استخدامها في برمجة الكرنل إلا اذا قمت باعادة كتابتها يدويا ,, فكيف بالـgtk اذا ؟؟

اقتباس
ولا يقول لي احد انه من اجل حماية المبرمج من الاستعمال الخاطي والسيء للعتاد

بل هو كذلك !!

أتفضل اذا حدث Unhandled Exception في برنامجك ان يحدث له crash ويغلق فقط ام ان ينهار النظام كله ؟؟

اقتباس
والسؤال المطروح كيف استطاع مبرمجوا العتاد البرمجة من برمجة العتاد

عن طريق برمجة الـkernel-mode drivers ,,

اقتباس
ولا تقولو لي بدوال api الخاصة بوندوز لاني هدا اعرفه بل اسال عن الطريقة بالاسمبلي مباشرة

ليس بـAPI ,, اذا انت من صنع قطعة الـhardware فانت ادرى بكيفية التعامل معها لكنك ستحتاج بشكل او اخر الى استخدام بعض روتينات النظام ,, انت من يعمل تحت النظام اذا انت من يتبع قواعده وليس العكس !

هذا مشروع مفتوح المصدر لـVideo Display Driver ممكن تستفيد منه ,, انصحك بأن تعد العدة قبل ان تجرب الدخول في هذا المجال !

http://www.geocities.com/bearwindows/vbemp.htm

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#8
GamingMasteR كتب:
اقرأ قليلا وحاول التفرقة بين الـkernel-mode والـuser-mode ,, اصلا مكتبات السي++ القياسية لا يمكنك استخدامها في برمجة الكرنل إلا اذا قمت باعادة كتابتها يدويا ,, فكيف بالـgtk اذا ؟؟

شكر اخى GM على هذه المشاركة ولكن لماذا يلزمك ان تعيد كتابه مكتبات السى ++ مرة اخرى

واذا كنت تعيد كتابتها فما الذى ستضعه بها جديد او ما الذى ستمحيه منها

شكرا لك :)

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#9
اقتباس
استعمل اي اداة تمكنك من رؤية الـInterrupts Table

هل من الممكن ذكر احد هذه الادوات

#10

مكتبات السي++ القياسية تعتمد على النظام الذي ستعمل عليه ,, يعني في الويندوز بنيتها غير في لينكس غير في اي نظام اخر .

نفس الكلام اذا تكلمنا عن الـUser-space والـkernel-space لابد من اختلاف بنيتها .

مثال للتبسيط :

نعرف ان الـoperator new يقوم بحجز مساحة من الذاكرة عن طريق الـHeaps ,, تحت Win32 User-mode يستخدم دوال API بشكل غير مباشر و هي GetHeap & RtlAllocateHeap ,, تحت الـKernel-mode لن تعمل هذه الطريقة لأن الدوال غير موجوده اصلا في الكرنل(ntoskrnl) ,, لذلك لابد من اعادة كتابتها بحيث تستخدم الروتينات الخاصة بالنظام مثل ExAllocatePool واخواتها .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#11

AND يمكنك استخدام اي Kernel-mode debugger مثل Sice/Syser/WinDbg ,,

أو استخدم اداة Four-F في المرفقات .

IdtViewer.rar

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#12

بسم الله الرحمن الرحيم

المهم مشكلة الوصول الي العتاد في الوندوز قد حلت والحمد لله

يعني كما يقال

لكل مشكلة ولها حل

والحقيقة هدا هو هدف المبرمج والا لما يسمي مبرمج اصلا

المبرمج = حلول

المهم الطريقة اصلا كانت في المنتدي ومخبئة في مئات الموضوعات القيمة

وهي تتعتمد علي تظمين جميع البرامج التي تريد برمجتها سواء ب

assembly 32 bit

نعم ولا تتعجبوا

c/c++

تحت اي وندوز ونقصد بالاخص التي تعتمد علي النظام المحمي مثل الاكسبي

والطريقة هي تظمين مكتبة تسمي

InpOut32.dll

والتي تعطي المبرمج صلاحيات الوصول المباشر للعتاد

وانا قد وجدت في احد المنتديات مشاركة مميزة ومفصلة لكيفية التعامل مع هده المكتبة

واريد ان استشير المشرفين في وضع رابط هدا المنتدي ام اقوم بعمل ملف

pdf

يعني لكي لا يقال ان هدا اعلان لاحد المنتديات ونبقي ظمن القوانين المسموحة

وانا في انتظار رد المشرفين

ولكم مني الشكر الجزيل

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#13

الحل كما قلت هو الوصول الى مستوى النظام ,, ملف الـDLL كل ما يقوم به هو عمل Interface لـDevice Driver يعمل بمستوى النظام ,, هو فقط يقوم بالمهمة عنك لكن كما وضّحت من قبل لابد من الوصول لمستوى النظام .

هذا تفصيل للتعامل مع المكتبة :

http://www.codeproject.com/KB/vb/Inpout32_read.aspx

بالمناسبة الـDevice Driver لهذه المكتبة يتعامل مع الـParallel Port عن طريق روتينات احد ملفات النظام ايضا وليس مباشرة :wink:

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#14

عندي سؤال لك أخي aziz nor ماهي أسماء المحاكيات التي تستعملها ؟

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#15

السلام عليكم

اخي سيف انا استعمل محاكي مشهور وهو معروف واسمه

emu8086

وهدا الموقع الخاص بالاشخاص القائمين علي تطويره

http://www.emu8086.com/

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

وتستطيع ربطه مع اي مترجم ترغب فيه

وانا استخدموا مع مترجم

flat/FSAM

يعني يصبح المحاكي عبارة عن

IDE

لمشاريعك وهو جميل جدا من ناحية تلوين التعليمات وترقيم الاسطر البرمجية

ويعطيك كدالك خاصية رائعة جدا وهي يحسب لك عدد الدورات لتنفيد برنامجك

يعني يعطيك الزمن الازم لتنفيد اي من برامجك

وكدالك يعطيك حالة المسجلات والرايات وتغيراتها

وفي الاخير للعلم فقط يقول مطروا البرنامج انه لا يستطيع التعامل مع بعض التعليمات

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

وفي الاخير اخبرني بعض اصدقائي الدين يدرسون في الالكترونيك انهم يستعملون محاكي

يدعم عدة نسخ من المحاكي التابع لانتل والعديد من البروسيسيرات الاخري ادا تحصلت عليه

ساوفيك به ان شاء الله

ولكم مني الشكر الجزيل

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#16

مشكورين يا جماعه عالإجابات ....

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…