Как работает декомпилятор С#

меня интересуют декомпиляторы, такие как ILSpy или .Net Reflector и т. д.

Может ли кто-нибудь сказать мне, как этот декомпилятор преобразует файлы exe или dll, написанные на С#, в исходный код?


person namco    schedule 02.08.2011    source источник
comment
Код в .dll и .exe находится в MSIL, из которого вы можете довольно легко (по сравнению с дизассемблированием собственного кода) перестроить исходный код на любой язык .NET.   -  person Grozz    schedule 03.08.2011


Ответы (2)


Здесь есть два ключевых момента.

Во-первых, IL, будучи языком более низкого уровня, чем C# или VB.NET, представляет собой гораздо более высокий уровень, чем ассемблер или машинный код. Многие высокоуровневые конструкции все еще существуют и могут быть относительно легко использованы для определения потока и работы кода.

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

person Steve Morgan    schedule 02.08.2011

Поскольку компилятор C# генерирует информацию о метаданных, а сгенерированный код является промежуточным языком, который транслируется в двоичный код во время выполнения, поэтому каждая dll или исполняемая программа, сгенерированная компилятором, может быть реорганизована с помощью отражателя .net, а ILSpy может

person Samir Adel    schedule 02.08.2011