1. Overview of Software Protection & Licensing
Attackers often crack applications to:
Steal intellectual property, algorithms, or resources → damaging revenue and brand.
Bypass copyright & license protection → creating pirated versions with fake keys or
bypassed license verification.
Common attack methods:
Static analysis: Using decompilers/disassemblers to
reverse code and extract logic.
Dynamic runtime attack: Debugging, hooking, or injecting
tools to trace execution,
intercept communication, and remove license checks.
2. Software Protection Strategy & Target
Protection goals:
- Prevent static & dynamic analysis.
- Ensure application integrity (anti‑tampering, anti‑repackaging).
- Block unauthorized access and usage.
Techniques:
- Obfuscation & virtualization for critical algorithms.
- Runtime detection: signature check, VM/debug detection, self‑protection.
- Secure license verification: encrypt APIs, protect license files in secure
containers.
Choosing the right solution:
- Free tools vs. commercial protectors (appshielding/code hardening tools).
- Latest generation, multi‑layer appshielding (encryption, obfuscation,
virtualization).
- Runtime protection with anti‑debug, anti‑injection.
- GUI & CLI tools for CI/CD integration.
Virbox Protector (basic edition in
Moway SDK) defends against static and dynamic attacks. For advanced security
features, consider using Virbox Protector standalone.
Learn
More
3. Essentials of Software Licensing
Licensing is both a commercial strategy and a security
mechanism.
Implementing and issuing licenses to your users not only defends against software
piracy, but also guarantees that commercial customers are running genuine software.
To
design an effective licensing scheme, developers should consider three aspects:
3.1 Plan Your License Strategy
Well-plan your license strategy according to your application's sales model and
market segment.
- License terms: Subscription, perpetual, feature-based, or
network licenses.
- License forms: Soft license, cloud license, or USB dongle.
- Market alignment: Define terms and forms that match your target
customers and prevent piracy.
3.2 Licensing System / Platform Requirements
A robust licensing system should support:
- Flexible license terms: Define usage by time period, features,
or user groups.
- Flexible license forms: License file, license key/code, or USB
dongle.
- Activation modes: Support both online and offline activation
environments.
- Lifecycle management: Issue, renew, update, and revoke
licenses based on usage.
- Integration: Provide secure APIs/libraries for validation
during application execution.
3.3 License Containers
Developers can choose the right license container depending on requirements:
- Hardware-based license: Secure USB dongle to store license,
keys, and data.
- Cloud license: SaaS platform to issue and validate licenses
online.
- Soft license: License bound to local machine via hardware
fingerprint.
Enforcement Philosophy
When a licensed application runs:
- The system checks if a valid license exists.
- The application executes according to defined terms such as features, time
period, and other usage rules.
- If the license is invalid or expired, the application terminates execution.
4. Implement a Customized Licensing Scheme
Implementing a customized protection & licensing scheme
requires both planning and technical integration.
Here we focus on using the
Virbox Moway USB dongle as a secure license container.
4.1 Well-plan your license policy & form
- Define license terms (subscription, perpetual, feature‑based, etc.).
- Decide license form (USB dongle, cloud license, or soft license).
- Align license strategy with your sales model and market segment.
4.2 Integrate License API with your application
Add and write code in your project to integrate the Moway USB dongle API.
This
allows the application to operate the Moway device, verify/validate the license, and
compile the project with license enforcement logic.
License verification process typically includes:
- When the application executes, enumerate and detect the USB device.
- Call the License API to access the dongle and read the stored license.
- Verify license terms (validity period, features, usage scope).
- If the license is valid → run the application according to defined terms.
- If the license is expired or invalid → terminate execution and close the device.
For implementation details, refer to Moway SDK sample cases.
4.3 Compile & link your application
Compile the project, integrating the license API and verification logic, and link it
to generate a new executable application.
This ensures the final build includes
secure license validation before execution.
4.4 Use Virbox Protector
- Protect your application code logic, especially license verification routines.
- Prevent attackers from tampering with or bypassing license checks stored in the
Moway device.
4.5 License distribution
- Issue licenses using your existing license platform/system.
- Alternatively, use the Moway Toolchain to download license files into the
Moway device.
4.6 Deliver application & license container
- Distribute your protected application together with the Moway dongle
containing the license to users who purchase your software.
4.7 License enforcement in user premise
- When the application executes, it checks the license stored in the dongle.
- If valid → run application according to license terms.
- If expired/invalid → terminate execution and block unauthorized use.
Software Licensing
To against software piracy, there
are enough reason to software developer to define license terms/policy and issue
license to your software user to maximum software sales.
Flexible license terms:
Issue license with different license terms to different
market segment, to support multiple market strategy. To prevent software piracy and
illegal using.
License system/platform
No matter you decide to build up license platform by
yourself (self establish license platform) or select the third party licensing
solution in the market.
The License platform should supports to define flexible
license terms to meet your sales and marketing strategy;
The license platform must capable to define and
issue/renew/update/revoke the license based on the software usage, function,
feature, time period, etc.
So, here are some suggestion to developer when you find
and select licensing solution in the market:
1. Hardware based, Use the secure hardware device(USB dongle) to store the license,
data, key;
2. Cloud license, to store the license file in the third party license system in
Cloud platform (SaaS);
3. Soft license, To generate the license and bind with local machine (generate the
specific hardware fingerprinting correspondent with device)
The Philosophy of License enforcement:
When user execute the licensed software application, the
application will check if license available or not and read the license file and
then application will executed followed by license terms defined: Function, feature,
time period. etc.
Implement a customized protection & licensing scheme: Applicable scenario
Flexible license terms:
- Find and use the latest, multiple encryption layer protector to protect your
apps.
- Plan & build up your customized license policy and license term, according to
your software marketing & sales strategy: subscription, perpetual, network, feature
based license. etc.
- Find and decide license system or other digital credential (key, data, code snippet
or cryptographic algorithm) which stored in the USB device to validate the genie
software or pirated.
-
Select and decide right & proper license container to store the license, key, or
relevant data, file; usually, following container, combine with license scheme
can
be used:
Hardware based device: USB dongle; with secured hardware environment, when
license
store, license can be read and used, and can not copied and take out of USB
dongle;
Cloud license, by leverage the third party cloud base license platform, as a
service platform, issue and store the license in cloud, or private online
platform.
if you want to prefer and select soft license or cloud license, you may
refer Virbox LM solution or contact us to
get more detail information.
-
Implement license verification process in your project:
Here we mainly focus to introduce the USB dongle, as a secure container to store
the license, key or other data which used for license validation.
Add/write code in the software project:
Integrate related USB dongle API, to operate the USB hardware,
verify/validate license inside and compile project;
Usually, the related coding will include following process:
When application execute, enumerate and find the USB device;
Call related License API to access the USB device and read the license
stored;
Verify the license terms,
if the license is valid, execute the application defined by license
terms;
if the license expired, the application will quit execution and close the
device; etc..
for details, you may refer Moway sample case in the SDK;
Developer require to plan use the toolkits provided by USB dongle or employ the third
party license platform to issue the license (file or key) and license update file
and store it in the secure hardware USB dongle;
distribute the USB hardware dongle to your user who purchase the software;
Developer also require to plan/integrate the license issue process with existed e
commerce system;