Файлы сохранений Balatro оказались исполняемым Lua-кодом без контрольных сумм
Энтузиаст выяснил, что Balatro загружает сохранения через loadstring, то есть исполняет их как Lua-программу, а контрольных сумм в формате нет. При поочерёдном инвертировании битов в трёх реальных файлах 12 694 из 61 672 повреждённых сохранений (20,6%) загрузились без ошибок, но с другими данными.
- Сохранение .jkr — это Lua-код return {...}, сжатый raw DEFLATE без контрольной суммы
- 20,6% повреждённых сохранений загрузились без ошибки, но с изменёнными данными
- В 98 558 строках Lua игры нет ни одного упоминания crc32, adler или checksum
- С проверкой zlib-суммой из 6 байт успешно загрузились бы 0 повреждённых файлов
Читать дальше
Безопасность