2

Linux 커널의 제어 흐름에서 제어가 인터럽트 위치 (예 : 0x80 시스템 호출)가있는 IDT로 이동하는 것으로 나타났습니다. 그런 다음 컨트롤이 적절한 시스템 호출로 이동합니다. IDT는 부팅시에만 초기화됩니다.IDT (Interrupt Descriptor Table) 수정

실제 커널의 IDT 정보에 대해 자세히 알고 싶습니다. 또한 알고있는 것처럼, 그 어떤 다른 시간에 수정되고 있습니까?

도와주세요.

답변

4

루크 핏을 쓰고 있니?

어쨌든 LIDT/SIDT x86 명령어를 사용하여 IDT를 직접 찾고 조작 할 수 있습니다. IDT 후킹에 대한 정보는 phrack articles과 정확히 일치 할 수도 있습니다.

1

Linux의 경우 IRQ 처리 함수에 대한 선언은 include/linux/interrupt.h에서 찾을 수 있습니다. 일반 처리 코드는 kernel/irq/, 플랫폼/디렉토리는 arch/디렉토리 아래에 있습니다. 예를 들어 arch/x86/kernel/irq.c과 그 디렉토리의 다른 irq * .c 파일을보십시오.

Linux의 IRQ 관련 잠금 규칙 및 메커니즘을 이해하려면 kernel/irc/*. c 파일의 주석을 읽어야합니다. 다른 운영체제는 서로 다른 잠금 규칙을 가질 수 있고 또한 가질 것입니다. 행운을 빕니다!