본문 바로가기

reversing/rootkit

Kernel Debug 준비[windbg]

SMALL

커널 디버깅 준비 과정이다.


Windwos7으로 기본으로 한다.


준비물 : Windbg, Guest PC[VMware windows7]




Guset PC에서의 설정이 필요하다.


관리자 권한으로 bcdedit /copy {current} /d "Debug"  수행한다.


bcdedit : 부팅 항목의 옵션을 추가, 삭제, 수정을 담당하는 프로그램이다.


현재 Session ID에 "Debug" 부팅 옵션을 복사한다는 의미이다.



복사한 결과 시스템 구성에서 부팅을 확인하면 복사된 Debug 옵션을 볼 수 있다.


CMD 창에서 msconfig에서 부팅 옵션을 확인한다.



밑 그림과 같이 수정을 해준다.



여기서 전송속도는 baud rate[보 레이트]이다. 초당 얼마나 많은 심볼[의미 있는 데이터 묶음]을 전송 할지를 나타내는 말이다.


윈도우에서는 115200이 가장 알맞다고 한다.



설정을 하고 나면 위와같이 부팅과정에서 선택할 수있다.


설정을 마무리 지으면 Snapshot을 꼭 찍어두도록 하자.



VMWare의 수정 과정


Guest PC를 돌리는 VMware의 설정에도 약간의 수정이 필요하다.


Guest PC와 Host PC의 연결 통로가 필요하다. 그래야 서로 데이터를 주고 받을 수 있을 것이기 때문이다.


그리고 Named_PIPE에서 이름을 겹치지 않도록 생성하도록 한다.


이름으로 해당 파이프를 찾은 다음 바이트 스트림 통신을 한다? 라고 설명할 수 있다.



예전에 기본 옵션인 COM_1으로 계속 사용하다가 고생한적이 있다.





여기서 연결 통로는 Serial Port인데, UART? 와 비슷한 개념인것 같다.


VMware Setting --> ADD --> Serial Port --> Output to Named Pipe --> 이름 수정 --> 생성





**Guest PC Port와 VMsetting Port  설정시 주의할 점**



여기서 보면 Guset PC의 디버그 포트가 COM1으로 되어 있다.


그러면 VMware Setting에서 Serial Port1번에 파이프를 생성해야한다.


만약에 VMware Setting 에서 Serial Port 2번이면 Geust PC의 COM2를 선택해야한다.


위의 그림에서 내 시리얼 포트는 2번이다. 난 Guest PC의 COM2를 연결하고 디버깅 하였다.





Windbg 설정 후 작동


먼저 심볼을 설정해야 한다. 해당 심볼은 MS에서 제공한다.


여기서 심볼이라고 하면 윈도우에서 구조체에서 각 파일 구조에서 어떤 파일 데이터로 되어 있는지


등 정리 해논게 심볼? 이라는 느낌이다.


그렇기 때문에 주소만 지정해주면 심볼을 받아 올 수 있다.


d:\Symbols;srv*d:\Symbols*http://msdl.microsoft.com/download/symbols

여기서 D:\ 이부분은 당연하지만 심볼을 저장할 드라이브이다.

만약에 외장하드와 같은 저장매체가 D:\ 없다면. C드라이브에 저장해야한다.




그 다음, COM Port를 선택 하고 Port에 앞서 설명했던 이름보 레이트를 설정한다.





그리고 연결 하고 디버깅 모드로 부팅하면 잘된다.




부팅화면에서 Debug를 선택한다.






[출처] Windows 구조와 원리 OS를 관통하는 프로그래밍의 원리

[출처,참고] http://ruinick.tistory.com/96 

LIST