Windbg 개괄, Windbg는 어떠한 때에 왜 쓰는가.
윈도우 디버깅 시, 문제 발견 시에 솔직히 말하자면,
windbg로 찾아낼 수 없으면 다른 툴로도 찾아낼 수 없다.
다만 windbg보다도 더 빠르게 찾아낼 수 있는 툴들은 있다. 그러나 windbg로 잡아낼 수 없다면
그건 잡아낼 수 없는 이슈이다. 라고 말할 수 있다.
analyze -v를 손쉽게 할 때에 여기에 얼마나 엄청난 노가다가 있는지 찾아보면
우리가 쉽게 analyze -v를 할 수 있다는게 얼마나 고마운 일인지 알 수 있다.
이거라도 없었으면 전부 프로세스/스레드마다 프레임 옮기고 스택 찍고 로컬 찍고 더서셈하고 난리 브루스를 췄을 것이다.
다른 말로는, 이러한 확장 기능이 더 존재하지만 사람들이 모르는 것도 많다는 것이다.
그러니 잘 찾아보자. 이 내용에 대해서는 추가적으로 포스팅할 예정이다.
1. Windbg의 최고 설명서 F1 도움말
어떠한 명령어가 있다는 것을 알고, 사용법이나 잘 모른다면
F1을 눌러서 검색을 통해 명령어를 보고, 찾은 카테고리에서 이동해가면서
주변 포스팅도 좀 보자. Windbg는 최고의 툴이면서 최고의 해설서를 가지고 있다.
바로 F1에
근데 사람들 생각보다 잘 안찾아본다. 거기에 다 있는데.
어차피 인터넷에 있는 내용도 도움말에서 조금 더 나아간 수준이다.
2. 연속 기술 + 필살기
Windbg는 최고의 툴이라고 했지만, 연속 기술과 필살기를 쓸 수 있는 여러 조합 툴들이 있다.
대표적으로 gflag, umdh, application verifier 등이 있다.
gflag를 통해 전역 디버그 옵션을 걸고,
umdh를 쓴 상태의 덤프를 만들어 메모리 릭을 추적하고,
application verifier를 걸어서 좀 더 예외가 상세하게 나오게 만들 수 있다.
또한 debug diag를 통해 '케이스 바이 케이스'에 대한 덤프를 생성하여 그로부터
덤프 2,3가지를 종합 통계내서 볼 수도 있다.
즉, 요리조리 요리해서 할 수 있는 이 모든 기술을 깊이 있게 하는 사람일수록
디버깅의 초고수일 수 있다.
그러나 windbg 자체를 기막히게 쓰는 사람이 고수이긴하다.
주로 개발자들보다 분석가들이 기막히게 쓴다. 어느 순간 되면 디서셈블에서 막히기 때문이다. ㅋㅋ
하지만 요즘은 C++을 제대로 잘 쓰다보면 사실 디서셈블까지 들어갈 이유는 없다.
그리고 다음에 포스팅하겠지만 반드시 디서셈블을 하지 않아도 되는 상황을 만들어낼 방법도
여러가지가 있다. 사실 디서셈블까지 할 상태면 이미 헬 모드라고 보면 된다.
3. 덤프에 대한 용어 정리
덤프에 대해서 자세히 보게 될텐데 자주쓰는 용어에 대해서 정리를 하고 간다.
용어 | 내용 | 상세 내용 |
CPU 트랩 | 잘못된 주소 참조 등을 발생했을 때 CPU가 트랩 절차를 수행한다. | |
블루스크린 | 윈도우의 운영체제 단에서 발생하거나 사용자가 커널을 살펴보기 위해 일부러 운영체제의 크래시를 유발한 것 | 커널의 메모리나 물리 메모리 전체가 파일에 저장(풀덤프) |
커널 메모리 덤프 | 커널, 윈도우 운영체제 정보를 담은 비교적 작은 덤프의 크기 | 32, 64의 용량이 다르다. |
컴플리트 메모리 덤프 | 물리 메모리 전체의 내용 저장 | 진행 중이던 커널/운영체제/프로세스의 정보들을 담는다. |
유저 덤프 | 실행 중인 애플리케이션이나 서비스에서 크래시 발생 | 메모리의 내용 파일로 저장, 즉, 프로세스의 풀덤프는 프로세스가 사용하던 메모리의 전체 덤프를 뜨므로 메모리 사용량과 일치한다. |
포스트 모텀, 포스트 모텀 디버거 | 사후 처리, 사후처리를 위한 디버깅 연결, 디버거를 포스트 모텀(디버거) 라고 한다. | WINDBG, CDB, 닥터 왓슨, Window Bug Reporting System, Proc Dump 등의미한다. |
디폴트 포스터모텀 디버거 | 레지스트리에 명시되거나 윈도우 기본으로 설정되어 있어 애플리케이션이나 서비스에서 크래시나 이상 발생 시 실행되거나 덤프를 뜰 수 있게 조치를 위하는 기본 디버거 | 기본적으로 따로 설정하지 않으면 윈도우 기본 디버거가 프로세스로 뜨고 저장된다. windbg나 proc dump로 수정할 수 있다. |
4. 도움이 되는 사이트들
예전에 기록이 멈춰버린 홈페이지들도 있지만 그래도 Windbg를 사용하면서 유용한 블로그들이 많다.
다음을 보도록하자.
자주 보게 되는 사이트인데 고수이다.
달토끼 대박나라~!! ^^
미친듯이 살아보자!!!
kuaaan.tistory.com
OSR Homepage - OSR
We're experts in Windows device driver, file system, internals, and debugging. Training, consulting and custom development services available worldwide.
www.osr.com
docs.microsoft.com/ko-kr/sysinternals/
Windows Sysinternals - Windows Sysinternals
Library, learning resources, downloads, support, and community. Evaluate and find out how to install, deploy, and maintain Windows with Sysinternals utilities.
docs.microsoft.com
다음은 국내에 매우 정리가 잘되어있는 블로그의 포스팅이다. 링크만을 가져온다.
악성코드 분석에 도움이 될만한 사이트 정리
악성코드 분석에 도움이 될만한 사이트 정리1. 자주 쓰이는 악성코드 분석툴 2. 온라인 바이러스 ...
blog.naver.com
악성코드 분석에 도움이 될만한 사이트 정리
악성코드 분석에 도움이 될만한 사이트 정리1. 자주 쓰이는 악성코드 분석툴 2. 온라인 바이러스 ...
blog.naver.com