dotPeek 기능

.NET 어셈블리를 C# 또는 IL로 디컴파일

dotPeek은 모든 .NET 어셈블리를 해당 C# 코드로 디컴파일하고 선택적으로 기본 IL 코드를 표시할 수 있습니다.

dotPeek UI 개요

라이브러리, 실행 파일 등 다양한 형식 지원

dotPeek은 라이브러리(.dll), 실행 파일(.exe), 메타데이터 파일(.winmd) 등, 여러 형식과 호환됩니다.

dotPeek은 .baml 파일을 디컴파일하여 XAML UI 정의를 재구성할 수도 있습니다.

기존 어셈블리 및 실행 파일 외에도 dotPeek 오픈 아카이브(.zip, .vsix 또는 .nupkg) 및 폴더도 이용할 수 있습니다. 또한 온라인 패키지 소스에서 NuGet 패키지(종속 요소 포함)를 검색하여 로드하거나 Visual Studio 프로젝트의 packages.config 파일에 나열된 패키지를 로드할 수 있습니다.

소스 코드 보기(있는 경우)

소스 코드 보기(있는 경우)

디컴파일된 코드는 없는 것보다 낫지만 어셈블리를 해당 소스 코드와 일치시킬 수 있다면 이 이점을 활용하지 않을 이유가 없겠죠? dotPeek은 PDB 파일 기반의 로컬 소스 코드를 식별하거나 Microsoft Reference Source Center 또는 SymbolSource.org와 같은 소스 서버에서 소스 코드를 가져올 수 있습니다. 또한 dotPeek은 PDB 파일을 생성할 수도 있습니다.

메뉴 표시줄에서 탐색 모드의 드롭다운을 사용하여 dotPeek이 어셈블리를 디컴파일하게만 할지, 가능한 경우 소스 코드를 검색하도록 할지 선택하세요.

컴파일러 생성 코드 표시

컴파일러 생성 코드 표시 또는 숨기기

특정 컴파일러 변환을 표시하도록 선택할 수 있으므로 dotPeek이 표시하는 코드 구조가 컴파일러가 변환하는 것과 매우 유사해집니다. 이를 통해 무엇보다 컴파일러가 람다, 클로저, 자동 속성을 처리하는 방법을 확인할 수 있습니다.

dotPeek의 프로세스 탐색기 창

실행 중인 프로세스 탐색

Process Explorer(프로세스 탐색기) 창에는 현재 실행 중인 모든 프로세스 목록이 표시되며, 해당 모듈을 탐색하거나 .NET 어셈블리에 해당하는 항목을 역컴파일링할 수 있습니다. 기본 프로세스 및 모듈을 표시하거나 숨기고, 프로세스 계층 구조 뷰를 켜도록 선택할 수 있습니다.

찾고 있는 모듈 또는 프로세스를 검색하려면 목록을 필터링한 다음, 추가적인 조사를 위해 목록의 어셈블리를 Assembly Explorer(어셈블리 탐색기)에 추가하면 됩니다.

dotPeek의 IL 코드 뷰어

별도의 뷰에서 IL 코드 보기

소스 코드보다 더 자세히 파악하고 싶을 때마다 어디서든 디컴파일된 C#에서 IL 코드로 이동할 수 있습니다.

가장 쉬운 방법은 IL 코드를 기본 코드 뷰어와 동기화된 별도의 도구 창에 표시하는 것입니다.

C# 코드에 대한 주석으로 표시되는 IL 코드

디컴파일된 C#에 대한 주석으로 IL 코드 보기

또는 선택적으로 IL 코드를 디컴파일된 C# 코드에 대한 주석으로 표시하여 일반적으로 기본 텍스트 뷰어와 분리된 IL Viewer(IL 뷰어) 창을 모두 하나의 뷰로 효과적으로 병합할 수 있습니다.

dotPeek은 심볼 파일에서 재생성된 소스 코드와 디컴파일된 코드 모두에 대해 IL 코드를 표시할 수 있습니다.

dotPeek의 다크 색상 테마

선호하는 색상 테마 사용

dotPeek은 Visual Studio와 동일한 색상 테마 모음을 지원합니다.

예를 들어 블루 또는 다크 테마를 선택하거나 색 구성표 기본 설정을 Visual Studio 설정과 동기화하도록 선택할 수 있습니다.

다양한 방법으로 디컴파일된 코드 탐색

