Как декомпилировать .NET EXE в читаемый исходный код C #? - PullRequest
246 голосов
/ 07 октября 2008

Пару лет назад я написал C # -приложение для клиента, но у меня больше нет исходного кода. Все, что у меня есть, это EXE-файл, который я развернул на компьютере клиента. Есть ли способ, которым я могу генерировать исходный код C # из EXE?

Ответы [ 7 ]

187 голосов
/ 07 октября 2008

Отражатель и его надстройка FileDisassembler .

Отражатель позволит увидеть исходный код. FileDisassembler позволит вам преобразовать его в решение VS.

136 голосов
/ 05 октября 2011

Когда Red Gate заявил, что больше не будет бесплатной версии .Net Reflector, я начал использовать ILSpy и Telerik's JustDecompile . Я обнаружил, что ILSpy декомпилируется более точно, чем JustDecompile (который все еще находится в бета-версии). Red Gate изменила свое решение и до сих пор имеет бесплатную версию .Net Reflector, но теперь мне нравится ILSpy.

с сайта ILSpy (http://www.ilspy.net/):

ILSpy - это браузер и декомпилятор сборки .NET с открытым исходным кодом.

Особенности ILSpy

  • Просмотр сборки
  • разборка IL
  • Декомпиляция в C #
  • Поддерживает лямбды и «доходность»
  • Показывает документацию XML
  • Экономия ресурсов
  • Поиск типов / методов / свойств (подстрока)
  • Навигация по типу / методу / свойству на основе гиперссылок
  • Базовые / Производные типы навигации
  • История навигации
  • декомпилятор BAML в XAML
  • Сохранить сборку как проект C #
  • Найти использование поля / метода
  • Расширяемый с помощью плагинов (MEF)

Обновление:

15 апреля 2012 г. был выпущен ILSpy 2.0. Новые функции по сравнению с версией 1.0:

  • Сборочные списки
  • Поддержка декомпиляции деревьев выражений
  • Поддержка отмененных операторов на обнуляемые значения
  • Декомпилировать в Visual Basic
  • Поиск нескольких строк, разделенных пробелом (при поиске «Диспетчер сборки» в ILSpy.exe будет обнаружен AssemblyListManager)
  • При нажатии на локальную переменную будут выделены все другие вхождения этой переменной
  • Ctrl + F можно использовать для поиска в представлении декомпилированного кода

Обновление:

  • ILSpy 2.1 поддерживает асинхронную / ожидающую декомпиляцию
63 голосов
/ 07 июня 2011

Reflector больше не является бесплатным в целом, но они предлагают его бесплатно для разработчиков с открытым исходным кодом: http://reflectorblog.red -gate.com / 2013/07 / open-source /

Но несколько компаний, таких как DevExtras и JetBrains, создали бесплатные альтернативы:

DevExtras CodeReflect

JetBrains DotPeek

34 голосов
/ 07 октября 2008
Отражатель

и надстройка File Disassembler от Denis Bauer. Он фактически создает исходные проекты из сборок, где Reflector самостоятельно отображает только разобранный источник.

ДОБАВЛЕНО: Мой последний фаворит - JetBrains dotPeek .

27 голосов
/ 15 августа 2011

Telerik JustDecompile бесплатен и имеет функцию для создания проектов из сборок .NET.

24 голосов
/ 24 марта 2015

Я удивлен, что никто не упомянул Microsoft ildasm . Он может быть не таким красивым, как ILSpy или Reflector, но он поставляется с Visual Studio, так что многие разработчики уже имеют его.

Чтобы запустить его (при условии, что VS 2013 должен быть аналогичным для других версий):

  1. Выберите Пуск> Все программы> Visual Studio 2013> Инструменты Visual Studio.
  2. Дважды щелкните командную строку разработчика для VS2013.
  3. Запустите «ildasm» из полученной командной строки.
  4. В инструменте выберите «Файл»> «Открыть» и откройте исполняемый файл или DLL.

Теперь вы можете перемещаться по структуре DLL. Дважды щелкните по ученикам, чтобы увидеть IL. Используйте File> Dump для экспорта IL в файл.

14 голосов
/ 07 октября 2008

Вы хотите отражатель .

...