From Obsidium Software
Obsidium is a software protection and licensing system that was designed as an affordable and easy to implement, yet reliable way to protect your software applications and games from unauthorized modifications (i.e. "cracking") and redistribution and provide a secure and flexible licensing/registration system. It is primarily aimed at shareware developers and software companies who would like to provide evaluation versions of their applications, but is not limited to that scenario.
* Code virtualization
Code Virtualization allows you to transform certain 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 that is interpreted during runtime.
* Encryption and compression of application code and data
In order to prevent disassembly and static analysis or modification of your program file on disk, your application's code and data will be encrypted using a strong and fast cipher (AES) and its integrity verified. Additionally, you may choose to compress your application which will typically reduce the size of the executable by up to 50 percent.
* 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 if a valid license key is present.
* Time trials
Obsidium allows you to 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 or set the application to expire after a certain number of days or executions.
* Integrated licensing systems using strong public key cryptography
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 individual needs, you may choose between long and short license keys (using RSA and elliptic curve cryptography, respectively) which can be delivered to your customers in binary or textual form. Both types of license keys support fixed expiration dates, hardware locking and license dependent code encryption. Both internal licensing systems enable you to store some additional data in generated license keys, allowing you to implement custom licensing models.
* 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.
* Protection SDK directly supporting Visual C++, C++ Builder, Delphi, Visual