Вместе с некоторыми другими людьми мы пытаемся сделать Savegameeditor для игры, но мы столкнулись с некоторыми проблемами.
Файлы savegame содержат своего рода контрольную сумму, из которой мы не можем найти, какая контрольная сумма используется для этого. До сих пор мы знаем только:
- Контрольная сумма 32 бит
- Между 9 различными сохраненными играми, в которых данные сохраненных игр в точности совпадают, за исключением 5 байтов (которые распределены по файлу), контрольная сумма оказалась между 1834565 - 1851372, когда анализируется как неисследованный длинный. Обратите внимание, что при каждом сохранении этих 5 байтов каждое сохранение является увеличенным числом (в основном примерно на +8), но контрольная сумма не увеличивается.
- Контрольная сумма, кажется, зависит от позиции, так как игра объявляет файл поврежденным при переключении 2 байтов
- Я попробовал несколько контрольных сумм и пришел к выводу, что это не Sum32, addler32, DJB2 и CRC32, потому что ни одна из них, похоже, не приблизилась к контрольным суммам, включенным в savegames. Похоже, что контрольная сумма, которая ближе всего подходит к контрольной сумме, включенной в сохраненные игры, похоже, просто добавляет все байты к длинному без знака, что возвращает значение около ~ 2507737.
Мне было интересно, есть ли лучший способ узнать, какая контрольная сумма используется для этих файлов, или кто-то знает какие-либо советы, чтобы узнать, какая контрольная сумма используется. В настоящее время я просто пробую некоторые контрольные суммы, которые я нашел на разных сайтах в программе на C ++. Возможно также важно знать, что игра с 2004 года, и в других файлах она использовала DJB2 для строковых хэшей. По мнению других людей, .exe, похоже, использует проверку CRC32.
Редактировать 1: Через некоторое время мне удалось получить 924 разных версий одного и того же файла, за исключением 2 байтов, которые меняются при каждом сохранении, и я также получил контрольные суммы этих файлов, чтобы увидеть, как он реагировал на эти изменения, и я составил список об этом. (Обратите внимание, что я не могу вручную вносить изменения в файл, и игра просто создает для него контрольную сумму, каждый раз, когда я сохранял добавленный файл +2 к длинной без знака, содержащей переменное число, так я и создал список.)
См. Часть списка ниже (50 записей из 924):
> The bytes Checksum (as Hex and unsigned long)
> -----------------------------
> 0x 0 0x18 0x 0 0x13DFA 81402
> 0x 0 0x19 0x 0 0x13F76 81782
> 0x 0 0x1A 0x 0 0x1406D 82029
> 0x 0 0x1B 0x 0 0x14114 82196
> 0x 0 0x1C 0x 0 0x13EC5 81605
> 0x 0 0x1D 0x 0 0x13790 79760
> 0x 0 0x1E 0x 0 0x143C1 82881
> 0x 0 0x1F 0x 0 0x13ED0 81616
> 0x 2 0x18 0x 0 0x13D02 81154
> 0x 2 0x19 0x 0 0x13ABD 80573
> 0x 2 0x1A 0x 0 0x14271 82545
> 0x 2 0x1B 0x 0 0x13E39 81465
> 0x 2 0x1C 0x 0 0x140FC 82172
> 0x 2 0x1D 0x 0 0x13FFE 81918
> 0x 2 0x1E 0x 0 0x1413B 82235
> 0x 2 0x1F 0x 0 0x13A5F 80479
> 0x 4 0x18 0x 0 0x138F2 80114
> 0x 4 0x19 0x 0 0x141AE 82350
> 0x 4 0x1A 0x 0 0x13E91 81553
> 0x 4 0x1B 0x 0 0x13F67 81767
> 0x 4 0x1C 0x 0 0x13C6C 81004
> 0x 4 0x1D 0x 0 0x13F4E 81742
> 0x 4 0x1E 0x 0 0x13BB8 80824
> 0x 4 0x1F 0x 0 0x1398D 80269
> 0x 6 0x18 0x 0 0x146C0 83648
> 0x 6 0x19 0x 0 0x139B5 80309
> 0x 6 0x1A 0x 0 0x13FAC 81836
> 0x 6 0x1B 0x 0 0x13E71 81521
> 0x 6 0x1C 0x 0 0x14162 82274
> 0x 6 0x1D 0x 0 0x13D55 81237
> 0x 6 0x1E 0x 0 0x13BE8 80872
> 0x 6 0x1F 0x 0 0x13B72 80754
> 0x 8 0x18 0x 0 0x142FE 82686
> 0x 8 0x19 0x 0 0x13E07 81415
> 0x 8 0x1A 0x 0 0x14923 84259
> 0x 8 0x1C 0x 0 0x13D3E 81214
> 0x 8 0x1D 0x 0 0x14420 82976
> 0x 8 0x1E 0x 0 0x13BEE 80878
> 0x 8 0x1F 0x 0 0x145F5 83445
> 0x 8 0x1F 0x 0 0x145F5 83445
> 0x A 0x18 0x 0 0x13CB6 81078
> 0x A 0x19 0x 0 0x142FB 82683
> 0x A 0x1A 0x 0 0x13EB2 81586
> 0x A 0x1B 0x 0 0x13C14 80916
> 0x A 0x1C 0x 0 0x13915 80149
> 0x A 0x1D 0x 0 0x14100 82176
> 0x A 0x1E 0x 0 0x14310 82704
> 0x A 0x1F 0x 0 0x13B34 80692
> 0x C 0x18 0x 0 0x142AE 82606
> 0x C 0x19 0x 0 0x14091 82065
Я до сих пор не вижу схемы между этими изменяющимися байтами и контрольной суммой, поэтому мне было интересно, может ли кто-то еще увидеть схему между ними? Или, может быть, техника, как найти шаблоны между ними. Если кто-то может помочь мне в этом, я также могу опубликовать ссылку на полный список (в формате Microsoft Excel или TXT)