我正在尝试修补一个C# .NET DLL。我为这项工作选择了带有Reflexil的.NET反射器(以及用于消除混淆的de4dot )。反射器能够非常成功地向我展示我想要看到的C#,我也能够用Reflexil来修补CIL组件。当我试图将DLL保存为一个新的二进制文件时,Reflexil给了我一个已签名的程序集对话框,我选择删除强名称。
当我试图运行加载程序集的代码时,会得到以下错误:
System.BadImageFormatException:无法加载文件或程序集“MyAssembly、Version=1.0、Culture=neutral、PublicKeyToken=somehash”或其依赖项之一。预计该模块将包含程序集清单。
我该如何解决这个问题?
此外,如果我在修补的DLL上使用peverify.exe,我会得到一个错误:文件找不到,或者标头错误。这让我相信瑞弗莱的修补过程有什么问题吗?
发布于 2014-01-16 23:59:59
通常,您可以向项目中添加程序集清单文件(右键单击项目、添加新文件并选择应用程序清单文件)。这适用于将从程序集生成的dll。添加清单文件后,当您右键单击项目并选择属性时,在Application选项卡上,您将看到从下拉到底部选择了清单文件。
可能该dll也是从具有应用程序清单文件的项目(类库)中创建的。无论如何,我认为您无法更改dll以添加清单文件。
https://stackoverflow.com/questions/21175065
复制相似问题