읽기전용으로 sys_call_table이 수정되어서, 바로 수정한 후 insmod를 하게 되면

>> 죽었음


이라는 커널의 짧고 강렬한 멘트와 함께.. 모듈은 정상작동을 하지 못한다.

즉 sys_call_table[index] = our_func  이런식으로 수정하기 전에 아래와 같은 함수를 호출해주어야 한다.

static void disable_page_protection(void)

{

unsigned long value;

asm volatile("mov %%cr0, %0" : "=r" (value));

if ( value & 0x00010000) {

value &= ~0x00010000;

asm volatile("mov %0, %%cr0": : "r" (value));

}

}


static void enable_page_protection(void)

{

unsigned long value;

asm volatile("mov %%cr0, %0" : "=r" (value));

if (!(value & 0x00010000)) {

value |= 0x00010000;

asm volatile("mov %0, %%cr0": : "r" (value));

}

}


사용예)


disable_page_protection();

sys_call_table[__NR_open] = our_open;

enable_page_protection();


참고 : http://blog.naver.com/kkn2988?Redirect=Log&logNo=138441227

블로그 이미지

kuku_dass

,