Как изменить crc файла на нужный

Обновлено: 06.07.2024

Старая игра, которую я пытаюсь сделать модом, имеет проверку CRC-32. У меня нет доступа к самой контрольной сумме CRC, поэтому я должен изменить файл, сохраняя тот же вывод контрольной суммы.

Информация у меня есть

Файл, если сам файл является единственным входом в программу CRC-32, я могу рассчитать, какой должна быть контрольная сумма CRC-32.

32-битный полиномиальный код.

3 ответа

Это неудобно, с большим количеством небольшого поворота, но очень быстро.

Предположим, исходный файл в шестнадцатеричном виде:

Тогда его контрольная сумма CRC-32 будет 0x9118E1C2 с использованием стандартного полинома CRC32. Если используемый алгоритм не является стандартным, его можно заменить. Я буду придерживаться стандарта для демонстрационных целей.

Сначала внесите необходимые изменения в файл. Например, я меняю байт посередине:

Первый шаг для восстановления CRC - заполнить файл четырьмя нулевыми байтами:

Контрольная сумма CRC теперь 0x6BBE83C9 .

Шаг второй, XOR две контрольные суммы:

Шаг третий, немного поменять результат:

Шаг четвертый, и это немного странно, так что смотрите ниже, выполните обратный расчет CRC32:

Шаг пятый, побитовый результат, побайтно на этот раз:

Шаг шестой, заменить заполненные байты с результатом

Вуаля, значение контрольной суммы CRC32 теперь вернулось к 0x9118E1C2.

Самый простой способ сделать обратный расчет CRC - это пакет BitVector в Python:

Этот алгоритм от Redditor / u / supersaw7 опубликован в этой теме, Я не сталкивался с лучшей, несмотря на то, что возможна более простая версия.

Если размер файла не обязательно должен быть постоянным, вы можете просто изменить его содержимое столько, сколько захотите, и добавить несколько байтов (4) для исправления контрольной суммы.

Какие байты добавить можно

А) рассчитывается, если вы понимаете используемый алгоритм CRC или

Б) Попытка грубой силы найти подходящие байты (может занять некоторое время, но если вам не нужно делать это часто, это все же выполнимая попытка

Используйте обман . После того, как вы изменили свой файл, вам нужно будет определить набор битовых положений, которые вы бы позволили изменить, чтобы вернуть CRC к исходному значению. Вам нужно будет предоставить поддельный эксклюзивный или исходный CRC, к которому вы хотите вернуться, и текущий CRC, а также битовые местоположения, которые вам не нужны, например, в символьных строках, вместе с некоторой информацией о самом CRC и длине файла. Затем spoof решит, какой из этих битов перевернуть, чтобы получить желаемый CRC. Документация дает руководство о том, сколько изменяемых битовых позиций вам нужно предложить.

Вы можете оставить файл такой же длины или добавить байты в файл, чтобы создать позиции, которые вы считаете изменяемыми.

Репутация: 0
Всего: 0

Как изменить контрольную сумму файла средствами Делфи.
Нужно как-то просто добавить какой-то код или что-то в этом роде.

Репутация: 53
Всего: 133

Какого файла? Формат?

В общем случае можно просто открыть файл как текст и добавить туда пару символов. Хотя для некоторых форматов может не прокатить

Если хочешь, что бы что-то работало - используй написанное,
если хочешь что-то понять - пиши сам.

Репутация: 0
Всего: 0

*.exe, если просто добавить символы, то программа не запуститься.

Репутация: 192
Всего: 484

Репутация: 0
Всего: 0

Нужно изменить размер файла, например чтоб больше был. это Hex редактором что-ли делать или как ? Я просто не пойму что ты написал

Репутация: 1
Всего: -3

Репутация: 53
Всего: 133

Если хочешь, что бы что-то работало - используй написанное,
если хочешь что-то понять - пиши сам.

Репутация: 1
Всего: -3

Я хочу вот что: есть файл 1.exe он занимает 48,8 КБ, нужно сделать так чтоб он занимал места больше чем 48,8 КБ, например 50,8 КБ.

Репутация: 8
Всего: 24

Репутация: 14
Всего: 78

Если у тебя есть исходники, то лучше дописать что-нить (кроме комментариев). А если исходников нет, тогда лучше делать, как посоветовал Snowy

Репутация: 72
Всего: 111

2 Rexar
Изменение контрольной суммы файла и изменение размера файла - это не одно и тоже. Опеределись сначала, что ты хочешь. Увеличить размер файла можно дописав в конец несколько байт. А это суть работа с файлами, причём основы и про это ты можешь прочитать почти в любом FAQ для Delphi/Pascal.

Репутация: 0
Всего: 0

Репутация: 53
Всего: 133

Если хочешь, что бы что-то работало - используй написанное,
если хочешь что-то понять - пиши сам.

Репутация: 192
Всего: 484

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

[ Время генерации скрипта: 0.1428 ] [ Использовано запросов: 21 ] [ GZIP включён ]

В старой игре, которую я пытаюсь использовать, есть проверка CRC-32. У меня нет доступа к контрольной сумме CRC, поэтому я должен изменить файл, сохраняя тот же вывод контрольной суммы.

Информация у меня есть

Файл, если сам файл является единственным входом в программу CRC-32, я могу рассчитать, какая контрольная сумма CRC-32 должна быть.

32-битный полиномиальный код.

Это неловко, с большим количеством небольшого поворота, но очень быстро.

Предположим, что исходный файл в шестнадцатеричном виде:

Тогда его контрольная сумма CRC-32 будет 0x9118E1C2 с использованием стандартного полинома CRC32. Если используемый алгоритм не является стандартным, его можно заменить. Я буду придерживаться стандарта для демонстрационных целей.

Сначала внесите необходимые изменения в файл. Например, я меняю байт посередине:

Контрольная сумма CRC теперь 0x6BBE83C9 .

Шаг второй, XOR две контрольные суммы:

Шаг третий, немного поменять результат:

Шаг четвертый, и это немного странно, так что смотрите ниже, выполните обратный расчет CRC32:

Шаг пятый, побитовый результат, побайтно на этот раз:

Шаг шестой, замените заполненные байты на результат

Вуаля, значение контрольной суммы CRC32 теперь вернулось к 0x9118E1C2.

Этот алгоритм от Redditor/u/supersaw7 опубликован в этой теме. Я не встречал лучшего, несмотря на то, что более простая версия была невероятно возможной.

Какие байты для добавления могут быть

а) вычислен, если вы понимаете используемый CRC-алгоритм или

