יום רביעי, 28 במאי 2008

איך לפרוץ kext


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

את השיטה הזו ניתן לממש על כל סוג של חומרה או דרייבר, תחילה בידקו האם יש kext כמו שאתם צריכים כבר ברשת, שנית בידקו אולי מישהו ניסה ויכול להגיד אם זה הצליח לו או לא, ובסוף אתם מוזמנים לנסות את השיטה הזו הנקראת עריכת קובץ Plist.

כל קובץ Kext (שהוא בעצם ספריה) מכיל קובץ הגדרות Info.plist,
קובץ זה הוא קובץ טקסט במבנה XML (תאגים וערכים),
קובץ זה מכיל בין היתר את כל מזהי החומרה שהדרייבר מכיר ומסוגל לתמוך בהם.

מזההי החומרה נדונו בפרק "אספו ושמרו את המידע על החומרה שיש לכם כיום", ומוסבר בפרק זה היכן מוצאים את מזהי החומרה ואיך שומרים אותם. ישנם שני מזהי חומרה חשובים, האחד מזהה החברה שמייצרת את החומרה (Vendor ID) והשני מזהה הרכיב שלו אנו מעוניינים להתקין את הדרייבר (Device ID). לדוגמה אם אנו מתקינים רכיב חומרה שהוא כרטיס רשת של אינטל אז מזהה החברה יהיה: 8086 שזהו מזהה של חברת אינטל, ומזהה הרכיב יכול להיות לדוגמה 104B שמזהה את אחד מכרטיסי התקשורת של אינטל.

כדי לתמוך בכרטיס שלא נתמך, ראשית עליכם להבין מה ה Kext הכי מתאים שיכול לתמוך בחומרה שלכם, כלומר מה הכי מתאים. צריך לחפש באינטרנט ולקרוא על כל Kext שהחלטתם לשנות.

כצעד מקדים צריך לגבות את ספריית ה Kext שלכם (העתיקו אותה לספריה נפרדת), מיקום ספריית ה Kext שלכם:
/System/Library/Extensions

שנית העתיקו את ה Kext שהחלטתם לשנות/לפרוץ למיקום צדדי כמו ספריית Downloads, ובשלב הבא עליכם לערוך את הקובץ Info.plist אשר נמצא בתוך ה Kext במיקום:
/Contents
בזמן עריכת הקובץ עליכם למצוא את התאג אשר מכיל את מחרוזות ה VenID ו DevID, מחרוזות אלו נמצאות במבנה: 0xDEV_IDVEN_ID כלומר 0x כקידומת ואז מחברים לזה את ה DevID ומחברים לזה גם את ה VenID.
כלומר שאם הנתונים של הכרטיס הם:
VenID=8086
DevID=104B
אז המחרוזת שנבנה צריכה להראות כך:
0x104B8086
עכשיו שאתם יודעים איך לבנות את המחרוזת, ולאיזה קובץ צריך להכניס אותה, נשארה השאלה היכן להכניס את המחרוזת?
עליכם לחפש תאג שנקרא <> ובתוכו ערך.
הערך שתחפשו משתנה מ Kext ל Kext, לרוב תתווסף לערך המילה: match כלומר לדוגמה התאג והערך עלולים להראות כך:
  < key >IOPCIMatch< /key >
לאחר תאג זה יופיע תאג בשם:
< string >
והוא יכיל את המחרוזות שדומות לזו שאנו צריכים להוסיף, לתאג זה יש להוסיף את המחרוזת שלנו.

לאחר עריכת הקובץ, שימרו אותו העתיקו אותו חזרה, תקנו הרשאות, מיחקו את המטמון של הדרייברים, ואתחלו את המחשב עם הפרמטר f- וזהו.

עד כה דיברנו על מה שצריך לעשות, עכשיו נדבר על איך צריך לעשות את זה, לשם כך אנו זקוקים לדוגמה של דרייבר, וחומרה שלא נתמכת ואנו מעוניינים להוסיף אותה לתמיכה של הדרייבר.
נבחר דרייבר לכרטיס רשת של חברת Realtek מודל: RTL8168c.
השם המלא שיופיע בחלונות במנהל ההתקנים הוא:
Realtek RTL8168C(P)/8111C(P) PCI-E Gigabit Ethernet NIC

לאחר חיפוש ברשת מוצאים פרוייקט פיתוח שנפתח ב 2006 ופיתח דרייבר לכרטיסים מסוג זה, הפרוייקט נקרא RealtekR1000, ניתן להוריד את הקוד עם פרוייקט לסביבת הפיתוח מכאן.
אחרי שמורידים את הספריה, אפשר לראות שלא צריך לקמפל, כי עם הספריה מגיע קובץ מקומפל ובנוי שאפשר להשתמש בו הוא נמצא בספריה שהורדנו בנתיב הזה:
/RealtekR1000/build/Release/RealtekR1000.kext
ובו נשתמש בצעו את הצעדים הבאים:
1. לחצו קליק ימני על הקובץ RealtekR1000.kext ובחרו: "Show Package Contents"
2. בחלון שנפתח עברו לספריה: Contents
3. פתחו את הקובץ Info.plist בעזרת עורך טקסט
4. מיצאו את השורה: <string>0x816910ec 0x816710ec 0x816810ec 0x813610ecstring>
5. הוסיפו לה את ערכי הכרטיס שחילצתם מחלונות (נראה כך: PCI\VEN_10EC&DEV_8168)
    כלומר הוסיפו את הערך: 0x816810EC
    מצב השורה הסופית צריך להראות כך:
    <string>0x816910ec 0x816810EC 0x816710ec 0x816810ec 0x813610ecstring>
6. שמרו את השינויים, והשתמשו ב KextHelper או שבצעו את שלב 7:
7. פתחו טרמינל ורישמו (אני מניח שהקובץ נמצא בספריית Downloads):
  • sudo -s
  • הקישו את סיסמתכם ולחצו אנטר
  • cp -R ~/Downloads/RealtekR1000/build/Release/RealtekR1000.kext /System/Library/Extensions
  • chown -R 0:0 /System/Library/Extensions/RealtekR1000.kext
  • chmod -R 755 /System/Library/Extensions/RealtekR1000.kext
  • rm /System/Library/Extensions.mkext
זהו כעת אתחלו את המחשב עם הפרמטר f- ויש לכם דרייבר שיתמוך בכרטיס זה.

אם יש בעיות או שאלות אתם מוזמנים להוסיף כתגובה, אם אתם יודעים דברים נוספים אתם מוזמנים לכתוב כתגובה גם כן.

שי.

2 comments:

Roei אמר/ה...

איך משתמשים ב AppleHDAPatcher

shay.hackintosh אמר/ה...

הי רועי,

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

שים לב, תגרור על האייקון, לא ללחוץ דאבל קליק ואז לגרור!

שי.