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