"The module was expected to contain an assembly manifest."



我有一个C# .NET DLL,我正在尝试修补。我选择了带有Reflexil插件的.NET Reflector来完成这项工作(以及用于deobfuscation的de4dot)。Reflector能够非常成功地向我展示我想看到的C#,并且我能够使用Reflexil修补CIL程序集。当我尝试将 DLL 另存为新的二进制文件时,Reflexil 给了我一个"签名程序集"对话框,我选择删除强名称。

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

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

如何解决此问题?

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

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

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

相关内容

最新更新