[C#] .NET EXE를 읽을 수있는 C # 소스 코드로 어떻게 디 컴파일합니까?

몇 년 전에 클라이언트를 위해 C # 응용 프로그램을 작성했지만 더 이상 소스 코드가 없습니다. 내가 가진 것은 클라이언트 PC에 배포 한 EXE입니다. EXE에서 C # 소스 코드를 생성 할 수있는 방법이 있습니까?



답변

리플렉터 와 추가 기능 FileDisassembler .

리플렉터는 소스 코드를 볼 수 있습니다. FileDisassembler를 사용하면 VS 솔루션으로 변환 할 수 있습니다.


답변

Red Gate가 더 이상 .Net Reflector의 무료 버전이 없다고 말했을 때 ILSpy 와 Telerik의 JustDecompile을 사용하기 시작했습니다 . ILSpy가 JustDecompile (아직 베타 버전 임)보다 더 정확하게 디 컴파일하는 것을 발견했습니다. 레드 게이트는 그들의 결정을 바꾸었고 여전히 .Net Reflector의 무료 버전을 가지고 있지만, 지금은 ILSpy를 좋아합니다.

ILSpy 웹 사이트 ( https://github.com/icsharpcode/ILSpy/ )에서 :

ILSpy 는 오픈 소스 .NET 어셈블리 브라우저 및 디 컴파일러입니다.

ILSpy 기능

  • 어셈블리 브라우징
  • IL 분해
  • C #으로 디 컴파일
  • 람다 및 ‘수율 반환’지원
  • XML 문서를 보여줍니다
  • 자원 절약
  • 유형 / 방법 / 속성 검색 (하위 문자열)
  • 하이퍼 링크 기반 유형 / 방법 / 속성 탐색
  • 기본 / 파생 유형 탐색
  • 탐색 기록
  • BAML에서 XAML 디 컴파일러로
  • C # 프로젝트로 어셈블리 저장
  • 필드 / 방법의 사용법 찾기
  • 플러그인 (MEF)을 통해 확장 가능

최신 정보:

2012 년 4 월 15 일, ILSpy 2.0이 출시되었습니다. 버전 1.0과 비교 한 새로운 기능 :

  • 조립 목록
  • 식 트리 디 컴파일 지원
  • nullable에 대한 리프팅 연산자 지원
  • Visual Basic으로 디 컴파일
  • 공백으로 구분 된 여러 문자열 검색 (ILSpy.exe에서 “어셈블리 관리자”를 검색하면 AssemblyListManager가 있음)
  • 지역 변수를 클릭하면 해당 변수의 다른 모든 항목이 강조 표시됩니다
  • 디 컴파일 된 코드보기 내에서 Ctrl + F를 사용하여 검색 할 수 있습니다.

최신 정보:

  • ILSpy 2.1은 비동기 / 대기 디 컴파일을 지원합니다

답변

리플렉터는 더 이상 일반적으로 무료가 아니지만 오픈 소스 개발자에게 무료로 제공합니다 : http://reflectorblog.red-gate.com/2013/07/open-source/

그러나 DevExtras 및 JetBrains와 같은 몇몇 회사는 무료 대안을 만들었습니다.

DevExtras CodeReflect

제트 브레인 도트 픽


답변

Denis Bauer의 리플렉터와 파일 디스어셈블러 애드 인 실제로 Reflector 자체는 디스 어셈블 된 소스 만 표시하는 어셈블리에서 소스 프로젝트를 생성합니다.

추가 : 내가 가장 좋아하는 것은 JetBrains ‘ dotPeek 입니다.


답변

Telerik JustDecompile 은 무료이며 .NET 어셈블리에서 프로젝트를 생성하는 기능이 있습니다.


답변

아무도 Microsoft의 ildasm 을 언급하지 않은 것에 놀랐습니다 . ILSpy 또는 Reflector만큼 예쁘지 않을 수도 있지만 Visual Studio와 함께 제공되므로 많은 개발자가 이미 가지고 있습니다.

실행하려면 (VS 2013을 가정하고 다른 버전과 비슷해야 함) :

  1. 시작> 모든 프로그램> Visual Studio 2013> Visual Studio 도구를 선택하십시오.
  2. VS2013의 개발자 명령 프롬프트를 두 번 클릭하십시오.
  3. 결과 명령 프롬프트에서 “ildasm”을 실행하십시오.
  4. 도구에서 파일> 열기를 선택하고 실행 파일 또는 DLL을여십시오.

이제 DLL 구조를 탐색 할 수 있습니다. 수업 일원을 두 번 클릭하여 IL을보십시오. 파일> 덤프를 사용하여 IL을 파일로 내 보냅니다.


답변

당신은 반사판을 원합니다 .