在32位保护模式/ MSVC内联asm中获取FS:[0]的线性地址

Zhi*_*hen 3 x86 assembly inline-assembly visual-c++

我在Visual C++内联汇编中使用了这个指令

lea eax, FS:[0]
Run Code Online (Sandbox Code Playgroud)

为什么eax得到零?

我如何获得线性地址FS:[0]

Ros*_*dge 6

假设FS指向Windows 线程信息块(TIB),也称为线程环境块(TEB),则通过读取32位值来获取TIB的线性地址fs:[0x18].在Visual C++中执行此操作的最佳方法是使用__readfsdword内在:

TEB *teb = (TEB *) __readfsdword(0x18);
Run Code Online (Sandbox Code Playgroud)