Декомпиляция двоичного файла .NET 2.0 - PullRequest
2 голосов
/ 16 февраля 2010

Можно ли декомпилировать двоичный файл .NET 2.0 (* .exe) в какой-нибудь читаемый код? Или, если нет, просто извлеките из него некоторую информацию (например, имена методов, отладочную информацию и т. Д.)?

Ответы [ 5 ]

15 голосов
/ 16 февраля 2010

Возможно, вы захотите взглянуть на Отражатель , он должен показывать вам сборку как C # или IL.

EDIT:

С увеличением стоимости рефлектора я переключился на ILSpy для своих повседневных нужд.

3 голосов
/ 16 февраля 2010

Падение исполняемого файла в ILDASM или Dot Net Reflector должно помочь.

1 голос
/ 16 февраля 2010

Я процитирую себя из этого вопроса ранее сегодня :

Вы никогда не сможете вернуться к тому же самому источнику, так как нет метаданных об этом, сохраненных с помощьюскомпилированный код.

Но вы можете заново создать код из кода ассемблера.

Проверьте эту книгу, если вас интересуют следующие вещи: Реверсирование: Секреты обратного проектирования.

Редактировать

Некоторые компиляторы-101 здесь, если бы вы определили компилятор с другим словом, а не таким техническим, как "компилятор", что бы это было?

Ответ: Переводчик

Компилятор переводит написанные вами синтаксис / фразы на другой язык, который компилятор C переводит на Assembly или даже Machine-code.Код C # переведен на IL и т. Д.

Исполняемый файл, который у вас есть, является просто переводом вашего исходного текста / синтаксиса, и если вы хотите «перевернуть его», а значит «перевести его обратно», вы, скорее всего, неполучите ту же структуру, что и у вас в начале.

Более реальным примером будет то, что если вы переводите с английского на немецкий и с немецкого обратно на английский, структура пересылки, скорее всего, будет другой, другими словамиможет использоваться, но значение контекста, скорее всего, не изменится.

То же самое касается компилятора / транслятора, если вы переходите от C к ASM, логика та же, просто другой путьчитать его (и, конечно, его оптимизировать).

Что касается C #, вам уже дали много отличных инструментов, таких как Reflector.Однако, если Кодекс запутан, у вас будут проблемы с его чтением.

1 голос
/ 16 февраля 2010

Ищите Lutz Roeder, и вы найдете:

http://www.red -gate.com / продукты / отражатель /

0 голосов
/ 16 февраля 2010

Да.Во-первых, все библиотеки .net имеют манифесты с информацией о типах.Их можно подвергнуть сомнению с помощью отражения или с помощью таких инструментов, как отражатель.Взгляните на пространство имен system.reflection для классов, на которые вам нужно взглянуть.

...