Доступ к памяти внутри сегмента с помощью селектора сегмента - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь получить доступ к индексу внутри сегмента с помощью селектора сегмента.Я могу заполнить регистр% 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
...