Reflector의 기능을 살펴보는 마지막 장으로 오늘은 Reflector의 리소스 분석 기능과 함께 5.x 버전부터 대폭 강화된 서드파티 플러그인들을 살펴보도록 하겠습니다. 닷넷 프레임워크 기반의 응용프로그램에서 리소스는 두 가지로 구분되는데, 하나는 기존의 Win32 리소스를 뜻하며 또 하나는 .NET Framework 전용 XML 리소스를 의미합니다.
Reflector가 인식하고 보여줄 수 있는 리소스는 .NET Framework 전용 XML 리소스 및 XML 리소스와 연결된 각종 데이터 파일들입니다. 닷넷 기반 프로그램이 가지고 있는 Win32 리소스를 보기 위해서는 우리가 종전에 알고 있던 방법을 그대로 사용할 수 있습니다. 즉, VIsual Studio .NET 버전의 IDE를 이용하여 해당 바이너리를 열거나 eXeScope, Resource Hacker 등의 유틸리티를 그대로 이용할 수 있습니다.
그리고 Reflector는 이미 컴파일되고 병합된 리소스를 역추적하는 기능만을 제공합니다. Visual Studio 외에 더 전문적인 컴파일 전의 XML Resource 편집기를 찾으신다면 Resourcer를 Lutz Roeder의 웹 사이트에서 같이 다운로드받으실 수 있습니다.
http://www.aisto.com/roeder/dotnet/Download.aspx?File=Resourcer
위에서 특정 항목을 더블 클릭하거나 Space 키를 누르면 데이터를 표시하게 됩니다. 분류할 수 없는 유형의 파일이면 자동으로 바이너리 뷰어가 열리게 되며, 지원되는 그림 파일 형식이면 그림을, 텍스트 파일이면 텍스트를, .resources 파일이면 이 파일의 내용을 출력해 주는 리스트 - 디테일 뷰를 보여줍니다.
그리고 리소스를 추출하고 싶을 때에는 해당 리소스 항목 위에서 오른쪽 버튼을 클릭하고 다음과 같이 메뉴를 선택하거나 - 또는 - 키보드의 F12키를 누릅니다.
이제 Reflector의 기본적인 기능들은 모두 살펴보았습니다. 하지만 Reflector를 더욱 강력하게 해 줄 플러그인들을 살펴보도록 하겠습니다. 이 문서를 작성하는 현재, Reflector 5.x 버전 이후부터는 Microsoft의 오픈 소스 프로젝트 호스팅 사이트인 Codeplex.com에 플러그인 컬렉션이 개설되어 품질높은 Reflector 플러그인들을 다운로드받을 수 있게 되었습니다.
http://www.codeplex.com/reflectoraddins
플러그 인을 하나 받았다면 플러그 인을 설치하기 위하여 보통 다음의 방법을 이용할 수 있습니다. 만약 플러그 인 자체에 내장 설치 프로그램이 있다면 이 프로그램을 직접 이용하여도 됩니다.
그 다음에는 아래와 같은 대화 상자가 나타나는데 여기서 Add버튼을 클릭하고 해당 플러그 인 DLL이 저장된 디렉터리를 지정하여 주시면 됩니다. 플러그 인을 등록한 후에 플러그 인을 사용하는 방법에 대해서는 플러그 인을 다운로드할 때 제공되었던 매뉴얼, 웹 사이트의 설명, 플러그 인 안의 자체 도움말을 참고하여야 합니다.

그리고 몇 가지 주목할만한 플러그인들이 있습니다. 꼭 설치하여 활용해 보시기를 권합니다.

C++ CIL Language: Reflector가 현재 제공하는 MC++은 .NET Framework 버전 1.0 및 1.1을 대상으로 한 것입니다. 최근에 발표된 Visual C++ 8.0의 MC++ 확장 문법으로 디스어셈블한 결과를 보기 원한다면 이 플러그인을 활용하면 됩니다.

Deblector: Reflector를 Debugger 처럼 사용할 수 있게 해주며 동시에 프로세스 연결 기능 등을 구현해 주어 디버깅 작업을 간편하게 만들어주는 유틸리티입니다.

Diff: 서로 다른 버전의 어셈블리를 MSIL 수준에서 비교하는 유틸리티입니다. 이 유틸리티를 이용하면 이미 컴파일된 어셈블리들 사이의 차이점을 조사하거나 문제를 분석하는 데에 도움이 될 수 있습니다.
Reflector 강좌는 여기까지로 합니다. Reflector 플러그 인을 직접 개발하거나 활용하길 원하면 오픈 소스로 공개된 다른 플러그 인의 웹 사이트나 소스 코드를 참고하시면 되겠습니다.
'Software Development > Reflector' 카테고리의 다른 글
| Reflector 강좌 #3: 리소스 분석 및 5.x 버전을 위한 다양한 플러그인 (0) | 2007/04/08 |
|---|---|
| Reflector 강좌 #2: Disassembling & Analyzing (0) | 2007/04/06 |
| Reflector 강좌 #1: 둘러보기 (0) | 2007/04/03 |



