Comments 17
Точно. Не представляю, как вручную можно догадаться о некоторых вещах — типа того, что где-то записано число 12 байтовых структур. Если длину в байтах еще более-менее можно прикинуть "на глазок", то более сложные случаи явно должна изучать программа. Интересно, кто-нибудь делал программы анализаторы для такого выявления форматов файлов? А потом отсюда вытекает другой вопрос — создать формат, противодействующий такому анализу.
Подобные программы называются фаззеры.
Было упоминание, что такая программа сгенерировала корректный jpeg файл, анализируя ответ обработчика.
С их же помощью нашли ошибки в движке рендера html страниц.
Без дополнительных знаний фаззинг не сможет сгенерировать png из-за контрольной суммы.
Фаззинг немного не то. Он требует запуска кода, работающего с файлом, тогда как здесь интуитивно чувствуется. что можно построить процесс анализа структуры — выявление повторяющихся паттернов (значит скорее всего список объектов), анализ количества/длины этих паттернов с числами в других местах файла и т.п. Наверняка же кто-то задумывался над формализацией такой задачи и ее решением.
Был у меня в свое время компьютер с видеокартой Trident TVGA9000. Она поддерживала какие-то нестандартные VESA режимы с глубиной цвета 16 бит, но GTA 1 упорно хотела запускаться только в режиме 256 цветов. В итоге пришлось расковырять форматы файлов и, вооружившись Паскалем пополам с ассемблером, написать смотрелку спрайтов из игры. Тогда-то я и увидел, насколько более красочной могла бы быть игра)
И почти столько же, как вытаскивал картинки и звуки из других игрушек.
Речь о Panza KickBoxing (второе название Best Of The Best Championship) — скачать можно тут gamesnostalgia.com/en/game/panza-kick-boxing
Очень хотел в свое время сделать клон.
Реверс-инжиниринг Star Wars: Yoda Stories