簡體   English   中英

Win32 中的 TIB 訪問

[英]TIB access in Win32

深入研究使用 TIB 的 Win32 API 函數的實現,例如:

  • TLS 訪問函數: TlsAllocTlsFreeTlsSetValueTlsGetValue
  • GetLastErrorSetLastError
  • 消息傳遞子系統: GetMessagePeekMessage等。

通過讀取fs:[0x18]選擇器的內容,發現它們都訪問了 TIB(有時稱為 TEB)。

OTOH 這是不必要的,因為fs寄存器直接指向它。 根據這篇文章和我在實踐中看到的, fs寄存器保存了 TIB 結構開頭的地址,而在偏移量 0x18 處,它具有指向自身的指針。

盡管如此,間接訪問 TIB 的原因可能是什么?

任何使用FS指令都需要覆蓋,即向指令添加一個字節(並且通常需要匯編語言才能使用它)。 FS:18處的指針(至少在內存正確的情況下)基於DS ,因此它可以在沒有覆蓋的情況下使用,在使用時保存一個字節,並且(對許多人來說最重要的是)可以直接從高級語言,如 C 或 C++,而不需要匯編語言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM