반사판에 대한 오픈 소스 대안? [닫은]


419

RedGate의 리플렉터 에 대한 오픈 소스 대안을 아는 사람이 있는지 물어보십시오 . Reflector와 비슷한 도구가 실제로 어떻게 작동하는지 확인하고 싶습니다.

Reflector 의 무료이지만 오픈 소스가 아닌 대안을 알고 있다면 다음 관련 질문에 대답 할 수 있습니다.

요약-2011 년 5 월 11 일 업데이트

제안 된 다양한 오픈 소스 프로젝트 및 도구의 빠른 정리 :

  1. 공통 컴파일러 인프라 (CCI)
  2. 모노 세실
  3. ILSpy
  4. dnSpy ( ILSpy 포크, 프로젝트가 원본보다 활성화 된 것으로 나타남)
  5. 닷넷 IL 편집기 (DILE)
  6. IL.보기
  7. 모노 플 렉터 ( 2011 년 4 월부터 더 이상 활성화되지 않음 )

다음 자료들도 관심이있을 수 있습니다.

  • TypeView.cs
  • .NET 분해 에 대한 Jason Haley의 노트
  • Adrian Bank의 최근 블로그 게시물 에는 아래에 언급되지 않은 몇 가지 옵션을 포함하여 여러 가지 반사판 대안이 요약되어 있습니다.
  • Mark Lichtenberg의 자세한 블로그 게시물에서 여러 오픈 소스 대안 (MonoDevelop을 사용한 DILE, ILSpy 및 Mono Cecil)을 리플렉터와 비교했습니다.

2
참고로, 이제 무제한
— thecoop


2
@Matt, 날짜를 확인하면 .NET Reflector보다 나은 것보다 먼저이 질문이 있습니까? 질문. 또한이 질문은 특히 오픈 소스 대안을 요구합니다.
— MagicAndi

답변:


31

내가 아는 두 가지 옵션.

  • CCI
  • 모노 세실

이것들은 C #을 제공하지 않습니다.


레피, 고마워 귀하의 답변과 Jason Haley의 답변 사이에서 어려운 선택 이었지만 나는 이것을 답변으로 받아들입니다.
— MagicAndi

CCI에는 GUI 프론트 엔드가 없습니다 (알고 있습니다). 그러나 코드 플렉스의 현재 소스에는 디 컴파일 된 AST를 C #, fyi로 변환하는 매우 간단한 API가 있습니다.
— justin.m.chase

2
Mono.Cecil은 라이브러리 일뿐입니다.
— Robert Jeppesen

175

2011 년 12 월 13 일 업데이트

다음과 같은 오픈 소스 도구를 사용할 수 있습니다.


1
나는 몇 년 전에 dile을 사용했습니다-그것은 훌륭한 디스어셈블러이자 디버거입니다-그것을 사용할 때 다시 추천했습니다. 나는 그것을 잠시 동안 사용하지 않았습니다.
— Jason Haley

8
ILSpy의 현재 버전 (ILSpy v1.0.0.440, 20010228)은 예상대로 작동합니다. PDB 파일없이 C # lib의 메소드, 속성 및 소스 코드를 찾아 볼 수 있습니다.
— mathijsuitmegen

6
ILSpy를 사용하기 시작했습니다. 지금까지 매우 만족합니다. 완벽한 교체 망. SharpDevelop 감사합니다!
— codemonkey

1
.NET 개발자 툴 벨트의 스테이플 대체품을 보게되어 매우 기뻤습니다. 디 컴파일 중 일부는 약간 이상합니다 (IL이 볼 때 문자열 연결이 표시되지만 코드가 작성된 것은 아니지만 나쁜 것은 아닙니다). 전반적으로 훌륭한 도구입니다!
— CodeMonkey1313

5
방금 ILSpy를 시도했지만 훌륭하게 작동합니다! 람다 식과 반복자 ( "수율 반환") 메소드도 재구성합니다 ...와! 내가 감동!
— Qwertie

38

다른 대체품은 dotPeek 입니다. JetBrains는 무료 도구로 발표했습니다. Resharper 와 함께 사용하면 더 많은 기능을 사용할 수 있지만 단독으로 사용하더라도 매우 잘 작동합니다.

사용자 경험은 독립형 디스어셈블러보다 MSVS와 유사합니다. Reflector보다 코드를 읽는 것이 더 좋습니다. Ctrl + T 탐색도 더 적합합니다. 트리를 코드 창과 동기화하는 것이 더 좋습니다.

