Если вы не знакомы с Streams, Linq или чем-то еще, у меня есть простейшее решение для вас:
Прочитать весь файл в память (надеюсь, вы имеете дело с небольшими файлами):
byte[] fileBytes = File.ReadAllBytes("upgradefile.cmp");
Подсчитайте, сколько байтов присутствует в массиве после заданного смещения:
long startOffset = 0x598; // this is just hexadecimal representation for human, it can be decimal or whatever
long howManyBytesToRead = fileBytes.Length - startOffset;
Затем просто скопируйте данные в новый массив:
byte[] newArray = new byte[howManyBytesToRead];
long pos = 0;
for (int i = startOffset; i < fileBytes.Length; i++)
{
newArray[pos] = fileBytes[i];
pos = pos + 1;
}
Если вы понимаете, как это работает, вы можете посмотреть в Array.Copy
метод в документации Microsoft.