深入研究使用 TIB 的 Win32 API 函数的实现,例如:
- TLS 访问函数:
TlsAlloc,TlsFree,TlsSetValue,TlsGetValue GetLastError,SetLastError- 消息传递子系统:
GetMessage等PeekMessage。
人们发现他们都通过读取fs:[0x18]选择器的内容来访问 TIB(有时称为 TEB)。
OTOH 这是不必要的,因为fsregister直接指向它。根据这篇文章和我在实践中看到的,fs寄存器保存指向 TIB 结构开头的地址,而在偏移量 0x18 处,它有指向自身的指针。
然而,间接访问 TIB 的原因可能是什么?