대체로 아직 개발 중이지만 이미 잘 사용할 수 있습니다.


2
훌륭한 도구이지만 오픈 소스는 아닙니다. 그러나 무료이지만 이는 오픈 소스와 동등한 것에서 스포트라이트를 빼앗는 것을 의미 할 수 있습니다.
— Drew Noakes

비공개 소스 도구의 경우 Ferdinand, -1 리플렉터에 대한 링크 된 질문 중 하나에 이것을 추가해야합니다.
— MagicAndi 2016 년

3
정보를보다 완전하게 만들기 위해 여기에 답을 남겨두고 있습니다. 이 스레드는 Google에서 가장 쉽게 찾을 수 있으며 여기에 다른 도구 목록이 가장 완벽합니다. (모든 이들의 OSS는 BTW입니다.)
— 퍼디난드 Prantl

Ferdinand, 저는 폐쇄 형 소스 솔루션을 제공하는 모든 답변을 지속적으로 하향 조정하고 질문 텍스트를 반복적으로 업데이트하여 OSS에만 관심이 있음을 지정했으며 질문 요약의 모든 솔루션이 오픈 소스인지 확인했습니다. 이 질문 스레드에는 다른 폐쇄 소스 솔루션이 하나만 있습니다. 이 질문은 올해 초 Redgate가 비용을 청구하기로 결정하기 전에 요청되었으며 특히 오픈 소스 대안을 요구합니다. 무엇을 더해야합니까?
— MagicAndi

9
@MagicAndi 불평은 시작이 될 것입니다. 무료 대안을 찾고있는 동안 Google 에서이 스레드를 발견했습니다. 오픈 소스인지 아닌지 신경 쓰지 못했습니다. @Perdinand, dotPeek 링크에 감사드립니다.
— Winston Smith

15

Telerik은 오늘 자체 디 컴파일 툴인 JustDecompile 베타를 발표했다 . 비공개 소스이지만 무료이며 유망한 것으로 보입니다.


Ray, 사과하지만 GrayWolf 답변에 대한 접근 방식과 일관성을 유지하려면이 답변을 하향 조정해야합니다. 이 질문은 특별히 오픈 소스 대안에 관한 것입니다. .NET 커뮤니티는 비공개 소스 솔루션을 사용하여 이러한 혼란에 빠질 수있었습니다. 누가 도구를 제공하는지에 관계없이 앞으로는 이것을 피해야합니다. -1
— MagicAndi

레이, 내 Kaliro 제안도 비공개 소스 유틸리티 인 것으로 밝혀졌습니다. downvote를 자유롭게 왕복하십시오-나는 그것을받을 가치가있다! 불행히도, 당신은 자신의 답변에 위아래로 투표 할 수 없습니다.
— MagicAndi

1
@MagicAndi-답을 내리는 것보다 답을 삭제하는 것이 더 쉽습니다. 당신이 그것을 느끼지 않는다면 어떤 가치도 더할 수 있습니다.
— jpierson

1
이 답변을 삭제 / 추천하지 마십시오. 무료 대안에 대한 다른 SO 질문은 중재자에 의해이 질문의 "중복"으로 종료됩니다! 정보가 여기있을 가치가 있습니다.
— Alex

JustDecompile은 부끄러운 버그가 많은 응용 프로그램으로 항상 충돌하며 코드가 있어야하는 예외를 많이 보여줍니다. 그 외에도 매우 느립니다. .NET 리플렉터는 그 쓰레기보다 훨씬 좋습니다!
— Elmue

12

ILSpy 는 훌륭하게 작동합니다!

내가 말할 수있는 한, 리플렉터가했던 것과 똑같이 보이는 모든 것을한다.


10

실제로 Reflector는 디 컴파일러 기능이있는 디스어셈블러로 간주됩니다. 디스어셈블러는 어셈블리 파일에서 바이트를 읽고 어셈블리 언어 (이 경우 ILasm)로 변환하기 때문에 디스어셈블러입니다. IL을 잘 알려진 패턴 (표현식 및 문장)으로 구문 분석하여 제공하는 디 컴파일러 기능은 C #, VB.Net 등과 같은 고급 언어로 번역됩니다. Reflector 용 addin api를 사용하면 자체 언어 번역기를 작성할 수 있습니다. 당신이 원하지만 ... IL을 표현 트리로 구문 분석하는 방법의 마술은 밀접한 비밀입니다.

