Углубляемся в реализацию функций Win32 API, которые работают с TIB, например:
- Функции доступа TLS:
TlsAlloc
,TlsFree
,TlsSetValue
,TlsGetValue
GetLastError
,SetLastError
- подсистема обмена сообщениями:
GetMessage
,PeekMessage
и др.
выясняется, что все они обращаются к TIB (иногда называемому TEB), читая содержимое селектора fs:[0x18]
.
OTOH в этом нет необходимости, поскольку регистр fs
напрямую указывает на него. Согласно этой статье и тому, что я вижу на практике, fs
register содержит адрес в начале структура TIB, тогда как при смещении 0x18 она имеет указатель на себя.
Что могло быть причиной косвенного доступа к TIB?