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

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

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 Особенности

  • просмотр Собрания
  • иль разборки
  • Декомпиляция на C#
  • поддерживает lambdas и "доходность"
  • показывает XML-документацию
  • экономия ресурсов
  • Поиск типов/методов/свойств (подстрока)
  • гиперссылка на основе типа / метода / свойства навигации
  • Базовый/Производный типы навигации
  • навигация история
  • BAML для декомпилятора XAML
  • сохранить сборку как Проект C#
  • найти использование поля/метода
  • расширяемый через плагины (MEF)

обновление:

15 апреля 2012 года был выпущен ILSpy 2.0. Новые возможности по сравнению с версией 1.0:

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

обновление:

  • ILSpy 2.1 поддерживает async / await декомпиляцию

Reflector больше не является бесплатным в целом, но они предлагают его бесплатно для разработчиков с открытым исходным кодом: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. выполнить "ildasm" из результирующей командной строки.
  4. в инструменте выберите Файл > Открыть и откройте исполняемый файл или DLL.

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


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