2012. 4. 16. 01:42
     

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
그럼 즐거운 디버깅(?) 하세요 ^^)/~


Android App

Posted by 호기심 많은 kkamagui(까마귀, 한승훈)

댓글을 달아 주세요

  1. Favicon of http://www.osx86.org BlogIcon 2012.04.16 14:54  댓글주소  수정/삭제  댓글쓰기

    오오 세상참 좋아졌 ...

  2. Ilho 2012.04.17 01:31  댓글주소  수정/삭제  댓글쓰기

    WINDBG가지고 Boot Debugging하는것도 괜찮을것 같습니다.
    http://l0werring.wordpress.com/tag/bootdebug/

    물론 IDA PRO가 많이 편리하긴 하죠. :)

  3. 소유섭 2012.04.17 09:35  댓글주소  수정/삭제  댓글쓰기

    한승훈님 전 LG CNS에 다니는데 멀티코어와 SI라는 주제하에 제플랫폼을 외치고 있는 광야의 전도사입니다.

    한선생님의 멀티코어 OS 제작 등 멀티코어에 대하여 이야기를 나누고 가능하다면 강의 부탁도 드리고 싶은데..

    진짜는 강의 요청드리는 겁니다. 멀티코어 관련 여러분을 강의 요청드리고 있는 중입니다.

    제 연락처는 010-5773-2025, yssoh@lgcns.com입니다.

  4. Favicon of http://cafe.naver.com/clubc BlogIcon 암겨혀 2012.05.07 17:37  댓글주소  수정/삭제  댓글쓰기

    혹시 저걸로 자작OS 디버깅 가능하나요? 맨날 bochs 칙칙한 화면만 봤는데..
    gdb라니.. 자작OS 디버깅 되면 옵션 잘 주면 혹시 C 커널도 어셈블리 레벨이 아니라 C레벨에서 디버깅할수 있는 방법이 있을지도 모르겠네요 킁

  5. 쟁이 2012.06.05 23:50  댓글주소  수정/삭제  댓글쓰기

    오~ IDA Pro가 상용버전인가요? 저는 Freeware 버전을 쓰는데 GDB 옵션은 안나오더군요.
    만약 IDA Pro가 없으면, MinGW/Cygwin의 GDB를 사용해도 되는걸까요?

    저기 IDA Pro에서 BIOSAmdBootLoader라고 주소가 나오는데, 이건 어떻게 가능한건가요?
    IDA Pro가 address를 보고 그리 알려주는 건지, BIOS 특유의 시그니쳐나 매직넘버가 있는건지요?
    만약 IDA Pro가 아닌 일반 GDB 툴이라면 저게 바이오스 부분인지 아닌지를 어땋게 알 수 있는지 궁금하네요.

    • Favicon of https://kkamagui.tistory.com BlogIcon 호기심 많은 kkamagui(까마귀, 한승훈) 2012.06.20 13:42 신고  댓글주소  수정/삭제

      IDA Pro 상용버전을 사용하고 있습니다. ^^;;;;

      그리고... BIOSAndBootLoader라고 나온 부분은 IDA의 Segment 창을 띄운다음 제가 임의로 세그먼트를 나누어 준 겁니다.

      사실 IDA Pro는 GDB로 프로그램을 디버깅한다고 인식하구요, 실제로는 VMware가 BIOS부터 부팅되는 과정을 GDB와 연동해서 데이터를 전달해주는 방식이더라구요.

      사실 GDB는 그냥 인터페이스 역할만 하는거고, 실제로는 VMware가 주도한다고 보시면 될 것 같습니다. ^^

  6. Favicon of http://cafe.naver.com/clubc BlogIcon 암겨혀 2013.09.08 16:24  댓글주소  수정/삭제  댓글쓰기

    알아냇습니다 으헣헣...
    의외로 엄처어어어어엉 간단하더라고요
    mint64os 홈피에 올려놧어요 ㅎ

  7. phantom0378/감자돌이 2013.09.14 12:20  댓글주소  수정/삭제  댓글쓰기

    우와 암겨혀님이다

  8. Favicon of https://sone.tistory.com BlogIcon Sone 2013.10.23 13:40 신고  댓글주소  수정/삭제  댓글쓰기

    하기전에 VM의 CPU 코어 갯수가 1개인지 확인해야됩니다...
    2개 이상으로 해버리면 디버깅이 올바르게 되지 않습니다.

  9. Favicon of https://jyj850714.tistory.com BlogIcon 블르샤이닝 2015.04.16 16:32 신고  댓글주소  수정/삭제  댓글쓰기

    jyj850714.tistory.com

    퍼갑니다^^ 혹시라도 안된다하시면 비공개로 하겠습니다. 좋은하루되십시오

  10. Favicon of http://neurosurgeryhub.org/member.php?action=profile&uid=56516 BlogIcon gongju0020 2020.11.19 23:48  댓글주소  수정/삭제  댓글쓰기

    관리자의 승인을 기다리고 있는 댓글입니다

  11. Favicon of https://tinyurl.com/fynoci96 BlogIcon kms8819 2020.11.26 02:24  댓글주소  수정/삭제  댓글쓰기

    관리자의 승인을 기다리고 있는 댓글입니다