【问题标题】:"The module was expected to contain an assembly manifest."“该模块应该包含一个程序集清单。”
【发布时间】:2014-01-16 23:29:32
【问题描述】:

我有一个正在尝试修补的 C# .NET DLL。我为这项工作选择了带有 Reflexil 插件的 .NET Reflector(以及用于反混淆的 de4dot)。 Reflector 能够非常成功地向我展示我想看到的 C#,并且我能够使用 Reflexil 修补 CIL 程序集。当我尝试将 DLL 保存为新的二进制文件时,Reflexil 给了我一个 Signed Assembly 对话框,我选择了 Remove Strong Name。

当我尝试运行加载程序集的代码时出现错误:

System.BadImageFormatException:无法加载文件或程序集“MyAssembly,Version=1.0,Culture=neutral,PublicKeyToken=somehash”或其依赖项之一。该模块应包含程序集清单。

我该如何解决这个问题?

此外,如果我在修补的 DLL 上使用 peverify.exe,我会收到错误:找不到文件或标头错误。这让我相信 Reflexil 的修补过程有问题?

【问题讨论】:

  • 逆向工程是邪恶的。不要作恶。
  • 逆向工程是一种工具/技术。用它作恶就是恶。善用它是好的。使用你的权力。善用你的力量。善用你的力量而不是作恶。
  • @evanmcdonnal 生产不能有效使用而无需进行逆向工程的东西是邪恶的。不要作恶。

标签: c# dll reverse-engineering .net-reflector reflexil


【解决方案1】:

通常,您可以将程序集清单文件添加到您的项目中(右键单击您的项目,添加新文件并选择应用程序清单文件)。这适用于将从您的程序集生成的 dll。添加清单文件后,当您右键单击项目并选择属性时,在“应用程序”选项卡上,您将看到在底部的下拉列表中选择了一个清单文件。

可能该 dll 也是从具有应用程序清单文件的项目(类库)创建的。我认为无论如何您都无法更改该 dll 以添加清单文件。

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多