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

إحترف برمجة الأجهزة HardWare

مغلق
بدأه JAAS في 30 ديسمبر 2004 · 14 رد · 10,821 مشاهدة · في المواضيع و الدروس القيّمة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله ,,,

قد يعتقد الكثير أن البرمجة هي كتابة البرامج للمستخدم , وهي البرامج المرئية في الجهاز فقط

ولكن ماهو المجال الآخر في البرمجة والمسمى ( برمجة الأجهزة )

بإختصار هل سمعت عن تعاريف الأجهزة أو سواقات الأجهزة , وكيف تكتب ؟!

هل سألت نفسك كيف تبرمج الشبكات و بروتوكولات الشبكات و جدار النار والبروكسي و... وهل هي برامج exe أو dll

هل جربت يوم أن تبرمج كود يلتق صورة من كميرا الكمبيوتر , أو هل حاولت الوصول لمحتويات قرص DVD

هذا الموضوع سيفتح لك المجال في برمجة الأجهزة ,,,

لنفهم هذا النوع من البرمجة يجب أن نمر بمراحل ,, المرحلة الأولى

برمجة الأجهزة 16 بت : نظام التشغيل دوس

لو نرجع إلى أيام الشاشة السوداء للنظام الدوس , فإن الإجهزة كانت تبرمج عن طريق المقاطعات

وأتذكر أن أكثر دالة كانت تستخدم في ذلك الوقت الدالة int86 تجدها في ملف الهدر Dos.h أو BIOS.h

على حسب المترجم الذي تستخدم , المهم يمرر لهذة الدالة 3 بارمترات

الأول رقم المقاطعة , الثاني مسجلات المعالج المدخلة , الثالث مخرجات مسجلات المعالج

وتكون طريقة البرمجة بهذا الشكل :

// تعريف لمسجلات المعالج
union REGS   in_reg , out_reg;

// القسم الأول للمسجلات العامة
 in_reg.h.al
 in_reg.h.ah 
 in_reg.h.bl
 in_reg.h.bh 
 in_reg.h.cl
 in_reg.h.ch 
 in_reg.h.dl
 in_reg.h.dh 


// القسم الثاني للمسجلات العامة
 in_reg.x.ax
 in_reg.x.bx
 in_reg.x.cx
 in_reg.x.dx
 in_reg.x.si
 in_reg.x.di
 in_reg.x.flags
 in_reg.x.cflag


// in_reg بعد ذلك تنفذ الدالة  وتمثل مسجلات المعالج المدخلات
 int86(0x10, &in_reg, &out_reg);

---
// out_reg بعد تنفيذ الدالة تعود مسجلات المعالج بالمخرجات

تذكر هذة الفكرة جيداً إلى الآن تعتبر صلب الموضوع ,, المهم بعد ذلك ظهرت المرحلة 2

برمجة الأجهزة 32 بت : نظام التشغيل وندوز :

ظهر النظام وندوز بأنواع جديدة من الحماية ومستويات البرمجة وخاصة برمجة الأجهزة

وتغيرت دالة برمجة الأجهزة وتحولت في وندوز إلى الدالة

DeviceIoControl

هذة الدالة لها 8 بارمترات :

1- البارمتر الأول مقبض الجهاز , البارمتر الثاني معرف العملية أو رقم العملية

2- البارمتر الثالث يمثل مؤشر إلى البيانات المدخلة , البارمتر الرابع حجم البيانات المدخلة

3- البارمتر الخامس يمثل مؤشر إلى مخرجات الدالة , السادس يمثل حجم المخرجات

أما البارمتر السابع يمثل القيمة العائدة , والبارمتر الثامن يمثل التزامن (آخر بارمترين غير مهمين )

---

والآن هل لاحظت شيء غريب ؟! وهو أن الفكرة واحدة منذ أيام نظام الدوس ولم تتغير

الدالة int86 في نظام الدوس( لها رقم مقاطعة - لها مدخلات - لها مخرجات)

الدالة DeviceIoControl في وندوز ( لها مقبض جهاز ومعرف عملية - لها مدخلات- لها مخرجات)

---

والآن أمثلة بسيطة لنتعرف على دالة برمجة الأجهزة وهي DeviceIoControl

كتبت أمثلة كثيرة في مواضيع سابقة وسؤعيد بعضها , ,, مثال على قرائة بيانات جهاز

