Ответ 1
попробуйте проверить приведенную ниже статью проекта кода, это может быть полезно
Я пытаюсь заменить ресурс файла exe (.NET, С#) с помощью кода С#.
Я нашел эту статью и сделал этот код (используя Mono.Cecil 0.6):
AssemblyDefinition asdDefinition = AssemblyFactory.GetAssembly("C:\\File.exe");
EmbeddedResource erTemp = new EmbeddedResource("encFile", ManifestResourceAttributes.Public);
erTemp.Data = myNewFileBytes;
asdDefinition.MainModule.Resources.RemoveAt(0);
asdDefinition.MainModule.Resources.Add(erTemp);
AssemblyFactory.SaveAssembly(asdDefinition, "C:\\newFile.exe");
Код фактически удаляет ресурс, а затем добавляет новый с тем же именем.
Имя ресурса encFile
и сохраняется как encFile.exe
(оба они оба).
Я тестировал код и удалял работу (могу сказать по размеру файла) и добавление тоже, но новый файл разбился так же, как и файл i, созданный только с удалением (для тестирования) - он как он не может видеть замененный ресурс.
Что я могу сделать, чтобы исправить это? возможно, некоторые изменения в отредактированном EXE файле?
EXE файл читает его ресурс таким образом:
byte[] buffer = ProjectName.Properties.Resources.encFile;
попробуйте проверить приведенную ниже статью проекта кода, это может быть полезно