그냥 binary editor 으로 뒤져도 되지만 windbg 로 볼 경우 좀더 편하다.

준비물 : 분석할 exe 파일과 그 파일의 pdb

1. F6(File->Attach to a Process..) 으로 분석할 프로세스(exe) 선택.

2. 커맨드 창이 뜨면 .symfix+ c:\symbols 실행

3. File -> Symbol File Path 실행한 후 Browse.. 버튼을 클릭하여 pdb 파일이 있는 폴더를 선택.

4. 프로세스를 계속 실행시킬 경우 F5 키 누르고 멈출려면 Ctrl+Break 키 누름

5. .reload *  과 ld * 으로 심볼 다시 로딩
"ERROR : Symbol file could not be found."  에러는 다른 모듈(exe 가 로딩하는 각종 dll 등)의 심볼을 못찾으므로 발생하는 에러임. .무시

6. 마지막으로 lml 으로 제대로 로딩되었는지 확인... 실행파일의 심볼이 로딩되어 있어야함. 일반적으로 0x400000 위치.

여기까지 pdb를 로딩하는 방법.

이제 이걸 통해서 실제 심볼을 표시해보자.

x 실행파일이름!*검색할심볼명*
ex : x sample!*g_*     <== sample.exe 에서 g_ 가 들어가 있는 모든 심볼 표시
dt 실행파일이름!*검색할심볼명*
ex : dt sample!*g_*     <== sample.exe 에서 g_ 가 들어가 있는 모든 타입 심볼 표시

이러면 심볼이 주루룩 나타난다.

만일 pdb 파일이 실행파일과 싱크(?) 가 맞지 않을 경우에는 강제로 pdb 파일을 로딩해야한다.

.reload /i 실행파일.exe

그리고 다시 lml 으로 제대로 심볼을 로딩했는지 확인하면 끝!!!

마지막으로 팁으로...

심볼 이름으로 브레이크포인트 걸기 : bp 실행파일!심볼이름
특정 심볼(변수)의 정보 보기 : dt 실행파일!심볼이름
특정 심볼에 접근(쓰기)하는 경우 브포 걸기 : ? 실행파일!심볼이름   으로 주소를 찾고   ba w4 주소  를 입력함.
실행되고있는 스레드 정보 보기 : Alt + 9
해당 스레드의 콜스택 : 스래드 선택하고 kb
특정 명령어의 정보보기 : .hh 명령어

이상 끝!


+ Recent posts