Я написал приложение С# для клиента пару лет назад, но у меня больше нет исходного кода. Все, что у меня есть, это EXE, который я развернул на клиентском ПК. Есть ли способ генерировать исходный код С# из EXE?
Как декомпилировать .NET EXE в читаемый исходный код С#?
Ответ 1
Reflector и его надстройка FileDisassembler.
Отражатель позволит увидеть исходный код. FileDisassembler позволит вам преобразовать его в решение VS.
Ответ 2
Когда Red Gate заявили, что больше не будет бесплатной версии .Net Reflector, я начал использовать ILSpy и Telerik JustDecompile. Я нашел ILSpy более декомпилировать, чем JustDecompile (который все еще находится в бета-версии). Red Gate изменила свое решение и все еще имеет бесплатную версию .Net Reflector, но теперь мне нравится ILSpy.
На веб-сайте ILSpy (http://www.ilspy.net/):
ILSpy - это браузер и декомпилятор с открытым исходным кодом .NET.
Функции ILSpy
- Сборочный просмотр
- Разборка МЛР
- Декомпиляция на С#
- Поддерживает lambdas и возвращает доход
- Показывает документацию XML
- Сохранение ресурсов
- Поиск типов/методов/свойств (подстрока)
- Навигация по типу/методу/свойствам на основе гиперссылок
- Навигация по базам/производным типам.
- История навигации
- BAML для декомпилятора XAML
- Сохранить сборку как проект С#
- Найти использование поля/метода
- Расширяемый через плагины (MEF)
Update:
15 апреля 2012 года был выпущен ILSpy 2.0. Новые возможности по сравнению с версией 1.0:
- Списки сборок
- Поддержка декомпиляции деревьев выражений
- Поддержка отмененных операторов по значениям nullable
- Декомпилировать Visual Basic
- Поиск нескольких строк, разделенных пробелом (поиск "Менеджер сборки" в ILSpy.exe найдет AssemblyListManager)
- При нажатии на локальную переменную будут выделены все другие вхождения этой переменной
- Ctrl + F может использоваться для поиска в режиме декомпилированного кода.
Update:
- ILSpy 2.1 поддерживает декомпиляцию async/await
Ответ 3
Reflector больше не свободен вообще, но они бесплатно предлагают разработчикам с открытым исходным кодом: http://reflectorblog.red-gate.com/2013/07/open-source/
Но некоторые компании, такие как DevExtras и JetBrains, создали бесплатные альтернативы:
Ответ 4
Отражатель и надстройка File Disassembler от Дениса Бауэра. Он фактически создает исходные проекты из сборок, где Reflector сам по себе отображает только разобранный источник.
ADDED: Моим последним фаворитом является JetBrains dotPeek.
Ответ 5
Telerik JustDecompile является бесплатным и имеет функцию для создания проектов из сборников .NET.
Ответ 6
Я удивлен, что никто не упомянул Microsoft ildasm. Это может быть не так хорошо, как ILSpy или Reflector, но он поставляется с Visual Studio, так что многие разработчики уже имеют его.
Чтобы запустить его (при условии, что VS 2013, должен быть аналогичным для других версий):
- Выберите "Пуск" > "Все программы" > "Visual Studio 2013" > "Инструменты Visual Studio".
- Дважды щелкните команду "Командная строка разработчика" для VS2013.
- Запустите "ildasm" из появившейся командной строки.
- В инструменте выберите "Файл" > "Открыть" и откройте исполняемый файл или DLL.
Теперь вы можете перемещаться по структуре DLL. Дважды щелкните по членам класса, чтобы увидеть IL. Используйте File > Dump для экспорта IL в файл.
Ответ 7
Вы хотите reflector.