б) попробуйте попытку грубой силы найти подходящие байты (может занять некоторое время, но если вам не нужно часто это делать, это все еще возможно

Используйте пародию. После того, как вы изменили свой файл, вам нужно будет определить набор битовых местоположений, которые вы позволите изменить, чтобы вернуть CRC в исходное значение. Вам нужно будет предоставить пародию исключительного или исходного CRC, к которому вы хотите вернуться, и текущего CRC, а также местоположения бит, которые вам не нужны, например, в символьных строках, а также некоторая информация о сам CRC и длина файла. затем spoof решает, для какого из этих битов перевернуться, чтобы получить желаемый CRC. В документации дается руководство по количеству изменяемых позиций бит, которые вам нужно будет предложить.

Вы можете оставить файл той же длины или добавить байты в файл для создания позиций, которые считаются изменчивыми.

Начиная с самых первых поколений персональных компьютеров, проблема дефицита дискового пространства была одной из самых актуальных. Над её решением работали лучшие умы отрасли, и одним из эффективных способов решения, как вы уже догадались, оказалось использование архиваторов. Как оказалось, степень сжатия файла сильно зависит от его типа. Например, при упаковке текстов размер файла уменьшается в разы, а для большого текста – даже на порядок. Исполняемые файлы сжимаются хуже, а некоторые виды файлов, изначально созданных с использованием упаковщиков, практически не сжимаются.

Ошибка контрольной суммы при распаковке RAR

Так или иначе, но архиваторы и поныне используются повсеместно – как правило, пакеты программ для установки поставляются именно в виде архивов, в том числе самораспаковывающихся. Но иногда при распаковке сжатых файлов пользователи сталкиваются с ошибкой несовпадения контрольной суммы, в результате чего очень нужный файл извлечь из архива не удаётся. Сегодня мы рассмотрим основные причины возникновения ошибки CRC и способы её устранения.

Причины появления ошибки

Для начала стоит вкратце ознакомиться с азами теории сжатия. Алгоритмы компрессии данных основываются на поиске одинаковых длинных фрагментов и их кодировании менее ёмким кодом. Даже в этом тексте таких фрагментов предостаточно. Например, двухбуквенных повторений. Но программы-архиваторы ищут более длинные повторяющиеся последовательности, так что коэффициент сжатия в итоге получается очень даже существенным.

При создании архива в него, кроме закодированной последовательности, включается таблица кодов и некоторые другие данные, в том числе контрольная сумма архива. Это число, хранимое в шестнадцатеричном виде, представляющее собой значение, рассчитанное на основании основной последовательности данных с применением специальных математических алгоритмов. Оно является уникальным именно для такой последовательности данных. Внесение любого изменения, даже однобитного, приведёт к кардинально другой контрольной сумме.

Ошибка при распаковке

Особенность контрольной суммы (её принято называть хэш-суммой) заключается в том, что по ней невозможно восстановить исходную последовательность данных, но она является идеальным инструментом для определения подлинности полученного файла. Итак, в сам архив вносится контрольная сумма, она же вычисляется при разархивировании файла. Если хэш-суммы не совпадают, это говорит о том, что архив изменён уже после его создания.

  • сам архив создан некорректно – например, если программа-архиватор, создавшая архив, заражена вирусом;
  • используемый вами архиватор для распаковки архивов повреждён или работает со сбоями;
  • иногда причиной становится несовпадение версий архиватора;
  • ещё одной причиной появления ошибки может быть наличие кириллических символов при указании каталога распаковки;
  • ошибка несовпадения CRC-кода может возникать и вследствие проблем с железом: при наличии сбойных секторов на накопителе или если модуль ОЗУ работает со сбоями.

Рассмотрим основные методы устранения данной ошибки.

Способы решения проблемы

В большинстве случаев виновником возникновения ошибки контрольной суммы в заархивированном файле является сам архив, про который в таких случаях говорят «битый».

Проверка источника данных

Если вы скачали файл с оптического диска – возможно, он получил повреждения из-за дефектов DVD-носителя. Проверьте, нет ли на нём царапин, сколов, потёртостей или трещин. При их наличии стоит поискать исходный файл в другом месте.

Царапины на оптическом диске

Если архив загружен из сети, есть вероятность, что файл получил повреждения в процессе скачивания – такое иногда случается, пакеты теряются. Можно попытаться скачать его повторно, но если ошибка не исчезнет, возможно, битый архив уже лежит на сервере. Тогда имеет смысл поискать этот же пакет в другом месте.

Словом, первое, что нужно сделать, получив данную ошибку при распаковке, – скачать файл с нескольких источников.

Исключение кириллицы из полного пути установки

Дистрибутивы программ далеко не всегда пишут программисты высокой квалификации. В силу этого нередки случаи, когда пакет содержит компоненты, которые не адаптированы под некоторые языки, в частности – кириллицу. И тогда такие дистрибутивы при распаковке могут генерировать ошибку контрольной суммы, касается ли это 7ZIP или WINRAR.

Удаление кириллицы в пути

Если тот архиватор, которым вы пользуетесь, предлагает распаковать архив с документами в папку «Документы», или же вы сознательно разархивируете дистрибутивы программ в каталог «Софт», вам стоит попробовать использовать имена, не содержащие русских букв, – например, Docs или Soft.

То есть при распаковке внимательно следите за тем, в какую папку архиватор предлагает распаковать архив, причём кириллица может быть в любом участке пути.

Распаковщики, если речь идёт о старых версиях Windows, могут выдавать ошибку и из-за того, что кириллица присутствует в имени учётной записи. Изменить имя можно через «параметры», но если это для вас неприемлемо, можно создать нового пользователя с английским написанием его имени – это должно решить проблему.

«Параметры» в меню «Пуск»

Раздел «Учётные записи» в Windows 10

Пункт «Управление учётной записью Майкрософт»

Имя учётной записи Майкрософт

Пункт «Изменить имя»

Изменение имени учётной записи Майкрософт

Обновление версии архиватора

Операционная система Windows имеет собственные средства распаковки наиболее распространённых форматов архивов – zip, arj, rar, 7z, однако их функционал недостаточен по сравнению со специализированными пакетами.

Скачивание установщика WinRAR

Если и при использовании архиватора ошибка CRC не исчезла, вполне возможно, что это из-за того, что вы пользуетесь устаревшей программой. Не поленитесь посетить официальный сайт разработчика на предмет скачивания самой последней версии инсталляционного пакета – обычно это устраняет все возможные проблемы.

Скачивание установщика 7ZIP

Отключение разгона

До сих пор мы рассматривали только программные способы устранения ошибки контрольной суммы, но она может возникнуть и по аппаратным причинам. В частности, такое нередко случается на компьютерах с разогнанным процессором или оперативкой. Оверклокинг хорош для выполнения ресурсоёмких задач, но в случае с работой архиватора он может вместо пользы принести вред, инициировав сбой при распаковке архива, что в итоге выльется в ошибку CRC.

Решение проблемы – отключение разгона. Проще всего это сделать, выполнив сброс BIOS до заводских настроек, после чего можно проверить работоспособность архиватора.

Сброс BIOS до заводских настроек

Устранение неполадок с диском компьютера

Более вероятным виновником появления ошибки несовпадения контрольной суммы при установке программ является наличие сбойных секторов на диске. Если ваш HDD возрастной, то стоит проверить его специализированной утилитой (можно и встроенными средствами Windows). С твердотельными накопителями такая неприятность случается чаще – в силу ограничений по циклам записи/чтения, свойственным для SSD.

Переход в свойства локального диска

Если ячейка памяти нечитабельна, очевидно, что при считывании файла его целостность будет нарушена, а значит, подсчёт контрольной суммы выдаст несовпадение со значением, записанным в самом архиве.

Проверка диска на наличие ошибок

В обоих случаях нужно просканировать диск с опцией исправления ошибок, после чего снова скачать архив и распаковать его.

Кнопка «Проверить диск»

Как правило, в 95% случаев проблема кроется именно в битом архиве, поэтому с такой же вероятностью вам не понадобятся все изложенные способы решения проблемы несовпадения контрольной суммы, кроме первого.

Читайте также: