Code Virtualization allows you to transform select parts of your application's code in order to make them harder to reverse-engineer, understand or modifiy. Native machine code will be converted into functionally equivalent byte code for a virtual CPU that is interpreted during runtime.
Encryption, compression and obfuscation of code and data
In order to prevent disassembly and static analysis or modification of program files on disk, code and data will be encrypted using a strong cryptographic cipher and their integrity verified. Additional compression will typically reduce executable size by more than half.
Runtime Code Encryption
Important parts of your code can be encrypted individually, providing extra protection against modifications while the program is running. Protected code will only be decrypted in memory while it is being executed. You may also protect code in such a way that it can only be decrypted with a valid license.
Easily integrate time trial functionality into your software in order to create time-based 'Try Before You Buy' applications. You may specify a fixed expiration date, set the application to expire after a certain number of days or executions or tie the trial period to actions taken within the application.
Integrated Licensing Systems
Obsidium offers two built-in licensing systems that take advantage of high security asymmetric encryption to prevent generation of fake license keys. Depending on your project's requirements, you may choose between long and short license keys (using RSA and elliptic curve cryptography, respectively) which can be delivered to end-users in binary or textual form. Both types of license keys support fixed expiration dates, hardware locking and license dependent code encryption. Both systems enable you to store some additional data in generated license keys, allowing you to implement custom licensing models.
USB Dongle Support
Obsidium features built-in support for two different types of USB dongles manufactured by Senselock.
Moreover, the USB Licensing feature allows licenses to be locked to virtually any USB device such as flash drives, thus offering simple and inexpensive dongle-like functionality.
Include files and sample applications demonstrating the use of advanced features and the comprehensive protection API are included in the Obsidium package.
Directly supported languages include C/C++ (Visual C++, C++ Builder, Clang etc.), Delphi, Rust, C#, Visual Basic, PureBasic and others.
Easily adopt a concurrent user licensing model using the Network Licensing feature. After purchasing a pool of floating licenses, end-users install a Network Licensing Service in their local corporate network, which manages and distributes licenses to individual users within the network. Flexible licensing options allow for the adaptation to most common usage scenarios.
Transparent String Protection
Obsidium's string protection feature allows you to transparently hide string constants used throughout your application by removing them from their original memory location and placing them inside the protection code, thus making analysis of protected applications even more time-consuming.
Automation of protection and license generation
If supported by your development environment, newly compiled applications can be protected immediately using a dedicated command line version of Obsidium which allows direct access to all of its features. Moreover, a license key generation library is included (as a Windows DLL and Linux CGI) that can easily be integrated into your existing or a third party online licensing/activation service.
Transparency and ease of implementation
Implementing Obsidium in your application is quite easy and does not require advanced programming skills. The protection system is completely self-contained and does not depend on the installation of additional components such as services or drivers. It is fully transparent while applications are in an unprotected state and does not interfere with your usual development and debugging process.
Counter-measures against disassembling, debugging, dumping and patching
Obsidium implements a number of counter-measures against various techniques and tools commonly used by crackers.
Blacklisting of stolen or compromised license keys
License keys that were stolen (e.g. by credit card fraud) or leaked by a customer can be added to a blacklist, thus invalidating the offending licenses in the next release of your software.
Integrated Customer Database
Obsidium's integrated user database allows you to keep track of your customers and any license keys you issued to them.
License keys may be locked to a specific system by computing a unique digital fingerprint using a user-defined list of system components such as CPU, mainboard, operating system, hard disk and MAC address.
Securely embed watermark data into protected files in order to further discourage unauthorized redistribution and trace software leaks back to their source.
File Integrity Checks
Protected applications can be configured to validate a user-defined list of files during startup and refuse to run if any unauthorized modifications are detected.
Data File Encryption
Data file encryption will transparently intercept read/write operations to a user-defined set of files and encrypt/decrypt any data written to/read from these files. This feature allows your application to securely access data files containing sensitive information without having to implement any encryption routines yourself.
Obsidium is available for 32-bit (x86) and 64-bit (x64) Windows systems. Both versions are fully compatible with any Windows operating system ranging from Windows XP to Windows 11 and support virtually all types of natively compiled applications (EXE, DLL, SCR, etc.) as well as .NET Framework 4.x executables.
Protected applications are fully compatible with current security technologies such as DEP, UAC and ASLR.