본문 바로가기

Tool

아이다(IDA)에 MS 심볼 서버 연동하기

아이다(IDA)로 윈도우 바이너리를 리버싱하게 되면 Functions window에서 함수의 이름이 보이지 않고 'Sub_주소' 으로 보이게 된다.(다음 화면은 winmine.exe를 open한 화면)


이러면 분석이 어려우므로 함수의 이름을 보기 위해 MS 심볼 서버와 연동을 시켜야 한다.

MS 심볼 서버 : MS에서 디버그 심볼을 자동으로 다운로드 받아 디버깅 시 디버그 심볼도 같이 포함되어 디버깅을 편하게 할 수 있게 해준다. 콜스택이 제대로 보여지게 된다.
(참고 : 심볼 서버의 기능을 요약하면 '덤프 파일이 생길 때의 환경을 재현하기 위해서 필요한 심볼들을 자동으로 다운로드하는 것'이다)

Determina PDB Plugin for IDA Pro 라는 IDA 플러그인을 이용하면 IDA에서도 디버그 심볼을 포함시켜서 디버깅이 가능하게 된다.(원래 WIndbg 기능)

압축을 풀고 Plugin 폴더안에 두 개의 폴더 안에 있는 pdb.plw, pdb.p64 라는 파일을 IDA가 설치 된 경로의 Plugins 폴더로 복사한다.
그리고 나서 압축을 푼 폴더를 보면 detpdb.cfg라는 파일이 있는데 IDA가 설치 된 경로의 Cfg폴더로 복사한다.

detpdb.cfg 파일을 메모장으로 열고 다음과 같이 수정한다.

//
// Determina PDB plugin
//

// Symbol search path in the format used by WinDbg debugger. If the option is
// not set, DbgHelp will search the local directory and the paths in the
// _NT_SYMBOL_PATH and _NT_ALTERNATE_SYMBOL_PATH environment variables.

// Download public symbols from the Microsoft symbol server and store them in
// the C:\Symbols directory.           (심볼 파일을 저장할 디렉터리)

// DETPDB_SYMBOL_PATH =
"SRV*C:\\Symbols*http://msdl.microsoft.com/download/symbols";
(심볼 파일을 해당 주소에서 다운받아 지정한 디렉터리에 저장)

// Enable DbgHelp debugging output. Use Sysinternals DebugView to see it.

// DETPDB_DEBUG = YES

내컴퓨터 우클릭->속성->고급->환경 변수 를 클릭한다.


사용자 변수에 새로 만들기를 클릭한 후

변수 이름 : _NT_SYMBOL_PATH
변수 값 : SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols


이제 IDA를 켜서 윈도우 바이너리(winmin.exe)를 open하면 함수이름이 보이는 것을 볼 수 있다.


만약 설정이 잘못됐을 시에는 로그에 ERROR: NO symbols found 메시지가 출력된다.

'Tool' 카테고리의 다른 글

메모리 패치(Memory Patch)  (1) 2009.11.07
디컴파일러(Decompliers)  (0) 2009.11.07
아이다(IDA)에 Hex-Ray 연동  (9) 2009.11.06
아이다(IDA) 사용법  (51) 2009.11.02
시스템 모니터링 툴  (0) 2009.11.01