WinDbg 메모리 덤프 분석 1
Reverse Engineering 2023. 7. 2. 19:59 |컴퓨터를 사용하다 보면 알 수 없는 이유로 프로그램이 멈출 때가 있다. 내 컴퓨터에서 그런 문제가 발생한다면 바로 디버깅 해 볼 수 있지만 다른 장소의 컴퓨터에서 발생하는 경우에는 바로 디버깅할 수 없다. 이럴때는 아래 링크를 참고해 메모리 덤프 파일을 생성하고 분석해 볼 수 있다.
2023.07.02 - [Reverse Engineering] - BSOD Crash on Crtl + Scroll 매뉴얼 메모리 덤프
프로세스 주소: ffffc58f9a4df080
스레드 주소: ffffc58f9a506080
아래와 같은 OnHangBtn 함수가 실행중이었다. 프로그램이 멈춘 이유를 찾았으니 쉽게 해결 할 수 있다.
void CLabAppDlg::OnHangBtn()
{
while (1)
{
// do nothing
;
}
}
만약 소스 파일이 없는 프로그램이라면 아래 내용을 계속 진행한다.
레지스터 컨텍스트까지 바꾸면 LabApp.exe 프로세스의 실행중이던 스레드 스텍 프레임으로 바뀐다. 그런데 제일 마지막에 실행되었던 OnHangBtn 함수 이름이 표시되지 않고 주소로만 표시된다.
※ 참고
'.thread /p ffffc58f9a506080' 명령으로 프로세스, 레지스터 컨텍스트를 한번에 바꿀 수도 있다.
eax 레지스터에 1을 넣고 test eax, eax 연산을 진행한다. eax를 AND 연산하면 0이 아니기 때문에 ZF는 0이고 rip(eip)는 0x401b27로 무한히 돌아가게(jmp) 된다. 문제의 원인이 파악 되었다.
'Reverse Engineering' 카테고리의 다른 글
BSOD Crash on Crtl + Scroll 매뉴얼 메모리 덤프 (1) | 2023.07.02 |
---|---|
WinDbg 버전(타임스템프) 일치하지 않는 심볼파일 로드하기 (0) | 2023.07.02 |
실행중인 프로세스 메모리 덤프 생성 ProcDump (0) | 2023.06.30 |
Collecting User-Mode Dumps 유저모드 응용 프로그램 크래시 덤프 (0) | 2023.06.30 |
Generate a kernel or complete crash dump 커널/전체 메모리 크래시 덤프 생성 (0) | 2023.06.29 |