просто, давайте возьмем эту строку кода:
using System;
public class sample
{
static void Main(string[] args)
{
Console.WriteLine("Inside main ...");
}
}
Давайте скомпилируем App.cs
в App.exe
.Этот исполняемый файл теперь печатает Inside main ... когда мы его запускаем.
Теперь давайте попробуем изменить вывод этого исполняемого файла, не касаясь его исходных файлов.
Вы запускаете ildasm App.exe /out:App.il
для генерации кода IL, соответствующего исполняемому файлу .Теперь вы можете отредактировать этот код il в блокноте и изменить ldstr
с «Внутри основного…» на «Внутри основного изменено…», как показано ниже:
IL_0000: nop
IL_0001: ldstr "Внутри главного ..."
IL_0006: вызов void [mscorlib] System.Console :: WriteLine (строка)
IL_000b: nop
IL_000c: ret
К
IL_0000: nop
IL_0001: ldstr "Внутри главного изменилось ..."
IL_0006: call void mscorlib] System.Console :: WriteLine (строка)
IL_000b: nop
IL_000c: ret
Теперь давайте перестроим исполняемый файл из этого файла il, запустив ilasm App.il.
Создается новый App.exe.Если вы запустите App.exe, вы получите следующий вывод: «Внутри главного изменено…»
Есть полезные сообщения в social.msdn и в c-sharpcorner какхорошо ориентируясь в использовании ILDASM и ILASM.