IL 디스어셈블러의 작동 방식을 이해하려면 위에서 언급 한 세 가지 중 하나를 살펴 보는 것이 좋습니다. Dile, CCI 및 Mono는 모두이 자료의 좋은 소스입니다.

또한 Ecma 335 사양 및 Serge Lidin의 책을 얻는 것이 좋습니다.


이 링크가 다운 된 것 같습니다
— Lyra

예, 작년에 해당 사이트를 다운 시켜서 교체하지 않아 죄송합니다.
— Jason Haley

8

내가 리플렉터를 사용한 주된 이유는 (그리고 대부분의 사람들이 그것을 사용한 주된 이유는) 디 컴파일러 때문이었습니다. 메소드의 IL을 소스 코드로 다시 변환 할 수 있습니다.

그 시점 에서 Monoflector 는 볼 프로젝트입니다. 리플렉션을 수행하는 Cecil과 디 컴파일을 수행하는 Cecil.Decompiler를 사용합니다. 그러나 Monoflector는 두 라이브러리 위에 UI를 계층화하므로 API 사용 방법을 매우 잘 이해할 수 있습니다.

Monoflector는 Reflector를 완전히 대체 할 수있는 훌륭한 대안입니다. 사람들이 Reflector를 사용한 것의 99 % 인 타입을 탐색하고 메소드를 디 컴파일 할 수 있습니다. 가장자리가 매우 거칠지 만 빠르게 변경 될 것이라고 생각합니다.


5

Reflector 자체는 .NET 어셈블리이므로 Reflector에서 Reflector.exe를 열어 빌드 방식을 확인할 수 있습니다.


14
아냐, 못해 반사판이 난독 처리되었습니다.
— Jeff Yates

14
리플렉터에서 리플렉터를 열 수 없습니까? 난 그냥 해냈어-난독 화는 식별자와 유형 이름이 엉망이기 때문에 IL의 가독성을 떨어 뜨리지 만 그것을 분해 할 수 없다는 것을 의미하지는 않습니다.
— Andrew Hare

13
앤드류-구멍에있을 때 파고 그만 ...
— MagicAndi

2
흠 ... 5.1.6.0 버전이 있고 소스를 잘 볼 수 있습니다. 식별자 이름 만 난독 처리됩니다. 완벽하지는 않지만, 현재 Reflector의 C # 소스를보고 있습니다. :)
— Andrew Hare

7
@Andrew Hare : 리플렉터에서 리플렉터를 통해 메소드 구현을 보려고하면 "This is fufuscated"(이것은 난독 화되어 있음)가 표시되고 그렇지 않다면 Reflector를 사용할 수 없습니다. 게다가, OP와 OP가 원하는 것을 현명하게하는 것은지는 싸움이다.
— 제프 예이츠

3

현재 Assembly Analyzer라는 오픈 소스 디스어셈블러 / 디 컴파일러에서 작업하고 있습니다. 메소드의 소스 코드를 생성하고 어셈블리 메타 데이터 및 리소스를 표시하며 종속성을 살펴볼 수 있습니다.

이 프로젝트는 CodePlex => http://asmanalyzer.codeplex.com/ 에서 호스팅됩니다


1

리플렉터 도구는 리플렉션을 사용합니다.   -분명히 이것은 정확하지 않습니다.

리플렉터의 기능을 보여주는 코드와 리플렉터의 대안 인 두 가지를 요청했습니다.

다음은 Reflector의 기능을 단순화 한 예이지만 리플렉션 기술을 보여줍니다. TypeView.cs

오픈 소스 리플렉터 교체에 대한 제안이 없습니다.


음, "Reflection"을 사용하여 .NET 프레임 워크의 "System.Reflection"을 참조하면 그 사실을 의심 할 것입니다.
— Christian.K

3
@ Christian.K : 아니요, Reflector는 System.Reflection프레임 워크에서 사용하지 않습니다 . Roeder는 어셈블리 로딩 및 언 로딩 문제로 인해 매우 일찍 언급했습니다.
— casperOne

@ casperOne, .NET Reflector가 내부에서 어떻게 작동하는지 정확히 알지 못하지만 System.Reflection네임 스페이스는 .NET Reflector 초기부터 확장되었습니다. 이제 리플렉션 전용 컨텍스트
— Drew Noakes

1
@Drew Noakes : 사실입니다. 그러나 Roeder는 일단이 변경이 이루어지면 리플렉션으로 다시 돌아 갔다고 말하지 않았습니다.
— casperOne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.