首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ILDASM和ILASM,如何使用它们?

ILDASM和ILASM,如何使用它们?
EN

Stack Overflow用户
提问于 2018-08-26 05:08:30
回答 2查看 13.1K关注 0票数 8

我很难用Visual命令提示符来组装一个dll,不要像我看到的在microsoft页面中那样简单。

我在用这种方法:

代码语言:javascript
复制
ildasm myLibrary.dll output:MyLibrary.il

我得到:无法打开输出的“MyLibrary.il”。

我也尝试了一条完整的道路:

代码语言:javascript
复制
ildasm directory\myLibrary.dll output:directory\MyLibrary.il

我得到:多个输入文件指定的

使用ildasm实际上是有效的,但是当我使用ilasm时:

代码语言:javascript
复制
ilasm myLibrary.il /dll

I get:无法打开'myLibrary.il',当我使用完整路径时,会得到相同的错误。

这里怎么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-26 05:21:28

简单地说,让我们使用这一行代码:

代码语言:javascript
复制
using System;      
public class sample  
{
    static void Main(string[] args)
    {
        Console.WriteLine("Inside main ...");
    }
}

让我们将App.cs编译成App.exe。此可执行文件现在打印在主…中。当我们运行的时候。

现在允许我们尝试更改此可执行文件的输出,而不触及其源文件.

您可以运行ildasm App.exe /out:App.il 来生成与可执行对应的IL代码。现在,您可以在记事本中编辑这段il代码,并将ldstr从“in main…”中更改。到“内部主更改的…”如下所示:

代码语言:javascript
复制
IL_0000:  nop
IL_0001:  ldstr      "Inside main ..."
IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
IL_000b:  nop
IL_000c:  ret

代码语言:javascript
复制
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,您将得到以下输出“main changed…”

social.msdnC-锐角中都有有用的文章,通过使用ILDASM和ILASM来指导。

票数 8
EN

Stack Overflow用户

发布于 2022-11-17 03:38:03

ildasm myLibrary.dll -output=MyLibrary.il

不要在LINUX或OSX上使用选项键"/“。

'/‘是系统路径分隔符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52023353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档