Работа с RPYC- и RPA-файлами
"Обфускация" (шифровка) исходного кода
Обфускация или запутывание кода — приведение исходного кода программы к виду, сохраняющему её функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции.
Рассмотрим один из самых простых методов шифрования кода. Для удаления исходного кода, но сохранения функциональности достаточно удалить .rpy-файлы, оставив лишь их .rpyc-версии. В .rpyc-файле содержится скомпилированный вариант кода вашего мода с нечитаемым для человека синтаксисом. Удаление .rpy на работоспособность мода не влияет.
Создание RPA-архива
Для создания rpa-архива можно воспользоваться:
RPATool
Необходимо установить Python версии не ниже 3.1, при установке выберите опцию Добавить Python в PATH.
- Скачайте файл
rpatoolи положите в удобное для вас место. - Нажмите ПКМ с зажатым Shift, выберите
Открыть окно PowerShell здесь. - Введите в консоль (путь без кавычек):
python rpatool -c название_архива.rpa путь_до_папки_с_файлами_без_кавычек
Если папок несколько, то разделяйте их пробелами, если нужно заархивировать лишь один файл, то не забудьте указать его расширение.
По окончании архивации появится соответствующий RPA-архив рядом с файлом rpatool.
Ren'Py
- Установите Ren'Py удобным для вас способом, запустите
renpy.exe. - Создайте новый проект в Ren'Py, дайте любое имя, любые настройки.
- Перейдите в папку проекта, создайте новый
rpy-файл и откройте его. - Пропишите:
init python:
build.archive("archive", "all") # Создаём новый архив с названием 'archive'
build.classify('game/**', 'archive') # Помещаем все файлы из папки 'game' в 'archive'
При необходимости вместо всех файлов можно указать конкретные расширения:
init python:
# Изображения
build.classify('game/**.jpg', 'archive')
build.classify('game/**.png', 'archive')
# Музыка
build.classify('game/**.ogg', 'archive')
build.classify('game/**.mp3', 'archive')
# Не добавляем в архив все файлы с расширением .txt в папке и подпапках 'game'.
build.classify("**.txt", None)
Также можем положить файлы в разные архивы:
init python:
# Создаём архивы
build.archive("images", "all")
build.archive("music", "all")
# Изображения в 'images'
build.classify('game/**.jpg', 'images')
build.classify('game/**.png', 'images')
# Музыка в 'music'
build.classify('game/**.ogg', 'music')
build.classify('game/**.mp3', 'music')
Подробнее о параметрах при создании архива здесь.
- Переходим обратно в
renpy.exe, выбираем проект, нажимаемBuild Distributions. - Выбираем
PC: Windows and Linux, нажимаемBuild. - После окончания разархивируем архив с билдом проекта и находим
rpa-архивы.
Интеграция RPA в БЛ
Создаём rpy-файл в папке мода с любым названием и прописываем:
init -9999 python:
config.archives.append("Путь до rpa-архива без расширения")
Благодаря этому наш архив будет добавлен в список архивов, что исключает конфликт с возможными rpa-архивами из других модов. Пути к файлам после архивации остаются прежними, если вы сохранили ту же иерархию папок при архивации.
Декодирование RPYC
Для декодирования rpyc-файлов вы можете воспользоваться:
UnRen
- Скачайте архив и распакуйте bat-ник в директорию
game. - Запустите bat-файл и выберите
Decompile rpyc files. - По окончании нажмите любую клавишу для выхода или введите
1в командную строку, чтобы вернуться.
Будут декодированы все rpyc в директории game, включая подпапки.
UnRpyc
Перейдите в releases и скачайте файл в зависимости от варианта декодирования:
bytecode.rpybun.rpy/un.rpyc
Скачайте rpyb-файл, положите в game\cache (с заменой, если необходимо) и запустите игру.
Или
Скачайте un.rpy или un.rpyc, положите в game и запустите игру.
После загрузки игры и запуска главного меню все rpyc-файлы, включая rpyc из модов Мастерской, будут декодированы.
Декодирование RPA
Для декодирования rpa-файлов вы можете воспользоваться:
UnRen
- Скачайте архив и распакуйте bat-ник в директорию
game. - Запустите bat-файл и выберите
Extract RPA packages. - По окончании нажмите любую клавишу для выхода или введите
1в командную строку, чтобы вернуться.
Будут декодированы все rpa-архивы в директории game, включая подпапки.
UnRpa
- Необходимо установить
Pythonверсии не ниже3.1, при установке выберите опциюДобавить Python в PATH. - Поддерживается версия Windows не ниже Windows 8.
- Установите и разархивируйте в удобное для вас место.
- Запустите
UnRPA Commander.exe. - Нажмите
Install UnRPA. - В первом поле укажите полный путь до
rpa-архива. - Во втором поле укажите путь распаковки
rpa-архива. - Нажмите
Extract All.
RPATool
Необходимо установить Python версии не ниже 3.1, при установке выберите опцию Добавить Python в PATH.
- Скачайте файл
rpatoolи положите в удобное для вас место. - Нажмите ПКМ с зажатым Shift, выберите
Открыть окно PowerShell здесь. - Введите в консоль (пути без кавычек):
python rpatool -x путь_до_архива.расширение -o путь_до_папки_с_разархивированными_ресурсами