Jump to content
Sign in to follow this  
EasyGameProtection

Resource Cryptor - шифрование файлов клиента

Recommended Posts

Resource Cryptor - небольшая утилита для шифрования "read-only" файлов клиента c целью затруднения их воровства/модификации/etc.
Для клиентских модулей зависимости отсутствуют. Для работы самого приложения требуется .NET 6.0
Сейчас это на стадии тестов. Реализован самый минимум функционала для проверки жизнеспособности решения.
Уже тестировалось на одном сервере (но не L2).
Предложения/пожелания/багрепорты само собой приветствуются.

Утилита предоставляется по подписке. Цена подписки составляет 10$ в месяц.

Из коробки утилита идет с DEMO лицензией, которая имеет некоторые ограничения:

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


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

Краткий гайд по использованию:
(перед всеми манипуляциями делайте резервные копии файлов!)
1. Качаем архив с приложением
3. В архиве с приложением находится папка с клиентскими модулями. В нашем случае требуется либа resource-cryptor-x32.dll
4. Запускаем Resource Cryptor
5. Переходим во вкладку: Tools -> Attach Lib
6. Нажимаем Select File и выбираем бинарник в клиенте игры (например L2.exe). Если нет возможности патчить exe файл, то можно выбрать одну из dll библиотек.
7. Нажимаем Attach Lib
8. Помещаем либу resource-cryptor-x32.dll рядом с вашим L2.exe
9. Переходим во вкладку Project, нажимаем Create New Project и выбираем куда его сохранить. Будет создан шаблонный ini файл проекта
10. Открываем любым редактором созданный ini файл и в секции "EXECUTABLE_FILES" по примеру указываем полный путь к вашему L2.exe
11. Далее в Resource Cryptor нажимаем "Open Project" и выбираем созданный файл проекта
12. Переходим во вкладку "Encryption" и перетаскиваем туда файлики из клиента, которые хотите зашифровать
13. Нажимаем "Encrypt" и ждем завершения процесса.
14. По завершению для каждого исходного файла будут созданы дополнительно еще 2 файла.
Например, если мы шифруем файл somefile.txt , тогда по завершению процесса рядом будут созданы еще файлы somefile.txt.rcmetadata и somefile.txt.xxxxx.origin (где xxxxx - какое-то число).
somefile.txt - это уже зашифрованный файл
somefile.txt.rcmetadata - метаданные для клиентского модуля, этот файл должен остаться рядом с зашифрованным
somefile.txt.xxxxx.origin - исходный незашифрованный файл (на случай, если забыли сделать резервную копию)
15. Файлы *.xxxxx.origin можно удалить (если у вас уже есть сохраненные оригиналы), остальные файлы должны остаться в клиенте.

На этом процесс завершен, можно запускать игровой клиент.

Небольшой видеогайд от одного из пользователей: 

 

 

>>> И самое главное! <<<
Никогда никакой криптор не даст 100% гарантии того, что файлы не будут вскрыты.
Это не спасет от опытного человека, перед которым стоит задача что-то стащить из вашего клиента.

 


1.png.7d75cc7f40bd650488af5534b991b94c.png

2.png.5a5626a254783a0c6ba4df8da18110fd.png

3.png.13f973ad70006b11e1a3be1b19314a3a.png

4.png.d3b1fcd441d1be68eb6a35dbb79d7ced.png

Edited by EasyGameProtection
  • Like 1
  • Upvote 1

Share this post


Link to post
Share on other sites

Update v0.4.0:
(Первое сообщение в теме обновлено)

-> В файл проекта в секцию OPTIONS добавлена опция CHECK_CALL_CONTEXT ("YES", "NO"; Default: "YES")
Если при запуске игрового клиента для какого-то из зашифрованных файлов получаем ошибку "Opening a file outside the application context", то при шифровании этого файла для опции CHECK_CALL_CONTEXT необходимо устанавливать значение "NO".
Не отключайте эту опцию без необходимости.

-> Добавлена возможность патчить бинарники игрового клиента непосредственно из приложения.

  • Переходим во вкладку: Tools -> Attach Lib
  • Нажимаем Select File и выбираем бинарник в клиенте игры (например L2.exe)
  • В выпадающем списке можно выбрать варианты: Push Front - либа будет добавлена в самое начало таблицы импорта. Push Back - в конец таблицы. Значение по умолчанию можно не менять.
  • Нажимаем Attach Lib


Готово. Теперь необходимо рядом с ним просто поместить одну из либ (resource-cryptor-x32.dll или resource-cryptor-x64.dll) в зависимости от разрядности вашего приложения (для L2 это resource-cryptor-x32.dll)


5.png.ae805559743521ddc167be3f40410f30.png

Share this post


Link to post
Share on other sites

Update v0.5.0:

В файл проекта добавлены 2 опции:

  • CHECK_FILE_INTEGRITY ["YES", "NO"; Default: "YES"]: Нужно ли проверять целостность зашифрованного файла перед его открытием. Для очень больших файлов эту опцию можно отключать, чтобы ускорить работу.
  • CHECK_MEMORY_INTEGRITY ["YES", "NO"; Default: "YES"]: Нужно ли клиентскому модулю проверять целостность некоторых участков памяти процесса (своих хуков и т.д). Может потребоваться отключать для совместимости с другими защитами.

Update v0.5.2:

Добавлены более информативные сообщения об ошибках при шифровании файлов.

Update v0.6.0:
(Первое сообщение в теме обновлено)

Добавлена опция:

  • ENCRYPTED_FILES_REQUIRED ["YES", "NO"; Default: "NO"]: Нужно ли проверять наличие других зашифрованных файлов. Если указано значение "YES", то в файле проекта в секции "REQUIRED_ENCRYPTED_FILES" перечисляется список файлов (относительные пути), которые должны быть зашифрованы.


Эта опция полезна в случае, если нам необходимо зашифровать определенные файлы в клиенте и чтобы игрок не мог заменить один из них каким-то своим незашифрованным файлом, который он сможет редактировать. То есть игроку придется или заменять все зашифрованные файлы своими незашифрованными (что может поломать клиент), или не трогать ни один из них.

Share this post


Link to post
Share on other sites

Update v1.0.0:
(Первое сообщение в теме обновлено)

Изменения:

  • Переход в стабильную версию 1.x.x (предыдущие версии 0.x.x теперь не работают)
  • В файл проекта добавлена опция SAVE_ORIGIN_FILES  ["YES", "NO"; Default: "YES"]: Нужно ли сохранять оригинальные файлы после шифрования.
  • DEMO лицензия теперь урезана. При запуске игрового клиента с файлами, которые были зашифрованы DEMO лицензией, будет отображаться соответствующее сообщение. Также время жизни таких зашифрованных файлов ограничено до 24 часов. Этого достаточно, чтобы проверить подходит ли решение для конкретного пользователя, чтобы потом купить подписку.
  • Цена подписки составляет 10$ в месяц.

Share this post


Link to post
Share on other sites

Update v1.1.0:
(Первое сообщение в теме обновлено)

Изменения:

  • Переработано шифрование файлов для улучшения производительности (особенно при случайном чтении данных из файла)
  • Из файла проекта удалена опция CACHE
  • Добавлена подпись для бинарников, что дает 0 детектов антивирусов для клиентских модулей (VirusTotal: x32 и x64)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...