Если софт - это что то корпоративное, требующее регулярных обновлений и поддержки, то можно скомбинировать:
1. Генерить ключ в зависимости от MAC-адреса. Клиент регистрирует ключ на портале поддержки и получает файл лицензии. Виртуалку склонировать это не помешает, однако в одной сети с одним маком будет неудобно;
2. Клиента на портале поддержки регистрируют только по корпоративным емейлам и в привязке к текущему контракту. Ну и поддержка должна быть полезной, а не для галочки;
3. Доступ к обновлениям - только для зарегистрированных клиентов;
Все это не помешает клонировать виртуалки, однако во совокупности компании проще купить, чем ловить геморрой с взломанным софтом без поддержки.
Да и принять для себя, что те кто сильно заморочился и готовы пользоваться без поддержки - скорее всего денег вам в любом случае не принесут.