меня интересуют декомпиляторы, такие как ILSpy или .Net Reflector и т. д.
Может ли кто-нибудь сказать мне, как этот декомпилятор преобразует файлы exe или dll, написанные на С#, в исходный код?
меня интересуют декомпиляторы, такие как ILSpy или .Net Reflector и т. д.
Может ли кто-нибудь сказать мне, как этот декомпилятор преобразует файлы exe или dll, написанные на С#, в исходный код?
Здесь есть два ключевых момента.
Во-первых, IL, будучи языком более низкого уровня, чем C# или VB.NET, представляет собой гораздо более высокий уровень, чем ассемблер или машинный код. Многие высокоуровневые конструкции все еще существуют и могут быть относительно легко использованы для определения потока и работы кода.
Другой ключевой момент заключается в том, что декомпилятор не генерирует исходный код. Он генерирует языковые конструкции высокого уровня из IL более низкого уровня, которые обычно очень похожи на исходный исходный код, но не идентичны.
Поскольку компилятор C# генерирует информацию о метаданных, а сгенерированный код является промежуточным языком, который транслируется в двоичный код во время выполнения, поэтому каждая dll или исполняемая программа, сгенерированная компилятором, может быть реорганизована с помощью отражателя .net, а ILSpy может