كما تلاحظ فإننا نريد قرائة بيانات أي أننا سنقوم بإستخدام مخرجات الدالة فقط , لاحظ الكود

// تعاربف
HANDLE hDevs=(HANDLE)-1;
DISK_GEOMETRY pF={0};
DWORD cb;

// إنشاء مقبض للجهاز من خلال تمرير إسمة
hDevs = CreateFile("\\\\.\\C:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); 

// قرائة بيانات من خلال الجهاز
DeviceIoControl (hDevs, IOCTL_DISK_GET_DRIVE_GEOMETRY,
                            NULL, 0, &pF, sizeof(pF), &cb, NULL);

// بعد تنفيذ الدالة ستحمل البنية بالمعلومات
pF.BytesPerSector  = عدد البايتات في كل قطاع
pF.SectorsPerTrack= عدد القطاعات في كل تجمع
...
...

بدئنا بإنشاء مقبض للجهاز وإسم الملف :C وهذا الإسم عبارة عن عن برنامج مقيم في الذاكرة

ويسمى برنامج للهاردوير وليس للمستخدم ( وهذا النوع من البرامج هو محور حديثنا )

هذا الإسم في الذاكرة يسمى رمز الجهاز ,, وهو يدل بدورة على معرف الجهاز ؟!

لاحظ هذا الجدول لرمز الأجهزة ومعرف الأجهزة :

// القرص الصلب
C:    =  "\\Device\\HarddiskVolume1"
D:   =  "\\Device\\HarddiskVolume2"

// القرص المضغوط - السيدي
F:  =  "\\Device\\CdRom0"

//المنافذ 
COM1  = "\\Device\\Serial0"
LPT1   = "\\Device\\Parallel0

// الأجهازة الطرفية
DISPLAY1  = "\\Device\\Video0"
sysaudio  = "\\Device\\sysaudio"
Scanner  =  "\\Device\\Scanner"
HCD0  = "\\Device\\USB0-0"

// الشبكات والبروتوكولات
Tcp  ="\\Device\\Tcp"
Ip    ="\\Device\\Ip"

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

ويمثل معرف العملية IOCTL_DISK_GET_DRIVE_GEOMETRY وهو يساوي الرقم 70000

وتلاحظ أننا في قسم المدخلات كتبنا NULL و0 أي أننا لانريد إستخدام أي مدخلات

وكتبنا البنية في قسم المخرجات , وبعد تنفيذ الدالة سيتم كتابة المعلومات في محتويات البنية

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

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

ولكن كيف يتم كتابة برامج الهاردوير وتعاريف الأجهزة وهي الملفات ذات الإمتداد vxd , drv ,sys

أولاً : تحتاج لبيئة تطوير الأجهزة وتسمى DDK ولها أكثر من إصدار أحدثها DDK 2003

المهم أنظمة وندوز مي و 2000 فما فوق تقبل DDK 2000 وهذة رابط التحميل

http://www.vckbase.com/tools/drv/win2kddk.exe

أما عن نظام وندوز 98

http://www.vckbase.com/tools/drv/98ddk.exe

بعد أن تقوم بتثبيت بيئة التطوير , فإن الترجمة وبناء ملفات المعلومات inf و تسجيل الأجهزة

سيكون بشكل يدوي من خلال نظام الدوس ويتطلب خبرة وفهم لطريقة عمل سواقات الأجهزة

ولكن الجديد في عالم البرمجة مثل حزمة DriverStudio لا تتطلب أي خبرة وتقوم ببناء

الهيكل الأساسي بكل بساطة وبطريقة أسرع ووقت أقل ( وستكون الأمثلة على هذة الحزمة )

تجد النسخة الأخيرة من DriverStudio وهي النسحة 3.0 هنا :

/index.php?showtopic=45632

وإذا لم تلحق عليها ,, توجد هنا نسخ أقدم مثلا النسخة 2.5

http://www.vckbase.com/tools/drv/NuMega.Dr...io.v2.5.RC1.ZIP

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

بعد أن تخزن الأدوات ,,, تابع المثال الأول >>>> تابع 2

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

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

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#2

في هذا المثال سنكتب الهيكل الأساسي لبرنامج نظام ,, بإستخدام الحزمة DriverStudio لنوفر الوقت

في البداية يجب أن تترجم عدة ماكتب أساسية لتوفير ال class الخاصة لبرمجة الأجهزة ,, تجدها في هذا المسار للنسخة 3.0

C:\Program Files\Compuware\SoftICE Driver Suite\DriverWorks\source

والمكاتب عبارة عن أكثر من مشروع ,, ما عليك إلى تشغيل الفيجول سي وإختيار المشروع VdwLibs.dsw

وقم بترجمتة بهذة الطريقة من قائمة Build ثم إختر Batch Build تظهر لك نافذة بها أنواع التعليمات

حدد ماتريد أو إختر الكل ثم إضغط Build إنتظر حتى يتم إنشاء كل المكاتب lib وبهذا نكون قد إنهيناء بناء المكاتب

والآن لاحظ السهولة في إنشاء ملف نظام أو سواقة جهاز ,, من قائمة Start إختر برامج

إختر الحزمة Compuware SoftICE Driver Suite بعد ذلك إختر تطوير Develop

الآن يوجد أكثر من برنامج , , الأول DDK Build Settings تحدد في هذا البرنامج المسارات

إذا ثبت حزمة DDk أولاً بالتأكيد لا تحتاج كتابة شيء هنا لأن برنامج درايفر ستيديو يتعرف على المسارات تلقائياً

وإذا لم تثبت DDK قبل DriverStudio عدل في هذا البرنامج ,,, فقط إبحث عن المسارات

البرنامج الثاني وهو صانع الكود الأساسي لأي سواقة أو جهاز وهو البرنامج Driver Wizard

شاهد المثال التالي ,, شغل Driver Wizard وتابع ,,,

SysAAAA.gif

SysBBBB.gif

SysCCCC.gif

SysDDDD.gif

SysEEEE.gif

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

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

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

SysFFFF.gif

SysGGGG.gif

SysHHHH.gif

Sysiiii.gif

SysKKKK.gif

SysMMMM.gif

---

ولآن في الملف المرفق تجد المشروع وينقسم إلى قسمين

المشروع sys = الكود و سواقة الجهاز

المشروع exe = عبارة عن ملف تنفيذي يختبر السواقة ويمرر لها البارمترات

ملاحظ لتثبيت السواقة وتشغيلها ,, تجد في نفس الحزمة البرنامج EzDriverInstaller فقط إختر ملف inf

ليتم تثبيت سواقة النظام ,,,

SysOOOEnd.gif

وفي النهاية فإننا نكون قد أخذنا الأساسيات ,, وبقية الأمثلة والأوامر المستخدمة

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

وبالتوفيق ,,,

FirstDev.zip

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

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

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#5

يعطيك ألف عافية ..

فعلاً رائع ..:)

