Ikar BotHardShiftПланыКонтактыСкачать
IkarLabsIkar BotScript APIЗащита плагинов
Защита плагинов

Защита плагинов

Как продавать плагин без исходника: упаковка .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 и паролю со своим кабинетом.
ПокупательПользователь приложения, купивший плагин у автора.