Вы никогда не сможете вернуться к тому же самому источнику, так как нет метаданных об этом, сохраненных с помощьюскомпилированный код.
Но вы можете заново создать код из кода ассемблера.
Проверьте эту книгу, если вас интересуют следующие вещи: Реверсирование: Секреты обратного проектирования.
Редактировать
Некоторые компиляторы-101 здесь, если бы вы определили компилятор с другим словом, а не таким техническим, как "компилятор", что бы это было?
Ответ: Переводчик
Компилятор переводит написанные вами синтаксис / фразы на другой язык, который компилятор C переводит на Assembly или даже Machine-code.Код C # переведен на IL и т. Д.
Исполняемый файл, который у вас есть, является просто переводом вашего исходного текста / синтаксиса, и если вы хотите «перевернуть его», а значит «перевести его обратно», вы, скорее всего, неполучите ту же структуру, что и у вас в начале.
Более реальным примером будет то, что если вы переводите с английского на немецкий и с немецкого обратно на английский, структура пересылки, скорее всего, будет другой, другими словамиможет использоваться, но значение контекста, скорее всего, не изменится.
То же самое касается компилятора / транслятора, если вы переходите от C к ASM, логика та же, просто другой путьчитать его (и, конечно, его оптимизировать).
Что касается C #, вам уже дали много отличных инструментов, таких как Reflector.Однако, если Кодекс запутан, у вас будут проблемы с его чтением.