امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
نوشتن درایور برای سخت افزار
نویسنده پیام
saeedsepn آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 4
( 6 تشکر در 5 ارسال )
ارسال: #1
نوشتن درایور برای سخت افزار
سلام کسی در باره ی نوشتن درایور چیزی میدونه یا بلده.
اگه بلدید یا اطلاعاتی دارید کمک کنید.Smile
۲۶-آذر-۱۳۹۳, ۱۸:۲۱:۱۴
ارسال‌ها
پاسخ
NO DONGLE آفلاین
مدیر بخش نفوذ و امنیت
*****

ارسال‌ها: 496
موضوع‌ها: 8
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 46
( 1848 تشکر در 489 ارسال )
ارسال: #2
RE: نوشتن درایور برای سخت افزار
برای PC ؟ چه سیستم عاملی؟
۲۶-آذر-۱۳۹۳, ۱۸:۲۵:۲۳
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg
saeedsepn آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 4
( 6 تشکر در 5 ارسال )
ارسال: #3
RE: نوشتن درایور برای سخت افزار
برای ویندوز 7 می خوام
۲۶-آذر-۱۳۹۳, ۱۸:۳۲:۰۷
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg
NO DONGLE آفلاین
مدیر بخش نفوذ و امنیت
*****

ارسال‌ها: 496
موضوع‌ها: 8
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 46
( 1848 تشکر در 489 ارسال )
ارسال: #4
RE: نوشتن درایور برای سخت افزار
شما sdk ویندوز که شامل - Windows Driver Kit - WDKهست رو برای نسخه ی ویندوز 7 رو دانلود کنید، وبرای یک محیط IDE برای یکپارچه سازی و کمپایل از ویژوال استدیو استفاده کنید،بدون اون هم میتونید ولی بهتره که نصب کنید.
۲۶-آذر-۱۳۹۳, ۱۸:۴۶:۰۰
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, babyy, lord_viper
saeedsepn آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 4
( 6 تشکر در 5 ارسال )
ارسال: #5
RE: نوشتن درایور برای سخت افزار
من WDK رو برای ویندوز 7 و همینطور برای ویندوز 8 دانلود کردم.
خودم هم با ویژوال استادیو کار میکنم با زبانهای c++ و c#.
من فقط نمیدونم کد نویسیمو از کجا شروع کنم و چطوری بنیویسم.
۲۶-آذر-۱۳۹۳, ۱۸:۵۲:۳۵
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, babyy
NO DONGLE آفلاین
مدیر بخش نفوذ و امنیت
*****

ارسال‌ها: 496
موضوع‌ها: 8
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 46
( 1848 تشکر در 489 ارسال )
ارسال: #6
RE: نوشتن درایور برای سخت افزار
اول شما باید مدل درایور رو مشخص کنید

نمونه درایور ها درون پوشه ی محل نصب wdk هست

ولی من برای درایور نویسی از این روش استفاده میکنم:

1-استفاده از ماشین مجازی مجازی
2-استفاده از OSRLoader برای لود و تست درایور
3-استفاده از DbgView
4-استفاده ازNotepad برای کد نویسی (اگه از ویژوال استدیو استفاده میکنید این لازم نیست)


نمونه ی Hello World
1-یک فایل با این نام و پسوند بسازید makefile.def
2-فایل مذکور رو باز کنید و کد زیر رو اضافه کنید:
کد php:
!INCLUDE $(NTMAKEENV)\makefile.def 

3-یک فایل بدون پسوند به نام sources بسازید و کد زیر را درون آن قرار دهید
کد php:
TARGETNAME hello
TARGETPATH 
obj
TARGETTYPE 
DRIVER

INCLUDES   
= %BUILD%\inc
LIBS       
= %BUILD%\lib

SOURCES    
hello.

4-یک فایل با نام hello.c بسازید و کد زیر را درون آن قرار دهید:
کد php:
#include <ntddk.h>

