MBR부터 윈도우 부팅 과정 디버깅!?!

요 몆주간 윈도우 부팅 과정(MBR부터 시작하는...)을 확인할 필요가 있어서 여러가지로 찾던 중, VMware와 IDA Pro를 이용하는 방법을 발견했습니다. 물론, 이 방법 외에도 여러 방법들이 있겠지만, VMware의 빠른 속도와 IDA Pro의 강력함이 더해지니 꽤 괜찮아서 이렇게 쓰고 있습니다. ^^;;;
(혹시 다른 방법을 알고 계시면 살짝 알려주세요 >ㅁ<)/~)

VMware에 디버그 옵션 설정하기

VMware로 생성한 가상 머신이 있는 폴더에 가보면 .vmx로 끝나는 파일이 있을 겁니다. 이 파일을 노트패드와 같은 에디터로 열면 여러 설정값들이 보일텐데, 가장 아래 줄로 이동해서 다음 3줄을 추가합니다.

debugStub.listen.guest32 = "TRUE"
debugStub.hideBreakpoints = "TRUE"
monitor.debugOnStartGuest32 = "TRUE"

위 3줄은 VMware가 디버그 포트를 열어서 GDB로 OS를 디버깅할 수 있게 하는 옵션인데요, 이 옵션을 추가한 뒤 VMware를 실행시키면 바로 시작이 안되고 그냥 멈춰있습니다. ^^;;; 까만 화면이 나오거나 아래처럼 화면 가운데에 녹색 Play 버튼 같은게 나올 수 있는데, 둘다 정상이니 걱정하지 않으셔도 됩니다.


<VMware 디버깅 대기 화면>


IDA Pro로 VMware에 연결하기

VMware가 멈춰있다면 이제 IDA Pro를 실행합니다. 그리고 메뉴의 debug -> Attach -> Remote GDB debugger를 클릭하여 VMware에 붙일 준비를 합니다. "Remote GDB debugger"를 선택하면 옵션창이 표시되는데, "Hostname" 항목에는 localhost를 입력하고 "Port" 항목에는 8832를 입력하면 접속할 준비가 모두 끝납니다. ^^;;;


<Remote GDB debugger 선택 화면>



<Debug Option 설정 화면>


"Choose process to attach to"라는 창이 뜨면 그냥 ID 0번, 즉 <attach to the process started on target>으로 맞춰주세요. ^^;;;

Happy Debugging

처음에 디버거가 붙으면 BIOS의 첫부분부터 시작이 될텐데요, 사실 BIOS의 동작은 크게 안 궁금하니 브레이크 포인트를 0x7c00에 하나 걸어주고 브레이크 포인트가 걸린 뒤부터 진행하면 MBR부터 확인할 수 있습니다. ^^


 

<디버깅 화면>


이제 따라가는 일(?)만 남았군요. ^^)-b
그럼 즐거운 디버깅(?) 하세요 ^^)/~

+ Recent posts