כתיבת דרייבר- מחפש כיוון

כתיבת דרייבר- מחפש כיוון

יש לי רכיב חומרה כלשהו שמתחבר למחשב, יש לו דרייבר רק לווינדוס XP
בווינדוס 10 , בזמן חיבור החומרה למחשב הווינדוס לא מזהה אותו כראוי(כי אין לו דרייבר מתאים)
רציתי לשמוע על כיוון, איך אפשר להמיר/לכתוב דרייבר לחומרה הזאת לווינדוס 10? (לא מעוניין לעבוד ב VM)
אשמח לכיוון כללי
תודה
 

BravoMan

Active member
5 שלבים מאוד פשוטים:

1. תלמד לתכנת בשפת C
2. תוריד את ה-DDK של MS.
3. תלמד איך כותבים דרייברים ל-Windows 10.
4. תתקין Windows XP, תחבר את הרכיב, ותעשה הנדסה לאחור לפרוטוקול שלו מול הדרייבר.
5. תיישם 1 עד 4 כדי לכתוב דרייבר שיתאים ל-WIndows 10
 
נשמע מעניין

C אני יודע, ראיתי שאפשר לכתוב גם עם CPP

צריך לעשות הנדסה לאחור(IDA) וממש לכתוב את כל הדרייבר מחדש ?או שאני אמור להפעיל כל מיני מצבים בדרייב ולהסניף את התקשורת שלו עם המחשב?
תוכל להפנות אותי למקור לפרויידט דומה של המרת דרייבר מ XP לווינדוס 10?
ראיתי כל מיני סוגים של דרייברים , USER MODE או KERNEL MODE ..(UMDF או KMDF) , או שאני לא צריך לכתוב דרייבר UNIVERSAL?
נשמע שזה פרוייקט של חודש ....או שאני מפספס משהו?
אשמח לקצת יותר כיוון ברשותך
 

BravoMan

Active member
פרוקיט של יומיים, גג!

אם אתה רוצה לסגור תוך יום, תכתוב ללינוקס

&nbsp
עכשיו ברצינות רגע, אתה מפספס בערך הכל...
&nbsp
לא כתבת מה הרכיב חומרה עושה.
לא כתבת איך הוא מתחבר למחשב.
לא כתבת מה אתה רוצה לעשות איתו ברמת תוכנה.
&nbsp
אני לא חושב שיש מישהו משוגע מספיק להתעסק בניסיון להמיר דרייבר סגור של XP ל-10.
אבל האינטרנט הוא מקום גדול, אולי תמצא...
 

BravoMan

Active member
ואתה יודע איזו תקשורת הוא ממיר?

היות ומדובר בהתקן USB אתה לא ממש חייב דרייבר.
אתה יכול להשתמש ב-libusb ולדבר עם החומרה ישירות.
&nbsp
כמעת - כי WIndows זה זבל של מערכת שלא נותנת לעבוד, אז תצטרך איזשהו דרייבר גינרי, שבעצם לא עושה כלום, ונותן ל-libusb לעבוד ישירות מול ההתקן ולייצא מידע ל-userspace.
&nbsp
משם, יש תוכנה נחמדה וחינמית שנקראת usbmon ואיתה תוכל לראות את התקשורת למחשב שבו הדרייבר כן עובד.
זה יותר פשוט מלנסות להבין את הקוד של הדרייבר המקורי עם IDA, אבל אתה עדיין צריך לדעת לקרוא הקסה ולהבין פרוטוקולי תקשורת.
&nbsp
אז בהנחה שכל מה שההתקן עושה זה לשנע מידע קדימה ואחורה, ואולי לקבל פקטה של קונפיגורציה פה ושם, הפרויקט אמור להיות אפשרי...
 
דרייבר גנרי?

צריך דרייבר גנרי כדי שווינדוס יזהה את החומרה שלי ,אבל בעצם כל ה"דרייבר" יהיה בתוך libusb?
צריך לכתוב דרייבר כזה או שיש כזה ברשת? (אמור פשוט לזהות את ההתקן הזה ?)

לאחר התקנת הדרייבר הגנרי, מה צריך לראות ב usbmon?
אני יודע בין איזה פרוטוקולים הכבל ממיר,מה שיראה שם זה פשוט תקשורת ב usb,
לפי מה שאראה ב usbmonuבווינדוס xp את אצטרך "לתכנת" ת ה libusb?
 

BravoMan

Active member
אוקיי, אתה רציני...

תראה, אני מודה שבהתחלה לקחתי את ההודעה שלך בתור סוג של בדיחה.
לעשות reverse engineering לדרייבר ולכתוב דרייבר חדש דורש הרבה ידע בפיתוח ומבנה המחשב, ובד"כ אנשים שיש להם את הידע המתאים לעשות את העבודה לא יתחילו את דרכם בפורום הזה.
&nbsp
שמתי לב גם שאתה כותב בלשון זכר אבל המשתמש שלך מוגדר כנקבה.
&nbsp
אבל בינתיים ההודעות הפכו יותר רציניות, אז נראה שטעיתי לגביך, קבל התנצלות.
&nbsp
ככה:
הפעם האחרונה שהתעסקתי עם הדברים האלה, היית לפני יותר מ-5 שנים, ואני לא זוכר הרבה.
נתקלתי בדוגמה שבה הנדסו לאחור תוכנת צריבה של ROM עבור טלפון סלולרי, והתוכנה החדשה היית זמינה בקוד פתוח ברשת. (חפש Heimdal ל-LG אם זה מעניין אותך).
&nbsp
מה שעשו, היה למצוא (או אולי לכתוב, אבל לא שחררור קוד), אישזהו דרייבר, שרק זיהה את הטלפון (במצב bootloader מיוחד) לפי ה-VID ו-PID שלו, ועשה לו אינומרציה ב-usb subsystem של Windows.
&nbsp
משם, התוכנה השתמשה ב-libusb, שנותן לך פונקציות לגישה ישירה כמו bulkTransfer או לקריאת headers של USB.
אני לא מכיר לעומק את מבנה הדרייברים של Windows, אוני יודע שבלינוקס libusb עובד בלי דרייבר בכלל, אבל כמובן ה-kernel שם מתנהג שונה.
&nbsp
אז אני חושב שצריך איזשהו "דרייבר" בסיסי רשום ב-registry כדי לזהות התקן USB לפי VID PID.
&nbsp
לגבי usbmon: זו תוכנה שמנתרת פעולות ב-USB, ורושמת את כל מה שעובר שם.
אפשר לראות אלו פעולות (bulkTransfer, controlTransfer וכו') התקן מסוים מבצע, ואיזה מידע הוא שולח, ואז ניתן לעשות את אותן פעולות בתוכנה משלך בעזרת libusb.
&nbsp
אם אתה מכיר את Wireshark זה רעיון דומה, קצת יותר פשוט לשימוש (לדעתי).
 
למעלה