終於來到這裡了, 從 ring0 -> ring3 -> ring0, 藉由 call gate 的使用, 慢慢的將權限切換完成了。補上
杨文博沒有的部份, 這段程式碼依照
于渊的版本, 最後會切回 dos/real mode, 並回到 dos prompt。
學習心得, 有三步驟:
- 單純的使用 call gate ,
- 切換到 ring3,
- 使用步驟一的 call gate 切回到 ring0
後面的每一步都會使用前面的程式碼。若要切回 dos/real mode, 還需要使用 ldt, 這算是第零步驟吧!照例, 程式碼的解釋就請參考杨文博的電子書。
289 mov $(SELECT_TSS), %ax /* Load TSS to TR register */
290 ltr %ax
ltr 指令用來載入一個 segment selector (指到一個 TSS)。ring3 -> ring0 時, 需要用到這個資料結構。
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。