이 상품은 구매 후 지원 기기에서 예스24 eBook앱 설치 후 바로 이용 가능한 상품입니다.
|
1장. WinDbg에 대해1 WinDbg란1 WinDbg의 주요 기능2 WinDbg의 용도3 WinDbg와 SoftICE 2 WinDbg 디버깅의 종류1 유저모드 디버깅과 커널모드 디버깅1 유저모드 디버깅2 커널모드 디버깅2 라이브 디버깅과 덤프 디버깅1 라이브 디버깅2 덤프 디버깅3 유저 덤프와 커널 덤프1 유저 덤프2 커널 덤프3 WinDbg 디버깅 용어1 디버거와 디버기2 블루스크린3 버그체크4 디버그 심볼 파일1 비주얼 스튜디오 2017에서 MyApp 속성 설정2 비주얼 스튜디오 2017에서 MyDrv 속성 설정3 비주얼 스튜디오 2015에서 MyApp 속성 설정4 WinDbg 지원 범위1 윈도우 NT 계열 운영체제2 64비트 지원5 WinDbg 명령1 WinDbg 명령이란1 일반 명령2 메타 명령3 확장 명령2 명령줄 구분3 명령별 사용 조건6 실습 환경 구성1 WinDbg 다운로드2 비주얼 스튜디오 2017과 WDK 설치3 Windows SDK로 WinDbg만 설치4 WinDbg 버전5 예제 구성7 정리2장. WinDbg 시작하기1 유저모드 라이브 디버깅1 WinDbg 실행2 디버거 연결1 WinDbg에서 MyApp.exe 실행하기(디버거에서 디버기 실행하기)2 실행 중인 MyApp.exe에 WinDbg 붙이기(디버거를 디버기에 붙이기)3 MyApp.exe 실행 중 문제가 발생했을 때 자동으로 WinDbg 실행하기3 심볼 파일 로드1 운영체제 심볼 경로 설정과 로드2 MyApp.exe 심볼 경로 설정과 로드 4 실행 및 정지 5 브레이크 포인트 설정과 해제1 브레이크 포인트 설정 2 브레이크 포인트 해제6 콜 스택 확인7 소스 연결해서 소스 창 열기8 Trace, Step으로 진행9 지역변수 확인10 와치 창으로 전역변수 확인2 커널모드 라이브 디버깅1 디버거 시스템을 디버기 시스템에 붙이기1 가상머신 연결2 VirtualKD로 연결3 네트워크로 연결4 시리얼 케이블로 연결5 IEEE 1394(firewire) 케이블로 연결하기6 운영체제별 디버기 설정2 MyDrv.sys 드라이버 실행3 정지 및 실행4 심볼 파일 로드5 브레이크 포인트 설정과 해제6 콜 스택 확인.7 소스 연결해서 소스 창 열기8 Trace, Step으로 진행9 지역변수 확인10 전역변수 확인3 정리3장. WinDbg로 디버깅하기1 유저모드 덤프 디버깅1 덤프 파일 수집1 윈도우 10에서 덤프 파일 수집2 윈도우 XP에서 덤프 파일 수집2 덤프 파일 열기3 모듈 정보 보기4 심볼 맞추기5 콜 스택 보기1 콜 스택 창에서 마지막 함수 살펴보기2 문제가 발생한 이유 추측하기6 로컬 창으로 변수 보기1 죽은 함수를 호출한 함수 살펴보기2 문제가 발생한 이유 분석하기3 수정 방법 찾기7 와치 창으로 메모리 보기8 메모리 창으로 메모리 보기9 프로세스와 스레드 보기2 커널모드 덤프 디버깅1 덤프 파일 수집2 덤프 파일 열기3 !analyze -v 메시지 보기4 모듈 정보 보기5 심볼 맞추기6 콜 스택 보기1 콜 스택 창에서 마지막 함수 살펴보기2 죽은 이유 추측하기7 로컬 창으로 변수 보기1 죽은 함수를 호출한 함수 살펴보기2 문제가 발생한 이유 분석하기3 수정 방법 찾기 8 와치 창으로 메모리 보기 9 메모리 창으로 메모리 보기3 정리4장. 유저모드 디버깅 케이스 스터디1 기본 케이스 스터디1 잘못된 메모리 사용2 프로세스의 CPU 사용률이 100%를 기록할 때1 프로세스 익스플로러를 이용한 방법2 성능 모니터를 이용한 방법3 WinDBG를 이용한 방법3 데드락이 발생해 멈춘 경우1 이벤트 찾기 2 크리티컬 섹션 찾기4 핸들 누수1 작업 관리자로 누수 확인2 성능 모니터로 누수 확인 3 성능 로그를 통해 누수 확인 4 프로세스 익스플로러를 이용한 핸들 누수 찾기5 WinDbg로 핸들 누수 찾기5 메모리 누수1 작업 관리자로 누수 확인2 성능 모니터로 누수 확인3 UMDH로 확인6 버퍼 오버플로우2 어셈블리와 스택의 이해1 어셈블리 기초2 스택의 이해3 호출 규칙4 64비트 스택의 이해1 64비트 콜 스택 추적2 64비트 콜 스택에서 파라미터 찾기3 고급 케이스 스터디1 예제 1: 잘못된 파라미터 전달2 예제 2: Drwtsn32 로그 파일 분석3 예제 3: MAP 파일을 이용한 분석4 윈도우 에러 리포트4 WinDbg Preview1 WinDbg Preview 설치2 WinDbg Preview Time Travel Debugging5 정리5장. 커널모드 디버깅 케이스 스터디1 기본 케이스 스터디1 BugCheck 0x502 BugCheck 0xD63 BugCheck 0xC14 BugCheck 0xC4-60 5 BugCheck 0xCE6 BugCheck 0x7F7 BugCheck 0xD18 BugCheck 0xF79 커널모드 행 디버깅10 커널모드 데드락 디버깅 2 고급 케이스 스터디1 BugCheck 0xA(분석 가능한 예제) 1 윈도우 XP에서 분석2 윈도우 10에서 분석2 BugCheck 0xA(분석 불가능한 예제)3 BugCheck 0x19(분석 가능한 예제)4 BugCheck 0x19(분석 불가능한 예제)5 BugCheck 0x8E3 실전 케이스 스터디1 BugCheck 0x50: UNICODESTRING2 BugCheck 0x50: 숨겨진 콜 스택3 BugCheck 0x50: 해제된 핸들4 BugCheck 0x1A: 페이지 손상5 BugCheck 0xC5: 풀 헤더 손상6 BugCheck 0xC5: 해제 리스트 손상7 BugCheck 0x133: DPCWATCHDOGVIOLATION8 Hang: CPU 과점유9 Hang: 좀비 프로세스10 Hang: 완료되지 않는 IRP11 Hang: 위험한 락 사용4 커널 리버싱 스터디1 핸들 테이블 탐험 I 2 핸들 테이블 탐험 II3 프로세스 경로 획득4 섹션 오브젝트에서 파일 경로 획득5 드라이버 확인 프로그램1 드라이버 확인 프로그램 실행 2 명령 프롬프트에서 설정6 정리6장. 고급 디버깅1 WinDbg 사용 팁1 조건 브레이크 포인트2 심볼 스토어 생성3 유저모드 원격 디버깅1 문제의 응용 프로그램(notepad.exe)이 실행 중인 PC12 WinDbg를 실행해 실제로 디버깅을 하려는 PC24 커널모드 원격 디버깅5 커널모드 디버깅으로 유저모드 디버깅하기 16 커널모드 디버깅으로 유저모드 디버깅하기 27 Event ID 2019 비페이징 풀 부족 원인 찾기2 WinDbg Tools1 breakin.exe2 logger.exe, logviewer.exe3 ADPlus.exe(vbs) 1 크래시 모드2 행 모드3 WinDbg 스크립트1 첫 번째 스크립트2 두 번째 스크립트3 세 번째 스크립트4 WinDbg 확장 DLL 1 확장 DLL 예제 2 확장 DLL 만들기 5 정리7장. WinDbg 명령어1 일반 명령1 dt(Display Type) 2 S(Search Memory) 3 ds, dS(Display String) 4 da, du(Display Memory: ASCII, Unicode) 5 dl(Display Linked List)6 dds(Display Words and Symbols) 7 x(Examine Symbols) 8 uf(Unassemble Function) 9 ub(Unassemble - b parameter)10 ?(Evaluate Expression) 2 메타 명령 1 .kdfiles(Set Driver Replacement Map) 2 .reboot(Reboot Target Computer) 3 .crash(Force System Crash) 4 .dump(Create Dump File) 5 .hh(Open HTML Help File) 6 .symfix(Set Symbol Store Path) 7 .reload(Reload Module) 8 .enableunicode(Enable Unicode Display) 9 .enablelongstatus(Enable Long Integer Display) 10 .formats(Show Number Formats) 3 확장 명령1 !object2 !handle 3 !process4 !stacks5 !drvobj 6 !devobj7 !devstack8 !fileobj9 !foreachmodule10 !vm 11 !sym 12 !poolfind 13 !dmlproc 14 !fltkd 4 MEX 디버그 익스텐션 명령1 !mex.help 2 !mex.mheap 3 !mex.p 4 !mex.addr 5 !mex.eresource(eres)6 !mex.deviceobject(devo)7 !mex.driverobject(drvo)8 !mex.dtpool(dtp) 9 !mex.evt 10 !mex.fileobject(fo)11 !mex.foreachcpu(fec)12 !mex.foreachprocess(fep)13 !mex.listticks(lticks)14 !mex.mirp15 !mex.mirpfind16 !mex.mreg17 !mex.obj 18 !mex.parsemem19 !mex.tag 20 !mex.tasklist(tl) 21 !mex.vadmodules(vadm) 22 !mex.vss 23 !mex.wq 24 !mex.count 25 !mex.cut 26 !mex.ddt 27 !mex.dumpinfo 28 !mex.grep 29 !mex.t 30 !mex.dumpstackstrings(dss) 31 !mex.executive 32 !mex.listthreads(lt) 33 !mex.ready 34 !mex.running(cpu) 35 !mex.searchthreadstacks(sts) 36 !mex.standby(sby) 37 !mex.suspended 38 !mex.uniquestacks(us) 39 !mex.userrequest 40 !mex.wrlpcreceive(lpcs) 41 !mex.wrresource 42 !mex.imports 43 !mex.mods 5 정리
|
|
이 책은 7개의 장으로 구성돼 있다. 다음에서 각 장의 내용을 소개하면 다음과 같다.제1장에서는 WinDbg의 기본 개념을 설명한다. WinDbg를 사용하려면 알아둬야 하는 주변 지식이나 용어들에 대한 내용이므로 가벼운 마음으로 훑어보면 된다.제2장에서는 WinDbg를 처음 사용한다고 가정하고 WinDbg를 실행시키는 방법부터 시작해 초기 설정을 하고 간단한 디버깅을 해보는 것까지 설명한다. WinDbg로 응용프로그램과 커널모드 드라이버를 어떻게 제어하는지, 응용프로그램이나 커널모드 드라이버의 내용을 어떻게 확인하는지 보게 될 것이다.제3장에서는 WinDbg로 문제를 분석하는 방법을 다룬다. 문제가 발생한 상황에서 어떤 식으로 원인을 찾아가는지 간단하게 살펴본다. 덤프 파일을 분석하는 예제로 진행하기 때문에 덤프 파일을 분석할 줄 모른다면 제3장을 참고해 기본적인 분석 절차를 배울 수 있다.제4장에서는 유저모드에서 발생할 수 있는 여러 가지 문제 상황을 분석하는 예를 보인다. 흔하게 발생하는 문제로 잘못된 메모리 참조, 프로세스 행, 프로세스 데드락, 핸들 릭, 메모리 릭 등의 예제를 보인다. WinDbg를 비롯해 다양한 툴로 문제를 분석하고 원인을 찾아나가는 방법을 보게 될 것이다. 고급 주제로 들어가면 어셈블리도 참고해야 한다는 사실을 알게 될 것이다. 어셈블리를 잘 모른다면 제4장을 참고해 기초적인 내용을 공부할 수 있다.제5장에서는 커널모드에서 발생할 수 있는 여러 가지 문제 상황을 해결해 나가는 예를 보인다. 커널모드에서 발생하는 문제란 사실 블루스크린을 의미한다. 블루스크린이 발생했다고 해서 모두 같은 블루스크린이 아니라는 사실을 알게 될 것이다. 블루스크린마다 문제를 나타내는 번호와 메시지를 담고 있으므로 대표적인 유형들을 예제로 마련했고 이것들을 분석하는 방법을 보게 될 것이다. 그리고 다양한 실전적인 예제와 커널 분석 예제를 통해 심도 깊은 학습도 가능하도록 배려했다.제6장에서는 WinDbg를 좀 더 편리하게 사용하는 방법과 디버깅에 도움을 주는 여러 툴을 사용하는 방법을 설명한다. 사실 WinDbg는 기본적인 디버깅뿐만 아니라 디버깅을 도와주는 엄청난 기능들이 포함돼 있는 강력한 도구다. 이런 엄청난 기능들을 모두 알고 있다면 디버깅하는 작업은 기본적인 방법만 알고 있을 때보다 훨씬 더 간단해진다. 어떤 것들이 있는지 알지 못해서 못쓰는 것이 문제이므로 유용한 몇 가지를 소개해서 WinDbg의 편리한 기능을 활용하게 한다.제7장에서는 유용한 WinDbg 명령들을 사용 예제 중심으로 설명한다. 사용 예제 중심이란 명령 자체에 대한 설명 중심이 아니라는 의미다. 명령은 대체로 다양한 기능을 수행할 수 있는데, 이것들을 종합적으로 설명하다 보면 설명만 복잡해지고 이해도가 떨어지게 된다. 따라서 설명은 가급적 줄이고 사용 예제를 도입해 어떻게 사용하는지를 실제로 보여주는 데 초점을 맞췄다.
|