for( ptr = (unsigned long)_read_lock;
ptr < (unsigned long)&init_mm ; ptr += sizeof(void *))
{
p = (unsigned long *)ptr;
if ( p[6] == (unsigned long) sys_close)
{
return (void**)p;
}
}
기존 sys_call_table 의 위치를 찾기위해 공개심볼을 이용하는 방법중
2.6.32-41 generic 에서 "init_mm" [~~~~~} undefined 라는 경고에 봉착했고..
insmod로 모듈을 로드가 제대로 되지 않았다.. ㅠ
위의 init_mm 대신 init_task.active_mm 을 이용해보자.
for( ptr = (unsigned long)_read_lock;
ptr < (unsigned long)&init_task.active_mm ; ptr += sizeof(void *))
{
p = (unsigned long *)ptr;
if ( p[6] == (unsigned long) sys_close)
{
return (void**)p;
}
}
'Linux' 카테고리의 다른 글
커널 수정 없이, system call hooking 하기. (0) | 2012.05.27 |
---|---|
시스템콜만 후킹 가능한거 아니였어?!!! (0) | 2012.05.26 |
리눅스 커널 전체 소스 분석 사이트 (0) | 2012.05.24 |
리눅스 커널 2.6 이상에서 sys_call_table wrapping 방법 (0) | 2012.05.24 |
우분투 grub 설정 및 커널 변경(원하는 커널로 선택하여 부팅) (0) | 2012.05.23 |