삽입된 커널 모듈을 디버깅하는 방법은 무엇입니까?

삽입된 커널 모듈을 디버깅하는 방법은 무엇입니까?

로드된 커널 모듈을 디버깅하고 싶지만 소스 코드가 없습니다. 바이러스인 것 같습니다. 분석을 위해 이것을 GDB로 가져올 수 있는 방법이 있습니까?

답변1

디버깅 관점에서 볼 때 커널은 일부 rpc 메커니즘(시스템 호출) 또는 매핑된 메모리를 통해 커널과 통신하는 사용자 공간 프로세스와는 달리 특별한 "프로세스"입니다.

나는 임의의 사용자 프로세스를 검사하는 것만으로도 커널의 데이터 구조를 볼 수 있다고 생각합니다.

또 다른 문제는 디버거를 포함한 모든 사용자 공간 프로세스에서 커널을 실행하고 사용자와 통신해야 한다는 것입니다. 커널을 중지하고 디버거가 계속 실행되도록 신뢰할 수는 없습니다.

따라서 두 번째 머신에서 GDB를 실행해야 하는데, 이를 커널 디버깅이라고 합니다.
(http://kgdb.linsyssoft.com/, 문서/sh/kgdb)를 참조하세요.

답변2

KGDB 외에 다른 옵션은 QEMU 및 GDB를 사용하여 커널을 디버깅하는 것입니다. KGDB와 달리 QEMU-GDB 조합에는 머신이 하나만 필요합니다.

관련 정보