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


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.