반응형 WinDbg12 Windows 11/10 - MediaTek WiFi 블루스크린, 간결적 끊기는 증상 mtkwl6ex.sys 최근에 블루스크린 문제가 자주 발생해서 메모리 덤프를 오랫만에 간단히 확인해보았다. 기본적은 오류 내용은 DPC_WATCHDOG_VIOLATION 오류로써, DPC(Deferred Procedure call)로 디스패치(Dispatch)와 관련이 있는데, 커널에서 작업을 요청하는 처리하던 중, 문제가 발생한 것이다. 즉 드라이버의 입출력 처리 요청에 문제가 있다는 소리 DPC_WATCHDOG_VIOLATION 이를 해결하기 위해서는 문제를 유발하는 드라이버를 찾아야 한다. 보통 메모리 덤프를 보면, 쉽게 문제를 확인할 수 있다. Windbg 분석에서 지목된 녀석은 바로 mtkwl6ex.sys 라는 미디어텍에서 제공하는 드라이버이다. 어쩐지 자꾸 WiFi가 먹통이 되거나, 행 걸리는 것 같은 느낌이 들더라.. 2022. 10. 4. 메모리 덤프 생성과 분석 기초 윈도우에서 메모리 덤프 분석은 난이도가 높고 넓어서, 하지만 운영 중 발생하는 문제점들을 해결하는 것 역시 관리의 중요 이슈이기에, 여기서 다루어야 한다고 판단하였다. 아마 문제 해결을 원활히 하기 위해서는 커널 분석뿐만 아니라 시스템 영역을 전반적으로 이해하고, Windbg가 숙달되었을 때, 원활한 분석을 진행할 수 있을 것이다. 여기에서 설명하는 정도로 장애시 커널 분석을 원활히 진행하기는 어렵지만, 블루스크린의 처리 프로세스에 대해 이해하고, 메모리 덤프를 생성하는 것과 일반적인 분석 방법론에 대해 이해할 수 있도록 하여, 여러분들이 더 큰 그림을 볼 수 있는 안목을 만들어, 앞으로 나아갈 수 있게 하고자 함이 목표임을 이야기하고 진행하도록 하겠다. BSOD (Blue Screen of Death).. 2022. 9. 13. 윈도우 구조 - 커널 진입 - Ntdll.dll 세부 분석 우리가 편지를 쓴다면, 보내는 사람은 “나”라는 이름으로 편지를 보내고, 받는 사람 “너”라는 사람이 편지 내용을 읽고 회신하게 된다. 이 과정 속에 실질적인 편지 배달은 우체국에서 진행하게 된다. 우체국은 중간에서 편지를 각 지역별로 구분한 후, 공통된 배달 방식에 맞게 구분하여 편지를 배달해 주는 것이다. 이와 같은 원리는 시스템에서도 볼 수 있다. 편지와 비교해 본다면, “나”는 응용프로그램으로 사용자의 입력이나, 처리 요청을 받아 개발 의도에 맞게 가공하여 커널에 처리를 요청하게 된다. 그리고 커널은 편지에서 “너”라고 할 수 있다. 이 둘간의 전달 역할을 해주는 것이 서브시스템과 Ntdll.dll로써, 서브시스템은 바로 우편배달부처럼 각 지역 요청들을 수집하여 우체국에 전달하고 이를 우체국과 유.. 2022. 4. 2. [WebBook] 윈도우 구조 - 시스템 프로세스(Windows Startup Process) - 서브시스템 관리자 Csrss.exe Client-Server Runtime Subsystem의 약자로, 앞서 Smss가 로드하는 3개의 서브시스템 중 하나로, 윈도우 서브시스템이라고도 불리우며, 윈도우상에서 실행되는 프로세스와 스레드들의 관리를 담당한다. Csrss.exe(이하 Csrss)는 실행시 Basesrv.dll(Microsoft Windows NT Base API Server Library), Winsrv.dll(Windows Server Library), Csrsrv.dll(Client Server Runtime Process)을 로드하여 콘솔 윈도우(Console windows) 처리, 프로세스와 스레드 생성과 삭제, 16비트 가상 DOS 머신(VDM) 프로세스를 위한 기능 일부 및 SxS(Side-by-Side)를 지원하게 .. 2022. 2. 28. Windbg - !(extension) 확장 명령 그리고 닷넷 디버깅 !(Extension)은 Windbg에서 사용할 수 있는 스크립트 같은 확장 명령으로, 플러그인 같은 기능이다. Windbg 플러그인은 Dll로 제공하는데 우리가 흔히 사용하는 확장 명령어(!analyze, !vm, !process)들도, Windbg 설치시 기본적으로 함께 Dll로 설치 되기 때문에 사용이 가능한 것이다. 이러한 확장 기능은 IIS의 ASP와 같은 닷넷(.NET) 디버깅 혹은 SQL 디버깅을 수행할 때, 이 기능을 이용해 유용하게 사용할 수 있다. 닷넷 디버깅을 진행 할 때에는 Sos.dll(Extension for managed/.Net debugging)을 추가해 원활한 역분석을 돕게 된다. 이러한 확장 명령 라이브러리를 로드하는 방법은 해당 Dll 파일을 Windbg 디렉토리(C:.. 2022. 2. 13. Windbg - lm 드라이버 확인 Windbg에서 lm 명령은 List Loaded Modules의 약자로 본 명령어를 통해 커널에 올라온 시스템 전역 모듈을 확인할 수 있으며, 로드된 커널과 드라이버, 그리고 시스템 전역 Dll들을 확인할 수 있다. 주로 사용하는 옵션은 t(시간 정보 표시), n(모듈 이름)을 표시하고, m 명령을 통해 모듈을 검색할 수 있다. 특히 이를 통해 시스템에 로드된 드라이버를 확인하거나 자신이 원하는 심볼이 로드되었는지 확인할 수 있고, 이용 가능한 메모리 범위를 확인할 수 있어, 버퍼 오버런(Buffer overrun, 시스템에서 발생하는 오류)과 같은 오류에 대해서도 확인이 가능하다. 그리고 커널 생성의 처리 흐름에 대한 실제 코드인 어셈블리 코드를 확인해 보고자 한다면 진행 순서에 표시한 함수명을 Wi.. 2022. 2. 13. 시스템 시작, 커널 생성 MBR과 부트 섹터를 지나 부트 로더인 Ntldr(비스타 이후 Winload.exe로 변경되었다)를 통해 BCD(Windows Boot Manager)의 실행까지 알아보았다. 이후 BCD는 지정된 시간 동안 입력이 없으면, 기본적으로 지정된 운영제체를 실행하여 부팅을 위한 윈도우 커널 초기화 작업을 진행하게 된다. 이때 부트 파티션에서 커널 초기화에 필요한 적절한 커널(Ntoskrnl.exe외 3가지) 파일과 HAL(Hardware Abstraction Layer) 이미지 등을 로드하고, 레지스트리 %SystemRoot%\System32\Config\System을 HIVE(연결) 하여 디바이스 드라이버를 로드하는 작업을 진행하게 된다(레지스트리에 대해서는 추후 커널과 유저의 소통에서 다룬다). 커널 초기.. 2022. 2. 13. Windbg - Crash Dump 발생시 기본 체크 사항들 Crash Dump 분석 체크 리스트 여기서는 덤프 분석 시 기본적인 확인할 사항을 정리 해본 것 입니다. 해당 상황에 아래 확인 사항들을 보시면 문제점 해결하시는데 도움이 되실 겁니다. 기본 사항 내부 자료 검색 Google 혹은 Microsoft Search에서 알려진 이슈가 있는지 검색 (가끔 답을 바로 찾을수도..) 툴을 이용해서 저장한 Dump (자동 혹은 수동으로 생성..) OS/SP 버전 (서비스팩) OS언어 Debug 시간 System 가동 시간 컴퓨터 이름 .kframes 100 Application Crash or hang 일때 기본 분석 (!analyze –v 또는 행이라면 !analyze –v –hang) Crash 와 hang의 Critical Sections 확인 (!locks .. 2020. 11. 27. Windbg Preview - Time Line Travel 분석 오늘 Microsoft Store를 방문하여 새로운 버전의 Windbg가 나온것을 알게되었다. Preview 상태이긴 한데, 어떤 변화가 있는지 궁금하여 설치해보고, 놀라움을 감출수 없었다. 기존 Windbg에서 보여주던 불편했던 UI가 사라지고, Debugging로 진화하고 있는 모습을 알 수 있다. 어떤 종류를 디버깅 할 수 있는지 File 메뉴를 통해 확인해본 결과, Remote 부터 프로세스, 코드 소스등을 기존과 동일한 수준으로 지원한다. 그리고 직관적이라서 사용성이 편리하다. 예전에는 symbols 설정한는 것도 일이였는데, 심볼 설정도 자동으로 구성되니, 기존 커맨드 명령을 통해 사용하고 초기 설정을 진행해야 했다면, 이런 부분을 해결해 놓은 버전이니 보다 쉽게 사용이 가능할 것 같다. 그리.. 2020. 11. 24. 이전 1 2 다음