Есть бинарный файл, хочу найти в нем изображения и заменить их. Как это сделать? Сам нашел лишь начало изображения с помощью HEX-редактора. Но как найти конец? Или может быть есть более быстрые способы поиска и замены?
BMP начинается с сигнатуры 'BM' и далее идет 4 байта размер файла.
Любой программист-первокурсник сможет извлечь ресурсы владея этой информацией
при условии что ресурсы не шифрованны.
mayton2019, да не нужно писать код. )
Это просто хотелка. Хочу в бинарнике иконку заменить, чтобы под общий стиль подходила. Естественно, программа проприетарная. В исходниках уж с горем пополам подправил бы.
nihi1ist, Программа может проверять свою контрольную сумму, если распространяется бинарем - чисто для проверки, что скачалось нормально и не запускаться, если она не сходится.
В bmp там есть какой-то подвох. Какой не помню. Лет 5 назад писал для себя прогу для примерно такой же задачи, в любом бинарном файле найти по сигнатурам определенные типы файлов и сохранить в их исходном размере и по возможности проверить целостность. Для exe, jpg, png, zip, 7z сделал, а с bmp, gif, ico там что-то не срослось. Уже не помню нюансы.
Еще с rar не срослось, но там просто Рошал долбаный техномазохист, голову сломать можно пока его распарсишь. Хоть и разобрался, но реализовать это садо-мазо было сильно лень.
Alexander, bmp это не тривиальный формат. Есть вариант его сжатия методом RLE для индексных цветов.
Есть просто экзотические варианты цветности типа 16 бит на пиксел. Редкий формат и не все его поддерживают. Графические редакторы отказывались открывать такое. Хотя - тот-же bmp.
mayton2019, я немного не о том. Мне нужно было его конкретно "вычленить" из бинарного файла. Пофигу что там у него внутри просто найти по сигнатурам начало и рассчитать конец. Там толи поле размера не совпадало с реальным, толи какой-то еще был подвох, что точно его выделить нельзя.
P.S. или возможно просто сигнатуры 'BM' часто встречались в произвольных местах и не имели отношение к bmp, а проверить на валидность, что это точно bmp сложно, т.к. у него нет каких-то контрольных сум или других сигнатур по которым это можно сделать. Как в том же .png (если не путаю), где идет фиксированные сигнатуры заголовка, смещение, опять заголовок, начинающийся с определенных сигнатур и т.д.