Ikar BotHardShiftRoadmapContactGet
Plugin protection

Plugin protection

How to sell a plugin without its source: packing a .jar into a protected .bin, activation codes, PC binding and the author dashboard.

On this page

You can sell a finished plugin without handing over its source code. The author packs their .jar into a protected .bin file: the body is encrypted, class names are obfuscated, and decryption happens only in the app's memory — the plugin never lands on disk in readable form.

On top of that the author can turn on activation codes: one code — one sale. The buyer enters the code once, the code is bound to their computer, and a file passed on to someone else won't open for them. The author keeps control after the sale: code statistics, revoking a code, resetting a binding.

  • For the author — you sell the result, not the source; a copy can't be resold; after the sale you can revoke a code or rebind it to a new PC.
  • For the buyer — the plugin installs like any other, one activation, runs on your PC; updates and support come from the author.

The app's interface is in English, so button labels and messages are quoted here exactly as they appear.

For buyers

What you get from the author

  • a .bin file — the protected plugin;
  • an activation code like PLG-XXXX-XXXX-XXXX-XXXX — if the author turned on access control. A plugin that is "just encrypted" has no code.

Opening the plugin

The Script tab has a single button for opening plugins (plugin icon, "Open plugin (.jar / .bin)" dialog). It opens both regular .jar files and protected .bin files — the app tells them apart on its own, there is no separate button for protected ones.

  • 1. Click the open-plugin button and pick the .bin.
  • 2. If the plugin needs a code, an Activation code window appears with the hint PLG-XXXX-XXXX-XXXX-XXXX. Enter the code and click Activate (or press Enter in the field).
  • 3. Paste the code exactly as the author sent it — with dashes, spaces or without: the format is normalized for you.

Binding to your computer

On first activation the code is bound to this PC. From then on the plugin opens on the same computer without asking again. The same file and the same code won't work on another PC — if you've switched computers, contact the author: they'll reset the binding and the code can be activated again.

What you need to run it

  • the app with an active license — signed in as usual;
  • an internet connection at the moment you open the plugin.

The decryption key is issued by the server, and the private key never leaves the server. That's why a protected plugin won't open offline or without a license — it's part of the protection, not an arbitrary restriction.

Possible errors

Message in the appWhat it means and what to do
This plugin needs an activation code.The plugin is code-protected — enter the code the author gave you.
Code not valid — check it and try again.The code was mistyped — check it and try again.
Already activated on another PC — contact the plugin author.The code is already bound to another computer. Ask the author to reset the binding.
This code was revoked by the author.The author revoked the code. Contact the author.
Plugin not registered (corrupt or tampered .bin).The file is damaged or modified — ask the author for the original.
Plugin file is corrupted.The file is damaged — download it again or ask the author to resend it.
Server error — try again later.A temporary server error — try again later.

The source stays with the author

The plugin works for you, but you don't get its source code: the decrypted plugin lives only in the app's memory, is never written to disk in readable form, and the names inside it are obfuscated.

For authors

Everything an author needs is on the Script tab, two buttons:

  • Plugin author (key icon) — the author dashboard;
  • Protect plugin (shield icon) — packs a .jar into a .bin.

Author account

A separate account with email and password. It isn't tied to the game license: it's your permanent "author identity" that owns your plugins and codes.

  • Sign up — right in the dashboard window. A verification email follows, and the app shows "Verification email sent — open the link, then sign in.": confirm your email via the link, then sign in.
  • Sign in — email and password, the Sign in button.
  • Forgot your password — the Forgot? button: a reset code arrives by email, then you enter your email, the code and a new password and click Reset.
  • Passwords are 8 to 128 characters long.

The sign-in is kept in the app's memory only: after a restart you need to sign in to the dashboard again. That's by design. Within one run a sign-in lasts up to 30 days.

Packing a plugin

  • 1. Click the shield button and pick your .jar.
  • 2. In the Protect plugin window, set a name and turn on the options you need (see the table below).
  • 3. Click Pack… and choose where to save the .bin.
FieldWhat it does
NameThe plugin's name — the one it's listed under in your dashboard.
Obfuscate (ProGuard)Obfuscation: classes and methods are renamed, so the code becomes unreadable.
Access control (activation codes)Protection with activation codes: without a code the plugin won't open.

If access control is on but you aren't signed in, the window tells you: "Access control needs an author sign-in — open the key button first" — sign in with the key button first.

Which mode to pick

ModeWhat it gives youBuyer needs a code
Encryption onlyThe .bin is encrypted; the source can't be pulled out of it by ordinary means. Anyone with the app and a license can open it. Good when you don't mind it spreading among your own people but want to hide the code.no
+ ObfuscateNames inside the code are scrambled — even a memory snapshot doesn't give you readable logic.no
+ Access controlThe file won't open without a valid code. Packing registers the plugin in your dashboard automatically — it shows up under My plugins, and you can issue codes for it.yes

For selling, we recommend Obfuscate + Access control.

Codes and sales

The dashboard has a My plugins list. Each plugin shows a unused · used · revoked counter: how many codes are free, activated and revoked. The Codes button opens code management for that plugin:

  • Generate N — issue 1 to 100 codes at a time. New codes appear as a block with a Copy all button to copy them in one go.
  • Below is the list of all the plugin's codes. Each has its own status, color-coded: unused — free, used — activated, revoked — revoked.
Button on a codeWhat it does
CopyCopies a single code — to hand it to a buyer.
ResetResets the PC binding: the code can be activated again. For example, when a buyer switched computers.
RevokeRevokes the code for good. For example, after a refund or a violation.

The model is simple: 1 code = 1 sale. Issue codes, give one to each buyer, keep an eye on the statistics and manage bindings when needed.

Why it holds up

  • The plugin body is encrypted with AES-256, and its key is protected with RSA. The private key is kept on the server only and never reaches the buyer's computer.
  • Decryption happens only in the app's memory — the source code isn't saved to disk at any step.
  • Obfuscation renames the internals so that even a memory snapshot doesn't yield readable code.
  • PC binding, revoking and resetting — the author keeps control over copies after the sale.

FAQ

Buyer questions

  • Can I open the plugin without internet? — No: the key comes from the server, so you need a connection and an active license.
  • I moved the plugin to another computer and it won't open. — The code is bound to the first PC. Contact the author, they'll reset the binding.
  • I lost my code. — Codes are kept by the author, ask them.
  • I entered the code, but it asks again on the same PC. — Check your connection and license. If the error keeps coming back, contact the author.

Author questions

  • Do I have to sign in to the dashboard every time? — Yes, after every app restart: the sign-in is kept in memory only.
  • What's the difference between Reset and Revoke? — Reset removes the PC binding, and the code works again. Revoke cancels the code for good.
  • My plugin didn't show up in My plugins. — Only plugins packed with Access control are listed there. "Just encrypted" ones don't appear.
  • How many codes can I issue? — Up to 100 per generation, and you can generate as many times as you like.
  • A buyer switched PCs — how do I help? — Find their code in the list and click Reset.

Glossary

TermMeaning
PluginA Kotlin script in a .jar that plugs into the bot. How to build one — see Getting started.
.binA protected, encrypted plugin — the result of packing.
ObfuscationScrambling the names in code so it can't be read.
Activation codeA code like PLG-XXXX-XXXX-XXXX-XXXX that protects a sale.
BindingTying a code to a specific computer on first activation.
AuthorThe plugin's seller: an email-and-password account with its own dashboard.
BuyerAn app user who bought a plugin from an author.