msg:
.ascii "00000000000"
#ascii('0')=0x30
.global get_gdt
.type get_gdt, @function
get_gdt:
...
sgdt msg
...
ret
Работа с GDT. "sgdt msg"
Написал модулек для 2.6.22, который читает содержимое RGDR.
ASM файл для чтения:
Код:
и С-ый для вывода:
Код:
...
char str[32];
void *data = get_gdt();
unsigned char *ptr = (unsigned char*)data;
int i = 0;
str[0] = 0;
for(i=0;i < 11;i ++){
sprintf(str, "%s%.2x:",str, *(ptr+i));
}
printk("<1> %s \n",str);
...
char str[32];
void *data = get_gdt();
unsigned char *ptr = (unsigned char*)data;
int i = 0;
str[0] = 0;
for(i=0;i < 11;i ++){
sprintf(str, "%s%.2x:",str, *(ptr+i));
}
printk("<1> %s \n",str);
...
При загрузке модуля каждый раз выводится новое значение RGDT.
Отличия проявляются в 3-х первых байтах смещения.
Что я не так делаю? Откуда эти вариации?
Спасибо.