커널을 디버깅 중이며 cr3 레지스터가 언제 변경되는지 알고 싶습니다. eax 및 기타와 같은 범용 레지스터에 감시 점을 설정하는 방법을 알고 있습니다.
문제는 gdb가 제어 레지스터에 액세스 할 수 없기 때문에 cr3에 감시 점을 설정해도 작동하지 않는다는 것입니다.
그렇다면 qemu 모니터에서 감시 점을 설정할 수 있습니까? 그렇다면 어떻게?
죄송합니다. QEMU 모니터에서이 작업을 수행 할 방법이 없습니다. (QEMU 소스에서 target-i386 / helper.c : cpu_x86_update_cr3 ()를 보면 CR3 업데이트에 대해 누구에게도 알리는 작업을 수행하지 않고 새 값을 내부 CPU 상태에 넣는다는 것을 알 수 있습니다. 구조.)
이런 종류의 일을 위해 할 수있는 최선의 방법은 두 개의 디버거로 실행하는 것입니다 (하나는 QEMU의 gdbstub에 연결되어 게스트와 통신하고 다른 하나는 QEMU 자체를 직접 디버깅). 그런 다음 QEMU의 cpu_x86_update_cr3 ()에 중단 점을 설정하고 무슨 일이 일어나는지 볼 수 있습니다. 이를 효과적으로 수행하려면 QEMU의 내부에 대해 상당한 양을 알아야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다