본문 바로가기

디버그37

[펌]Process Explorer 를 이용한 High CPU Issue의 진단 Process Explorer는 여러 모로 Application Troubleshooting에 유용한 툴이다. 개인적으로 경험상, High CPU나 DLL Injection에 대한 감시 등에 해당 Tool을 유용하게 사용하곤 했다. 일단, http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx 이곳에서 Process Explorer를 Download 받을 수 있다. 처음 실행하면, 상위와 같은 UI 화면을 확인 할 수 있는 데, View에서 Show Low Pane이 선택되어 있다면, 아래의 Pane을 확인할 수 있으며, 상위의 그림과 같이 선택된 Process의 Module list를 확인할 수 있다. 이는 알 수 없는 DLL의 injection을.. 2012. 2. 1.
BAD_POOL_CALLER(c2) 덤프 분석 BSOD는 "Blue Screen Of Death" 약어로 디바이스 드라이버를 개발하다 보면 종종 만나는 오류입니다. 이번 시간부터 제가 경험한 오류를 가지고 윈도우에서 만들어 준 덤프 파일을 가지고 같이 분석해 보는 시간을 갖도록 하겠습니다. BAD_POOL_CALLER 오류는 IRQL이 잘못된 경우와 메모리 해제한 메모리 번지에 접근해서 또 다시 해제할 경우 주로 발생하는 오류입니다. 일단 BAD_POOL_CALLER 오류가 발생한 덤프 파일을 보고 같이 분석을 해 보겠습니다. 덤프 파일을 Windbg를 이용하여 열면 위와 같은 화면이 나올 것입니다. 그럼 가장 먼저 해야 할 일은 "!analyze -v"을 입력하는 것입니다. 이젠 분석의 반은 끝난 것입니다. "!analyze -v"입력하면 위와 같.. 2011. 7. 21.
[x86 Windows debugging]Virtual Address Dump http://byung.egloos.com/4521186 Windows 32bit System 하에서 하나의 Process는 대략 2GB(~7fffffff address) Virtual Address 영역을 사용한다. 이는 사용자 모드에서 사용 가능한 가상메모리이며, 커널모드에서는 2GB를 따로 사용한다. (물론, 3gb option을 사용하면, bfffffff 까지 User mode에서 사용가능하고, 나머지 1GB는 kernel이 사용한다. Win32가 2^32 arrange 를 갖는 다고 생각하면, 하나의 Process가 사용할 수 있는 Virtual Address layout는 4GB이며, 이를 Kernel과 User mode에서 나눠 갖는 다고 생각하면 된다.) 이는 Physical Memory와.. 2011. 6. 14.
dt LIST_ENTRY Easy list traversing (dt vs. !list) DebugMachine 11 Dec 2008 1:04 AM Comments 1 “이 문서는 http://www.dumpanalysis.org/blog blog 의 번역이며 원래의 자료가 통보 없이 변경될 수 있습니다. 이 자료는 법률적 보증이 없으며 의견을 주시기 위해 원래의 blog 를 방문하실 수 있습니다. (http://www.dumpanalysis.org/blog/index.php/2007/02/11/easy-list-traversing-dt-vs-list/)” Easy list traversing (dt vs. !list) Linked list 를 검색할 수 있는 방법을 찾기 위해 WinDbg help 에서 dt 명령을 찾아 보았습.. 2011. 3. 14.
인터럽트 2D INT 2D 와 같은 코드가 64비트 OS환경에선 윈디버거 커널 모드시에도 인터럽드가 걸린다든.. 쩝... 2011. 2. 10.
[Windbg Script] Disassembling Routines and Searching for Instructions Sometimes you cannot avoid reading the disassembled code to look for a specific assembly instruction. You may want to see if a particular function is doing some specific operation, using some specific register, or calling other functions. You can do that using the disassembling window or using a dead listing and looking for specific instructions; however, it is error prone and it might take time.. 2011. 1. 19.