Что делает инструкция сборки mov rax, QWORD PTR fs: 0x28?

Непосредственно перед выполнением этой команды fs содержит 0x0.

Также я хотел бы знать, как я могу читать из этой области памяти в GDB, какова будет команда для этого?

Ответ 1

Регистры fs и gs в современных операционных системах, таких как Linux и Windows, указывают на специфичные для потока и другие структуры, определенные ОС. Изменение регистра сегмента является защищенной инструкцией, поэтому только ОС может установить их для вас.

Этот вопрос должен помочь объяснить, в чем именно смысл: amd64 fs/gs регистрируется в Linux.

Фактическое значение регистра fs не является адресом. Это селектор - смещение в GDT, которое описывает, для чего этот сегмент может/не может использоваться. Вы не можете видеть, каковы значения скрытых базовых и предельных регистров fs - это внутренние регистры процессора, которые обновляются только путем записи нового "селектора" в fs (после чего базовые/предельные регистры обновляются из GDT).