This question already has answers here:
Why does this memory address %fs:0x28 ( fs[0x28] ) have a random value?
(3个答案)
2年前关闭。
紧接在执行该指令之前,fs包含0x0。
我也想知道如何从GDB的此存储区中读取数据,该命令将是什么?
(3个答案)
2年前关闭。
紧接在执行该指令之前,fs包含0x0。
我也想知道如何从GDB的此存储区中读取数据,该命令将是什么?
最佳答案
在现代操作系统(如Linux和Windows)中,fs
和gs
寄存器指向线程特定的和其他OS定义的结构。修改段寄存器是 protected 指令,因此只有操作系统才能为您设置这些内容。
这个问题应该有助于解释确切的指向:amd64 fs/gs registers in linux。fs
寄存器的实际值不是地址。它是一个选择器-GDT的偏移量,它描述了该段可以/不能使用的段。您看不到隐藏的fs基本和极限寄存器的值是什么-它们是内部CPU寄存器,仅通过向fs写入新的“选择器”来更新(此时,基本/极限寄存器已从GDT更新)。
关于linux - “mov rax, QWORD PTR fs:0x28”汇编指令有什么作用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14414763/
10-15 07:45