Que fait l’instruction d’assemblage “mov rax, QWORD PTR fs: 0x28”?

Immédiatement avant l’exécution de cette instruction, fs contient 0x0.

Aussi j’aimerais savoir comment je peux lire dans cette zone de mémoire dans GDB, quelle serait la commande pour cela?

Les registres fs et gs dans les systèmes d’exploitation modernes, tels que Linux et Windows, pointent vers des structures spécifiques au thread et à d’autres structures définies par le système d’exploitation. La modification du registre de segment est une instruction protégée, de sorte que seul le système d’exploitation peut les configurer pour vous.

Cette question devrait aider à expliquer exactement ce que cela signifie: amd64 fs / gs enregistre sous Linux .

La valeur réelle du registre fs n’est pas une adresse. C’est un sélecteur – un décalage dans le GDT, qui décrit ce que ce segment peut / ne peut pas être utilisé. Vous ne pouvez pas voir quelles sont les valeurs des registres de base et de limite cachés – ce sont des registres de CPU internes qui ne sont mis à jour qu’en écrivant un nouveau “sélecteur” à fs (les registres de base / limite sont alors mis à jour).