ערכתי לאחרונה בתאריך 27.05.06 בשעה 10:51 בברכה, MadXP
זוכרים שהבטחתי ללמד על kernel drivers ...אז ככה:
נניח והיינו רוצים להוסיף פקודות חדשות לסט הפקודות הקיים במעבד של אינטל.
(פקודות מכונה כמו mov eax, ebx לדוגמא.)נוכל להגיע למצב בו המתכנת משתמש בפקודות שלנו, ממש כותב אותם במהדר
(ללא ידיעה שפקודות אלו לא נתמכות ע"י המעבד אלא על ידינו.), מקמפל את הקוד
והקוד מתקמפל ורץ...
נוכל לפתח למשל פקודה כמו strcpy שתעבוד באסמבלר, כלומר נרשום משהו כמו
strcpy esi edi (כאשר esiו edi הן מצביעים לכתובות זכרון) והתוכן יועתק.
או כל פקודה אחרת שתרצו לממש...
איך בעצם נגרום למעבד לזהות את הפקודות שלנו בתור פקודות חוקיות?
לעולם לא נוכל לגרום למעבד לחשוב שהפקודות שלנו חוקיות, הרי המעבד יקרא את ה opcode שהכנסנו, כמובן שהוא לא יהיה חוקי ויזרוק invalid opcode exception.
מה היה קורה אם היינו מצליחים להשתלט על השגרה שמבוצעת במערכת ההפעלה כאשר נזרק exception מסוג זה? מתחילים להיות איתי..?
אם היינו משתלטים על השגרה הזו וכל פעם שנזרק exception מהסוג הנ"ל קוד שאנחנו כתבנו היה מורץ, החיים שלנו הופכים להיות הרבה יותר קלים...
זהו תהליך שנקרא hooking למי שמכיר.
זה רעיון לפרויקטון שאני רוצה להריץ שלב שלב בפורום.תוך כדי זה נלמד
על:
טבלאות נחמדות במערכת ההפעלה
בניית Kernel driver.
page faults
ועוד דברים מעניינים מאוד.
אני בטוח שחלקכם לא הבינו כל מה שכתבתי, אבל זה רק הרעיון...אני אסביר הכל שלב אחר שלב.
אם הרעיון נשמע מעניין ואם זה בסדר מבחינת המנהלים (כי יהיה פה מידע שילמד אותכם להתעסק עם מעה"פ בדרכים משונות...)
תגיבו פה ואני אתחיל בפרויקט..