dotPeek은 ReSharper의 강력한 코드 분석 아키텍처를 기반으로 하기 때문에 컨텍스트에 따라 또는 컨텍스트에 구애받지 않는 방식으로 디컴파일된 어셈블리를 탐색하고, 각 디컴파일된 파일의 내용을 빠르게 요약하고, 책갈피를 설정하고, 상속 체인을 탐색할 수 있습니다.

검색 결과에서 발견된 심볼의 사용 위치를 모두 나열

심볼의 사용 위치 검색

dotPeek에는 코드 심볼의 참조 위치를 검색하는 여러 가지 옵션이 있습니다.

Find Usages(사용 위치 검색)를 실행하면 로드된 모든 어셈블리에서 심볼(예: 메소드 또는 속성)의 사용 위치를 모두 찾을 수 있습니다. 사용 위치는 Find Results(검색 결과) 도구 창에 표시되며 여기에서 사용 위치를 그룹 지정하고 탐색하고 코드 뷰 영역에서 열 수 있습니다.

또한 Find Usages의 상세 버전인 Find Usages Advanced(고급 사용 위치 검색)도 있어, 검색 범위 및 기타 세부 사항을 제한하여 검색 기준을 세세하게 조정할 수 있습니다.

파일에서 사용 위치 강조 표시

코드 뷰어에서 사용 위치 강조 표시

dotPeek은 캐럿 아래에 있는 심볼이 표시된 모든 사용 위치를 자동으로 강조 표시합니다. 이는 최신 버전의 Visual Studio의 작동 방식과 매우 유사합니다. 이렇게 하면 특히 난독화된 식별자를 처리할 때 디컴파일된 코드의 가독성이 향상됩니다.

현재 해당 사용 위치가 표시되는지 여부에 관계없이 파일 내 모든 위치를 살펴보려면 Highlight Usages in File(파일 내 사용 위치 강조 표시) 기능을 사용하세요. 이 기능은 쓰기 및 읽기 사용 위치를 나타내는 두 가지 고유한 색상을 사용하여 현재 파일에서 해당 심볼의 모든 사용 위치를 강조 표시합니다.

파일 구조 창

현재 문서 탐색

디컴파일된 유형을 나타내는 문서에서 멤버를 빠르게 파악하고 탐색하려면 Go to File Member(파일 멤버로 이동)를 사용하세요. 멤버 이름의 일부만 입력해도 해당 멤버로 바로 이동할 수 있습니다.

또는 현재 문서에서 멤버를 정적으로 표시하려면 File Structure(파일 구조) 도구 창을 열고 고정하세요. 이 뷰를 필터링할 수도 있습니다. 도구 창을 선택하고 문자 입력을 시작하기만 하면 원하는 유형 멤버에만 집중할 수 있습니다.

모든 요소로 이동을 사용해 특정 유형, 파일, 멤버 등으로 바로 이동

어떤 코드로든 바로 이동

dotPeek은 어셈블리 목록에 있는 어셈블리 및 참조를 모두 색인 지정하여 특정 코드로 빠르게 이동할 수 있는 두 가지 기능을 제공합니다.

  • Go to Symbol(심볼로 이동)을 사용하면 유형, 메소드, 필드, 속성 등의 특정 심볼 선언으로 이동할 수 있습니다. lowerCamelHumps 구문을 사용하여 유형을 찾아보세요. 예를 들어 xmard를 입력하면 XamlMarkupDeclaredElement를 찾아서 열 수 있습니다.
  • Go to Everything(모든 요소로 이동)을 사용하면 어셈블리, 네임스페이스, 유형, 멤버 또는 최근 열어본 파일을 검색할 수 있습니다.
dotPeek의 북마크

북마크 설정

중요하다고 생각하는 디컴파일된 코드 줄이 있고 나중에 해당 줄로 다시 돌아가고 싶다면 북마크를 자유롭게 설정하세요.

간단히 단축키 하나로 번호가 매겨진 마커를 배치하고, 또 다른 단축키를 눌러 언제든지 해당 마커로 돌아올 수 있습니다. 번호가 매겨진 북마크는 최대 10개, 번호 없는 북마크는 무한대로 생성할 수 있습니다. 북마크된 위치의 전체 목록은 단일 팝업 창에 표시됩니다.

컨텍스트 기반 탐색 옵션

컨텍스트에 따라 탐색

