Основне обговорення і код розшифрування можна подивитися на форумі розробника.
У даній статті розглядається приклад з дешифрування saveindex, на інших файлах дана інструкція поки не перевірялась!
Не забувайте робити бекап всієї папки гри перед експериментами
Алгоритм дешифрування виглядає наступним чином:
- Відкриваємо файл.
- Видаляємо перші 11 байт (символів)
- Декодируем base64
- Пропускаємо ще перші 16 байт (символів)
- Робимо unzip рядки, через zlib
- .
- PROFIT
Таким чином у нас вийшов наступний код на PHP:
Зрозуміло все це можна написати в один рядок і замість echo $ a вивести дані в файл для подальшого редагування, що і буде зроблено далі, але поки попрацюємо з такою версією коду, для зручності і попрацюємо через консоль, щоб переконатися, що дешифрування відбувається вірно і вірно вказано шлях до файлу.
Вище озвучений код завадимо в будь-яку папку, для зручності краще всього покласти десь недалеко від збереження. Я поклав у папку
/.steam/steam/userdata/МОЙ_ID/ Запускаємо консоль в папці з цим файлом і виконуємо команду:
На виході отримуємо декодувати дані, типу такого
Тепер можна для зручності записати все це справа в файл:
Назва і розширення файлу можете вибрати будь-який. Я вибрав JSON, тому що дані зберігаються в дуже схожому на JSON форматі.
Тепер можна відкрити збережений файл і ознайомитися. Ви побачите, що там зберігаються налаштування світу і персонажа, наприклад кількістю днів, показники перса, підключення печер. І пізніше можна буде спробувати модифікувати дані. А також, можливо, підключати чужі печери і руїни.
Щоб ви розуміли про що я, ось скрін даних налаштувань:
На даний момент я тільки розібрався з розшифровкою. Експерименти ще не проводив. Трохи пізніше опублікую в цьому записі зворотну збірку файлів. Але хто в темі програмування, думаю і самі напишуть за пару хвилин.
Приступимо до зворотного збирання, але для початку доболнім наш вище описаний скрипт парою рядків коду, а саме запишемо все те, що обрізали в файли, для подальшого впровадження назад:
Тепер скрипт по назад збірці / шифрування:
Ну і тепер, як я вище писав, все кладемо в файли, наприклад decode.php і encode.php і запускаємо з консолі:
Все назад збирається. АЛЕ! Як поки вдалося з'ясувати - в даному файлі можна змінювати кількість прожитих днів - ці дні просто відображаються на слоті збереження, а на саму гру ніяк не впливають. Але можна змінювати характеристики перса, але не вище можливого. Навіть якщо ви поставите там 1000, у грі буде максимально допустимі у персонажа.
PS Чи цікава кому дана тема? Є можливо викласти дешефратор, а потім і шифратор онлайн - воно кому треба? Для віндузятнікі і всіх, хто не знає мови програмування це, як мені здається, було б актуально, якщо це цікаво.