커널 디버깅 준비 과정이다.
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
'reversing > rootkit' 카테고리의 다른 글
WinDBG 명령어 [SXE,sxe] -SYS 분석 (0) | 2016.08.12 |
---|---|
EPROCESS 구조체 [ 프로세스 숨기기_1 ] (0) | 2016.08.11 |
장치 노드[Device node], 장치 개체[Device Object] 개념 (0) | 2016.08.07 |
Driver 개념 (0) | 2016.08.02 |
Anti Disassembly[안티 디스어셈블] (0) | 2016.08.01 |