"Модуль должен был содержать манифест сборки".
У меня есть C# .NET DLL, которую я пытаюсь исправить. Я выбрал.NET Reflector с плагином Reflexil для работы (вместе с de4dot для деобфускации). Reflector смог очень успешно показать мне C#, который я хотел увидеть, и я смог исправить патч CIL с помощью Reflexil. Когда я попытался сохранить DLL как новый бинарный файл, Reflexil дал мне диалоговое окно Подписанная сборка, и я решил удалить строгое имя.
Когда я пытаюсь запустить код, который загружает сборку, я получаю сообщение об ошибке:
System.BadImageFormatException: не удалось загрузить файл или сборку 'MyAssembly, Version=1.0, Culture= нейтральный, PublicKeyToken=somehash' или одну из ее зависимостей. Модуль должен был содержать манифест сборки.
Как мне решить эту проблему?
Кроме того, если я использую peverify.exe в исправленной DLL, я получаю сообщение об ошибке: файл не найден или имеет неправильные заголовки. Это наводит меня на мысль, что с процессом исправления Reflexil что-то не так?
1 ответ
Обычно вы можете добавить файл манифеста сборки в ваш проект (щелкните правой кнопкой мыши свой проект, добавьте новый файл и выберите файл манифеста приложения). Это относится к DLL, которая будет сгенерирована из вашей сборки. После добавления файла манифеста, когда вы щелкнете правой кнопкой мыши по проекту и выберете свойства, на вкладке Приложение вы увидите, что файл манифеста выбран в раскрывающемся списке внизу.
Вероятно, эта dll также была создана из проекта (библиотеки классов), в которой был файл манифеста приложения. Я не думаю, что вы сможете изменить эту DLL, чтобы добавить файл манифеста в любом случае.