我在尝试使用Visual Studio命令提示符(反汇编)dll时遇到了麻烦,就像我看到的in the microsoft page一样,看起来并不简单。
我通过以下方式使用ildasm:
ildasm myLibrary.dll output:MyLibrary.il
我得到:无法打开“ MyLibrary.il”进行输出。
我也尝试了完整路径:
ildasm directory\myLibrary.dll output:directory\MyLibrary.il
然后我得到:指定了多个输入文件
使用ildasm GUI实际上可以,但是当我使用ilasm时:
ilasm myLibrary.il /dll
我得到:当我使用完整路径时,我无法打开'myLibrary.il'。
这是怎么了?
答案 0 :(得分:2)
简单,让我们看一下这行代码:
using System;
public class sample
{
static void Main(string[] args)
{
Console.WriteLine("Inside main ...");
}
}
让我们将App.cs
编译为App.exe
。现在,运行该可执行文件时,它会在内部main上打印。
现在,让我们尝试更改此可执行文件的输出,而无需触摸其源文件。
您运行ildasm App.exe /out:App.il
生成与可执行文件相对应的IL代码。现在,您可以在记事本中编辑此il代码,并将ldstr
从“ Inside main…”更改为“ Inside main change…”,如下所示:
IL_0000:nop
IL_0001:ldstr“内部main ...”
IL_0006:调用void [mscorlib] System.Console :: WriteLine(string)
IL_000b:不,
IL_000c:退出
收件人
IL_0000:nop
IL_0001:ldstr“内部主要部件已更改...”
IL_0006:调用void mscorlib] System.Console :: WriteLine(string)
IL_000b:不,
IL_000c:退出
现在,让我们通过运行ilasm App.il.
从此il文件重建可执行文件,这将生成一个新的App.exe。如果运行App.exe,将得到以下输出“ Inside main changes…”
social.msdn和c-sharpcorner中有一些有用的帖子,以及使用ILDASM和ILASM的指南。