Есть большой файл (2гб), нужно удалить из середины заголовка 256 байт, т.е. [MZ заголовок][256 dup (0)][PE заголовок][остальные данные], а нужно сделать файл [MZ заголовок][PE заголовок][остальные данные]. Я просто конкретизирую пример, все эти MZ PE не важны, но между ними нужно удалить указанное кол-во нулей. Ничего кроме [чтение заголовка]->[модификация]->[запись в новый файл всего оставшегося в цикле] не приходит в голову. Может как нибудь можно отрезать MZ и сместить его выше? Или что-нибудь поэлегантней?
Чуть элегантнее может быть запись не в новый файл, а в тотже файл. В конце нужно будет зафиксировать новый размер файла через SetEndOfFile.