VOID Unload(IN PDRIVER_OBJECT pDriverObject)
{
 
DbgPrint("Driver Unloaded.\n");
 return;
}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObjectIN PUNICODE_STRING regPath)
{
 
DbgPrint("Hello World!.\n");
 
pDriverObject->DriverUnload Unload;

 return 
STATUS_SUCCESS;


5-برای ساخت درایور مورد نظر از طریق cmd وارد مسیر نصب WDk شوید برای مثال :
کد php:
CD C:\WinDDK\7600.16385.1
6 -همه ی فایل هایی رو که ساختید رو درون یک پوشه به نام Hello بریزید و با دستور build درایور رو بسازید
7-مثال:
کد php:
C:\WinDDK\7600.16385.1\src\Drivers\hellobuild 
8-وقتی که درایور ساخته شد (hello.cat,hello.inf,hello.sys) برای ساین و اجرا از OSRLoader استفاده کنید و با DBGWIVE پیام "سلام دنیا"رو برای لود و آن لود رو ببینید


با استفاده از سیمبل های تولید شده میتونید درایورتون رو دیباگ کنید
(آخرین ویرایش در این ارسال: ۲۶-آذر-۱۳۹۳, ۱۹:۲۰:۰۴، توسط NO DONGLE.)
۲۶-آذر-۱۳۹۳, ۱۹:۱۷:۲۸
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, saeedsepn, babyy, lord_viper
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #7
RE: نوشتن درایور برای سخت افزار
http://www.iranled.com/forum/thread-24707.html

تاپیک بالا یکمی روش بحث شده

نتیجه گیری خودم. از اوضاع:
نوشتن داریور ، نباید قسمتی از پروژه باشه، بلکه خودش باید هدف جداباشه که باید دنبال بشه

اگه زمان کافی برای صرف کردن ندارین، بهتره سمت سخت افزار از آیسی هایی استفاده کنید که برای ارتباط با pc, درایور با مستندات و sdk, و... داشته باشه


(از اینجا به بعد ممکنه اطلاعاتی که میدم، اشتباه باشن)
درایور ها ۲ نوع بودن، یکی user mode, و دیگری kernel mode

یوزر مد، برای برنامه نویسیش میشد از یه سری کتاب خونه سطح بالاتر استفاده کرد که کار رو ساده تر میکرد، به شرطی که سخت افزار شما در دسته بندی های آماده ، جایگاهی داشت!

یعنی مثلا وبکم باشه، که یه کلاس آماده براش موجوده


تعامل با api ها در سمت user mode ، کمتر بودش نسبت به kernel mode

اگه قبلا با دات نت کد میزدید، به آشنایی با ساختار و کلیات api نیاز دارید

همونطورم که اشاره شد، visual studio فکر کنم از ورژن ۱۱ به بعد، skd دایور هارو پشتیبانی میکنه و لازم نیست یه ide دیگه کار کنید.

همینا بودن...
موفق باشین
۲۶-آذر-۱۳۹۳, ۱۹:۲۴:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : saeedsepn, فاطمه وطن دوست, lord_viper
saeedsepn آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 4
( 6 تشکر در 5 ارسال )
ارسال: #8
RE: نوشتن درایور برای سخت افزار
خیلی ممنون از راهنمایی خییییلی عالی تون
ولی اگر مثلاً ما سخت افزاری داشته باشیم که بخواییم ازش اطلاعاتی بگیریم یا اطلاعاتی بدیم چطور میشه.
این کار هم مثل ،مثال بالا میشه؟
۲۶-آذر-۱۳۹۳, ۱۹:۳۲:۱۷
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg
NO DONGLE آفلاین
مدیر بخش نفوذ و امنیت
*****

ارسال‌ها: 496
موضوع‌ها: 8
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 46
( 1848 تشکر در 489 ارسال )
ارسال: #9
RE: نوشتن درایور برای سخت افزار
نه!!
این یک مثال فقط نمایش یک رشته به همراه بارگذاری یک نمونه درایور بود

برای ساخت درایور باید به این نکته توجه کرد که این درایور برای چه هدفی است!برای چه سیستم عاملی!و از چه پروتکلی استفاده میکنه. اساسا میخواییم در سطح کاربر درایور بنویسیم یافقطدر سطح کرنل؟ یا هردو؟ یعنی فقط یک درایور راه انداز باشه یا کاربر هم بتونه با هاش تبادل اطلاعات کنه؟

شما همه ی مثال هایی رو که لازم دارید در پوشه ی src در محل نصب wdk رو یکجا دارید!فقط کافی ست دستور build رو اجرا کنید تا درایور مربوطه کمپایل بشه.ودر قسمت user mode شما وقتی که پروژه رو کمپایل کنید یک exe.tester خواهید داشت که درایور رو کنترل میکنه و باهاش ارتباط برقرار میکنه (اطلاعات میفرسته یا میگیره)

به هرحال
یک آموزش ساخت درایور درست میکنم همچنین نحوه ی برقراری ارتباط از سطح کاربر به سطح کرنل
(آخرین ویرایش در این ارسال: ۲۶-آذر-۱۳۹۳, ۲۳:۲۹:۵۱، توسط NO DONGLE.)
۲۶-آذر-۱۳۹۳, ۲۰:۱۰:۵۴
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, فاطمه وطن دوست, lord_viper, saeedsepn
NO DONGLE آفلاین
مدیر بخش نفوذ و امنیت
*****

ارسال‌ها: 496
موضوع‌ها: 8
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 46
( 1848 تشکر در 489 ارسال )
ارسال: #10
RE: نوشتن درایور برای سخت افزار
(۲۶-آذر-۱۳۹۳, ۱۹:۲۴:۳۸)salehjg نوشته است: http://www.iranled.com/forum/thread-24707.html

تاپیک بالا یکمی روش بحث شده

نتیجه گیری خودم. از اوضاع:
نوشتن داریور ، نباید قسمتی از پروژه باشه، بلکه خودش باید هدف جداباشه که باید دنبال بشه

اگه زمان کافی برای صرف کردن ندارین، بهتره سمت سخت افزار از آیسی هایی استفاده کنید که برای ارتباط با pc, درایور با مستندات و sdk, و... داشته باشه


(از اینجا به بعد ممکنه اطلاعاتی که میدم، اشتباه باشن)
درایور ها ۲ نوع بودن، یکی user mode, و دیگری kernel mode

یوزر مد، برای برنامه نویسیش میشد از یه سری کتاب خونه سطح بالاتر استفاده کرد که کار رو ساده تر میکرد، به شرطی که سخت افزار شما در دسته بندی های آماده ، جایگاهی داشت!

یعنی مثلا وبکم باشه، که یه کلاس آماده براش موجوده


تعامل با api ها در سمت user mode ، کمتر بودش نسبت به kernel mode

اگه قبلا با دات نت کد میزدید، به آشنایی با ساختار و کلیات api نیاز دارید

همونطورم که اشاره شد، visual studio فکر کنم از ورژن ۱۱ به بعد، skd دایور هارو پشتیبانی میکنه و لازم نیست یه ide دیگه کار کنید.

همینا بودن...
موفق باشین

اساس کار همینه :)
کسایی که دیوایس درایور مینویسن معمولا کتابخانه رو هم خودشون مینویسن یا به قیمت بالایی میخرن(برای کارهای حرفه ای)معمولا زیاد از api های عمومی ویندوز استفاده نمیکنن،وهرتکنولوژی sdk خودشو داره.
۲۶-آذر-۱۳۹۳, ۲۳:۳۸:۴۱
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, saeedsepn
saeedsepn آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 4
( 6 تشکر در 5 ارسال )
ارسال: #11
RE: نوشتن درایور برای سخت افزار
دوست عزیز از راهنمایی بسیار مفیدتون خیلی ممنون
ببخشید خیلی دیر جواب دادم اینترنتم تموم شده بود
از راهنمایی تون استفاده می کنم
در مورد API ها هم اطلاعاتی دارم چون قبلاً با VB6.0 کار میکردم و از API هاش استفاده می کردم

