Объясните чайнику как это работает? Условно есть исполняемый файл написанный на высокоуровневом языке(с#). Сначала мы его дезасемблируем, получая из машинных кодов - код ассемблера, а затем декомпелируем? Или как то иначе? Речи про защиту пока нет, меня интересуют азы.
что c# компилится в MSIL - промежуточный язык, который без защиты очень легко переводится обратно в c#. Сам этот язык уже интерпретируется в асм код через .Net виртуальную машину, посредством JIT компиляции через clrjit.dll