Bu ve benzeri sorunlar çok fazla yaşanıyor. Bu gibi durumlar için benim bir fikrim var.

Yazılımın bir kısmı anahtar olarak sunucuya yüklenir. Yazılım her çalıştığında sunucudaki anahtar kısımda işlem yapmak zorunda olur. her kullanıcı için sunucuda ayrı bir özel anahtar kısım olur. Bir kullanıcı sorun çıkardığında ona ait anahtar kulanım izni kaldırılır. Bu sayede yazılımın çalışması imkansız hale gelir.

Anahtar olarak bahsettiğim kısım bir güvenlik sistemi de olabilir. Ancak bence yazılımın çalışması için gereken birkaç fonksiyon olmalı. Bu sayede daha yüksek bir güvenlik sağlanır.
Kullanıcı açık kaynak yazılımın işleyişini tam çözse bile, anahtar diye bahsettiğim alan mevcut olmadığı için yazılım bütününü tahmin edemez.

Bu yolla ücretsiz sınırlı kullanım, shareware, zaman sınırlı satış, aylık ücretlendirmeli satış gibi özellikler sğalanabilir. hem yazılımcı hemde müşteri taafı için birçok faydalı seçenek sağlanabilir.

Örneğin bir php scriptin çalışması için birçok fonksiyon gereklidir. Bu fonksiyonların birkaç tanesi ayrı bir web sitesinde barındırılır. Kullanıcı yazılmı her kullandığında harici onay sitesindeki fonksiyonu kullanmak zorundadır. Tabii bunu görmesi çözmesi mümkün değil.

Bir scriptin en hayati fonksiyonları bu şekilde garanti alına alınabilir.