Как декомпилировать 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 создали бесплатные альтернативы:
отражатель и Файл Дизассемблер надстройка от Дениса Бауэра. Он фактически производит исходные проекты из сборок, где рефлектор самостоятельно отображает только разобранный источник.
добавлено: мой последний любимый JetBrains'dotPeek.
Telerik JustDecompile является бесплатным и имеет функцию для создания проектов из сборок .NET.
Я удивлен, что никто не упомянул Microsoft ildasm. Это может быть не так красиво, как ILSpy или Reflector, но он поставляется с Visual Studio, так что многие разработчики уже имеют его.
чтобы запустить его (предполагая, что VS 2013, должен быть похож на другие версии):
- Выберите Пуск > Все Программы > Visual Studio 2013 > Средства Visual Studio.
- дважды щелкните на командной строке разработчика для VS2013.
- выполнить "ildasm" из результирующей командной строки.
- в инструменте выберите Файл > Открыть и откройте исполняемый файл или DLL.
теперь вы можете перемещаться по структуре DLL. Дважды щелкните по членам класса, чтобы увидеть IL. Используйте File > Dump для экспорта IL в файл.