dnlib - Смещение потока записи

При загрузке сборки я могу изменить позицию в файле и добавить свои данные, а затем сохранить

public static void WriteStream(string path, long offset, byte[] bytesArray)
{
   using FileStream stream = File.Open(path, FileMode.Open);
   stream.Position = offset;
   stream.Write(bytesArray, 0, bytesArray.Length);
}

Но, как можно записать их без загрузки файла через FileStream и сделать что-то непосредственно после ModuleDefMD.Load(file);.


Ответы (1 шт):

Автор решения: aepot

Если глянуть в исходники, то видно что Load может грузить из массива байт.

byte[] bytes = File.ReadAllBytes(path);
var ms = new MemoryStream(bytes);
ms.Position = offset;
ms.Write(bytesArray);

ModuleDefMD.Load(bytes);

Или даже так

byte[] bytes = File.ReadAllBytes(path);
Buffer.BlockCopy(bytesArray, 0, bytes, offset, bytesArray.Length);

ModuleDefMD.Load(bytes);
→ Ссылка