Я пытаюсь получить доступ к индексу внутри сегмента с помощью селектора сегмента.Я могу заполнить регистр% fs, но когда я пытаюсь получить доступ к% fs: 0x0, я получаю SIGSEGV.У меня есть целочисленный массив malloc размером 10, который я использую в качестве сегмента, и я могу сгенерировать его дескриптор сегмента и добавить его в LDT с помощью modify_ldt ().
Я гарантирую, что% fs не используется никаким источником уровня пользователя, используемым в программе.
int* arr = calloc(10, sizeof(int)); //base of Segment is set to this.
asm("movl $0x7, %eax"); /* 0111: 0-Index 1-Using the LDT table 11-RPL of 3 */
asm("movl %eax, %fs");
asm("movl $0x15, %eax");
asm("movl %eax, %fs:0x0"); // this gives a segmentation fault