خیلی ممنون از راهنماییت
۱۳-دى-۱۳۹۳, ۱۷:۰۹:۰۵
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] نوشتن درایور برای FileSystem Monitor برای همه نسخه های ویندوز nImaarek 1 1,605 ۲۴-خرداد-۱۳۹۷, ۲۰:۳۴:۰۰
آخرین ارسال: NO DONGLE
  [آموزشی] فیلم فارسی آموزش نوشتن File Locker ساده در ++C one hacker alone 0 2,323 ۰۵-اسفند-۱۳۹۴, ۰۸:۰۷:۰۰
آخرین ارسال: one hacker alone
  [آموزشی] آموزش نوشتن File Locker ساده در ++C one hacker alone 0 2,151 ۲۵-بهمن-۱۳۹۴, ۰۵:۴۲:۲۱
آخرین ارسال: one hacker alone
  [سوال] کمک برا نوشتن برنامه hadikh73 13 8,836 ۱۹-اردیبهشت-۱۳۹۴, ۱۰:۱۲:۲۲
آخرین ارسال: *بنده خدا*
  کمک برای شروع به نوشتن درایور salehjg 5 8,057 ۲۸-فروردین-۱۳۹۳, ۰۳:۲۷:۰۲
آخرین ارسال: salehjg
  کمک در نوشتن ارایه دو بعدی hut 0 2,144 ۲۲-آذر-۱۳۹۲, ۱۷:۱۵:۰۰
آخرین ارسال: hut
  خواندن و نوشتن aleas 1 3,061 ۰۶-اسفند-۱۳۹۱, ۲۲:۰۴:۵۵
آخرین ارسال: Ghoghnus
Cool [سوال] Thumbs down HELP...ترو خدا تو نوشتن این برنامه آسون کمکم کنین ... :-d alidodar1 7 7,020 ۲۶-مرداد-۱۳۹۱, ۲۳:۳۶:۱۱
آخرین ارسال: invincible
Exclamation نوشتن اعداد در 7 ستون یه مشکل خیلی ساده در C St4r-S4t 2 4,434 ۱۷-اردیبهشت-۱۳۹۱, ۱۰:۵۴:۰۶
آخرین ارسال: sjh
  [سوال] راهنمايي براي نوشتن برنامه تحت پروتكل HTTP one hacker alone 4 3,998 ۲۲-بهمن-۱۳۹۰, ۱۷:۵۸:۲۶
آخرین ارسال: one hacker alone

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS