7

我很难尝试使用 Visual Studio 命令提示符(反)组装 dll,看起来不像我在 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',当我使用完整路径时,我得到了同样的错误。

这里有什么问题?

4

1 回答 1

8

很简单,我们来看这行代码:

using System;      
public class sample  
{
    static void Main(string[] args)
    {
        Console.WriteLine("Inside main ...");
    }
}

让我们编译App.csApp.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.msdnc-sharpcorner中有有用的帖子,以及指导使用 ILDASM 和 ILASM。

于 2018-08-26T05:21:28.130 回答