在执行这条指令之前,fs包含0x0。
我还想知道如何在GDB中从该内存区域读取数据,对应的命令是什么?
在执行这条指令之前,fs包含0x0。
我还想知道如何在GDB中从该内存区域读取数据,对应的命令是什么?
fs
和gs
寄存器指向特定于线程和其他操作系统定义结构的位置。修改段寄存器是一项受保护的指令,因此只有操作系统可以为您设置这些寄存器。fs
寄存器的值不是一个地址,而是一个选择器——GDT中的偏移量,描述了该段可用和不可用的情况。您无法看到隐藏的fs
基址和限制寄存器的值——它们是内部CPU寄存器,只有通过将新的"选择器"写入fs
寄存器时才会更新基址/限制寄存器。fs
的想法是正确的。 - Jonathon Reinhartmov fs, eax
是错误的,除非它适用于地址空间低32位的基址。它可能仍然设置一个基址,但通常情况下,如果不使用wrfsbase
,FS基址是通过MSR设置的。) - Peter Cordes