the_hydro@hotmail.com

#6

بسم الله ما شاء الله

بارك الله فيك حبيبي JAAZ

تم تعديل هذه المشاركة بواسطة freeislam في 30 ديسمبر 2004 في 02:19

الشباب جسر من جنون لا غنى للعقلاء عن المرور عليه. (جمال الدين

الافغاني)

من جـاد سـاد.. ومن سـاد قـاد.. ومن قـاد بلـغ المــراد

#7

مجهود رائع بار ك الله فيك

وزادك من علمه

022.gif

***********************************************

043.gif

#8

الله يعطيك العافية

#9

السلام عليكم و رحمة الله

بارك الله فيك اخي الكريم Jass

كل دورسك ممتازة

الى الامام

السلام عليكم و رحمة الله

#10

جاري التحميل يا Jaas وكالعادة مبدع لدرجة قف تأمل !

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

بإذن الله الموضوع ينضج أكثر وإن ليس عاجلا :)

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#11

السلام عليكم ,,,

أرجوا أن يكون الموضوع حقق الفائدة للأعضاء

ولاشكر على واجب

وبالتوفيق

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

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

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#13

اشكرك استاذنا على المقال

ولكن بعد اذنك الا من رابط آخر للwinddk

#14

السلام عليكم

أهلا اخي المبدع بحق jass الله يوفقك ويزيدك علما - اتعبت من بعدك يا jass - ماشاء الله تبارك الله عليك.

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

والله الموفق.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#15

بصراحة موضوع جميل وأفكار رائعة ونحتاج مواضع كهذه تنشط عملية البرمجة

هذا الموضوع مغلق.

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