Защита плагинов
Как продавать плагин без исходника: упаковка .jar в защищённый .bin, активационные коды, привязка к ПК и кабинет автора.
На этой странице
Готовый плагин можно продавать, не отдавая исходный код. Автор упаковывает свой .jar в защищённый файл .bin: тело зашифровано, имена классов обфусцированы, а расшифровка идёт только в памяти приложения — в открытом виде на диск плагин не попадает.
Дополнительно автор может включить активационные коды: один код — одна продажа. Покупатель вводит код один раз, код привязывается к его компьютеру, и пересланный кому-то файл у другого человека не откроется. После продажи у автора остаётся контроль: статистика по кодам, отзыв кода, сброс привязки.
- Автору — продаёшь результат, а не исходник; копию не перепродать; после продажи можно отозвать код или перепривязать его к новому ПК.
- Покупателю — плагин ставится как обычный, активация одна, работает на твоём ПК; обновления и поддержку даёт автор.
Интерфейс приложения англоязычный, поэтому названия кнопок и сообщений даны здесь как есть, с пояснением.
Покупателю
Что ты получаешь от автора
- файл
.bin— защищённый плагин; - активационный код вида
PLG-XXXX-XXXX-XXXX-XXXX— если автор включил контроль доступа. У «просто зашифрованного» плагина кода нет.
Как открыть плагин
На вкладке Script есть одна кнопка открытия плагина (иконка плагина, диалог «Open plugin (.jar / .bin)»). Через неё открываются и обычные .jar, и защищённые .bin — тип файла приложение определяет само, отдельной кнопки для защищённых нет.
- 1. Нажми кнопку открытия плагина и выбери
.bin. - 2. Если плагин требует код, появится окно Activation code с подсказкой
PLG-XXXX-XXXX-XXXX-XXXX. Введи код и нажми Activate (или Enter в поле). - 3. Код можно вставить ровно так, как прислал автор, — с дефисами, пробелами или без: формат выравнивается сам.
Привязка к компьютеру
При первой активации код привязывается к этому ПК. Дальше на том же компьютере плагин открывается без повторного ввода. Тот же файл и тот же код на другом ПК не сработают — если ты сменил компьютер, напиши автору: он сбросит привязку, и код можно будет активировать заново.
Что нужно для запуска
- приложение с активной лицензией — ты залогинен как обычно;
- интернет в момент открытия плагина.
Ключ расшифровки выдаёт сервер, и закрытый ключ сервер никогда не покидает. Поэтому защищённый плагин не открывается оффлайн или без лицензии — это часть защиты, а не случайное ограничение.
Возможные ошибки
| Сообщение в приложении | Что значит и что делать |
|---|---|
| This plugin needs an activation code. | Плагин защищён кодом — введи код, который дал автор. |
| Code not valid — check it and try again. | Код введён с ошибкой — проверь и повтори. |
| Already activated on another PC — contact the plugin author. | Код уже привязан к другому компьютеру. Попроси автора сбросить привязку. |
| This code was revoked by the author. | Автор отозвал код. Обратись к автору. |
| Plugin not registered (corrupt or tampered .bin). | Файл повреждён или изменён — попроси у автора оригинал. |
| Plugin file is corrupted. | Файл повреждён — скачай его заново или попроси у автора ещё раз. |
| Server error — try again later. | Временная ошибка сервера — повтори позже. |
Исходник остаётся у автора
Плагин у тебя работает, но исходного кода ты не получаешь: расшифрованный плагин живёт только в оперативной памяти приложения, в открытом виде на диск не пишется, а имена внутри обфусцированы.
Автору
Всё, что нужно автору, — на вкладке Script, две кнопки:
- Plugin author (иконка ключа) — кабинет автора;
- Protect plugin (иконка щита) — упаковка
.jarв.bin.
Аккаунт автора
Отдельный аккаунт по email и паролю. С игровой лицензией он не связан: это постоянная «личность автора», за которой числятся твои плагины и коды.
- Регистрация — прямо в окне кабинета. После неё придёт письмо, а приложение покажет «Verification email sent — open the link, then sign in.»: подтверди email по ссылке и войди.
- Вход — email и пароль, кнопка Sign in.
- Забыл пароль — кнопка Forgot?: на почту придёт код сброса, затем вводишь email, код и новый пароль и жмёшь Reset.
- Пароль — от 8 до 128 символов.
Вход хранится только в памяти приложения: после перезапуска в кабинет нужно войти заново. Так задумано. В пределах одного запуска вход действует до 30 дней.
Упаковка плагина
- 1. Нажми кнопку со щитом и выбери свой
.jar. - 2. В окне Protect plugin задай название и включи нужные опции (таблица ниже).
- 3. Нажми Pack… и выбери, куда сохранить
.bin.
| Поле | Что делает |
|---|---|
| Name | Название плагина — под ним он будет виден в кабинете. |
| Obfuscate (ProGuard) | Обфускация: классы и методы переименовываются, и код становится нечитаемым. |
| Access control (activation codes) | Защита активационными кодами: без кода плагин не откроется. |
Если включён контроль доступа, а ты не вошёл в кабинет, окно подскажет: «Access control needs an author sign-in — open the key button first» — сначала войди через кнопку с ключом.
Какой режим выбрать
| Режим | Что даёт | Нужен код покупателю |
|---|---|---|
| Только шифрование | .bin зашифрован, исходник из него обычными средствами не достать. Откроет любой пользователь приложения с лицензией. Подходит, если ты не против свободного распространения среди своих, но хочешь скрыть код. | нет |
| + Obfuscate | Имена внутри кода перемешаны — даже снимок из памяти не даёт читаемой логики. | нет |
| + Access control | Без валидного кода файл не откроется. При упаковке плагин сам регистрируется в кабинете — появляется в My plugins, и под него можно выпускать коды. | да |
Для продажи рекомендуем Obfuscate + Access control.
Коды и продажи
В кабинете — список My plugins. У каждого плагина счётчик unused · used · revoked: сколько кодов свободно, активировано и отозвано. Кнопка Codes открывает управление кодами плагина:
- Generate N — выпустить от 1 до 100 кодов за раз. Новые коды показываются блоком с кнопкой Copy all — скопировать все сразу.
- Ниже — список всех кодов плагина. У каждого свой статус, разным цветом: unused — свободен, used — активирован, revoked — отозван.
| Кнопка у кода | Что делает |
|---|---|
| Copy | Копирует один код — чтобы отдать покупателю. |
| Reset | Сбрасывает привязку к ПК: код снова можно активировать. Например, когда покупатель сменил компьютер. |
| Revoke | Отзывает код навсегда. Например, при возврате денег или нарушении. |
Схема простая: 1 код = 1 продажа. Выпускаешь коды, отдаёшь по одному каждому покупателю, следишь за статистикой и при необходимости управляешь привязками.
Почему это надёжно
- Тело плагина зашифровано AES-256, ключ к нему защищён RSA. Закрытый ключ хранится только на сервере и на компьютер покупателя не попадает.
- Расшифровка идёт только в оперативной памяти приложения — исходный код не сохраняется на диск ни на одном шаге.
- Обфускация переименовывает внутренности так, что даже снимок из памяти не даёт читаемого кода.
- Привязка к ПК, отзыв и сброс — у автора остаётся контроль над копиями после продажи.
Вопросы и ответы
Вопросы покупателя
- Можно открыть плагин без интернета? — Нет: ключ выдаёт сервер, нужны связь и активная лицензия.
- Перенёс плагин на другой компьютер — не открывается. — Код привязан к первому ПК. Напиши автору, он сбросит привязку.
- Потерял код. — Коды хранятся у автора, обратись к нему.
- Ввёл код, а на этом же ПК он просит его снова. — Проверь интернет и лицензию. Если ошибка повторяется — напиши автору.
Вопросы автора
- Нужно входить в кабинет каждый раз? — Да, после каждого перезапуска приложения: вход хранится только в памяти.
- Чем Reset отличается от Revoke? — Reset снимает привязку к ПК, и код снова рабочий. Revoke отзывает код насовсем.
- Плагин не появился в My plugins. — Туда попадают только плагины, упакованные с Access control. «Просто зашифрованные» в списке не показываются.
- Сколько кодов можно выпустить? — До 100 за одну генерацию, генерировать можно сколько угодно раз.
- Покупатель сменил ПК — как помочь? — Найди его код в списке и нажми Reset.
Термины
| Термин | Значение |
|---|---|
| Плагин | Kotlin-скрипт в .jar, который подключается к боту. Как его собрать — на странице Начало. |
.bin | Защищённый, зашифрованный плагин — результат упаковки. |
| Обфускация | Перемешивание имён в коде, чтобы его нельзя было прочитать. |
| Активационный код | Код вида PLG-XXXX-XXXX-XXXX-XXXX, которым защищена продажа. |
| Привязка | Закрепление кода за конкретным компьютером при первой активации. |
| Автор | Продавец плагина: аккаунт по email и паролю со своим кабинетом. |
| Покупатель | Пользователь приложения, купивший плагин у автора. |