Как мне декомпилировать a.NET EXE в читаемый исходный код C#?


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

7 228

7 ответов:

отражатель и в FileDisassembler.

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

когда Red Gate сказал, что больше не будет бесплатной версии .NET Reflector, я начал использовать ILSpy и 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:

  • Списки Сборки
  • поддержка декомпиляции выражения деревья
  • поддержка поднятых операторов на nullables
  • декомпилировать в Visual Basic
  • поиск нескольких строк, разделенных пробелом (поиск "Assembly manager" в ILSpy.exe найдет AssemblyListManager)
  • щелчок по локальной переменной выделит все остальные вхождения этой переменной
  • Ctrl+F можно использовать для поиска в декомпилированном коде посмотреть

обновление:

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

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

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

DevExtras CodeReflect

JetBrains DotPeek

отражатель и Файл Дизассемблер надстройка от Дениса Бауэра. Он фактически производит исходные проекты из сборок, где рефлектор сам по себе отображает только разобранный источник.

добавлено: мой последний любимый JetBrains' dotPeek.

Telerik JustDecompile является бесплатным и имеет возможность создавать проекты из сборок .NET.

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

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

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

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

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