2013-05-09 2 views
3

OS 클래스의 루트킷을 작성 중입니다. (선생님은 도움을 청합니다.) 내 루트킷은 sys_read 시스템 호출을 후크하여 사용자로부터 "마법"포트를 숨 깁니다. 사용자 버퍼 * buf (sys_read의 인수 중 하나)를 커널 공간 (kbuf라고하는 버퍼)에 복사하면 커널 패닉/코어 덤프 오류가 발생합니다. 이것은 read를 깨는 것은 시스템을 멈추게 할 수 있기 때문에 가능할 수 있습니다. 그러나 누군가이 것에 대해 어떤 관점을 가지고 있는지 궁금합니다.커널 패닉 - 실패한 copy_from_user, kmalloc?

코드는 온라인으로 제공됩니다. 207 행을보세요 : https://github.com/joshimhoff/toykit/blob/master/toykit.c

나는 훅으로 묶은 getdents를 사용하고 copy_from_user를 사용하여 커널 공간에 getdents 구조체를 가져 왔습니다. 나는 읽는 것에 대해 다른 점이 무엇인지 확신하지 못한다.

도움 주셔서 감사합니다.

답변

1

나는 그것을 알아 냈다. 실제 sys_read 함수를 호출하고 반환 값을 확인하지 않았습니다. 때로는 오류를 나타내는 것이 음수입니다. 일찍 실패하는 대신, 나는 kmalloc에 ​​음수의 바이트를 요청했다.

상상해보십시오. 부정적인 메모리 할당. 그것은 미친 세상 일 것입니다.

+0

그건 미친 세상이 될 것입니다! – cpimhoff

관련 문제