很简单,我们来看这行代码:
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
“Inside main ...”更改为“Inside main changed ...”,如下所示:
IL_0000: nop
IL_0001: ldstr "Inside main ..."
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: ret
至
IL_0000: nop
IL_0001: ldstr "Inside main changed ..."
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: ret
现在让我们从这个 il 文件中重建可执行文件,运行ilasm App.il.
这会生成一个新的 App.exe。如果您运行 App.exe,您将得到以下输出“Inside main changed ...”</p>
social.msdn和c-sharpcorner中有有用的帖子,以及指导使用 ILDASM 和 ILASM。