we have an application that is packaged as a Linux VMWare image. Now we have to find a way to protect it against illegal duplication and installation. We have studied several USB dongle-based solutions, but all of them require modifications of the application at the source code level (simple instrumentation is restricted to Windows EXEs). Is there a way to protect a VMWare image from running, and to perform periodic checks?
EDIT: this application is part of a professional solution and not distributed as is. The VMWare packaging is for virtualization purpose, not for distribution. We sell complete solutions for telcos including hardware and support, in the $10k-1M price ranges. However, since the clients have access to the platforms, we have to make sure that they just can't take the images and run them elsewhere or defeat the licensing policy. So the remarks below questioning the need for protection, although perfectly valid in the general case, don't apply there.
Encrypt the disk partitions of the image using Cryptsetup/dm_crypt and then use some machine-specific (real CPU-ID?) element for decryption at boot. But this implies rolling a new image for each customer ... but you could script that.
Although once it is booted, they could rip open the image anyway. Are you not required by GPL to redistribute anyway?
it will be tricky