코드 뷰 영역의 심볼 위에 캐럿이 놓일 때마다 dotPeek는 Navigate To(다음으로 이동) 드롭다운 메뉴를 통해 다양한 컨텍스트 기반 탐색 옵션을 모두 제공합니다.

예를 들어 Go to Declaration(선언으로 이동)을 사용하면 모든 심볼의 사용 위치에서 해당 선언으로 이동할 수 있습니다. 심볼이 다른 어셈블리에서 선언된 경우 해당 어셈블리가 자동으로 로드됩니다.

Go to Implementation(구현으로 이동)을 사용하면 상속 체인에서 추상 클래스와 같은 중간 상속 단계를 건너뛰고 유형 및 유형 멤버의 마지막 구현으로 이동할 수 있습니다.

기타 유용한 컨텍스트별 탐색 옵션으로는 Go to Base Symbols(기본 심볼로 이동)Go to Extension Methods(확장 메소드로 이동)가 있습니다.

파생 유형으로 이동

클래스 계층 구조 탐색

특정 유형 또는 유형 멤버에서 상속 계층 구조를 위아래로 탐색하고 싶다면 Go to Base Symbols(기본 심볼로 이동)Go to Derived Symbols(파생 심볼로 이동)을 사용해 보세요.

상속자 또는 기본 심볼로 바로 이동하려는 경우 매우 유용합니다.

유형 계층 구조 뷰

상속 체인 탐색

특정 상속 체인에 대한 시각적 요약을 보고 싶다면 Type Hierarchy(유형 계층 구조)를 사용하세요.

dotPeek은 선택된 유형에서 상속된 모든 유형과 자체 상속 유형을 별도의 도구 창에서 트리 뷰로 표시합니다.

어셈블리 이해

dotPeek은 모든 어셈블리의 구조를 신속하게 파악하고 어셈블리 간의 관계를 이해하며 어셈블리를 개별 목록으로 구성하는 도구를 제공하므로 사용자가 현재 과제에서 관심 있는 어셈블리에만 집중할 수 있습니다.

dotPeek에서 폴더, 아카이브, NuGet 패키지 검색 가능

어셈블리 목록 관리

컨텍스트에 따라 다양한 어셈블리 목록으로 작업할 수 있습니다. 어셈블리 목록을 저장하고 다시 열 수 있으며 더 이상 필요하지 않은 경우 현재 목록을 삭제할 수 있습니다. 어셈블리 목록은 .dll.exe 파일에만 한정되지 않으며 NuGet 패키지, 아카이브, 폴더도 포함됩니다.

dotPeek 어셈블리 탐색기

어셈블리 내용 탐색

어셈블리 목록으로 작업할 때 Assembly Explorer(어셈블리 탐색기)를 보면 네임스페이스부터 유형 멤버에 이르기까지 특정 어셈블리에 어떤 종류의 참조, 리소스, 코드가 있는지 표시되어 있습니다.

각 유형의 경우, 실제 멤버 목록 외에 기본 유형 및 상속자를 나타내는 노드가 강조 표시됩니다. lowerCamelHump를 사용한 빠른 검색 및 노드 필터링도 지원됩니다.

dotPeek에서 어셈블리 메타데이터 탐색

어셈블리 메타데이터 탐색

또한 dotPeek에서는 어셈블리 메타데이터를 비롯해 그 내부에 있는 모든 항목(테이블, BLOB, 문자열 등)을 탐색할 수 있습니다. Metadata(메타데이터) 노드에서 BLOB 항목의 값, PE 파일 헤더, 메타데이터 테이블 항목 사용 위치를 탐색할 수 있습니다.

어셈블리 트리의 다른 곳과 마찬가지로 메타데이터 항목을 2번 클릭하면 해당 코드를 디컴파일하고 표시할 수 있습니다.

어셈블리 종속 요소 다이어그램

어셈블리 간 종속 관계 보기

어셈블리가 서로 어떻게 종속되는지 알고 싶다면 Assembly Explorer(어셈블리 탐색기)에서 여러 어셈블리를 선택하고, dotPeek에게 어셈블리 종속 요소 다이어그램을 표시하도록 지시할 수 있습니다.

그러면 선택된 어셈블리 간에 존재하는 모든 관계가 참조에 따라 시각화됩니다.

dotPeek 다운로드

라이선스 키가 필요 없이 무료입니다