Originariamente inviata da
Alhazred
1) non puoi, specie se parli di plugin di WP o altri CMS visto che non puoi offuscare il codice
2) metti nel plugin del codice che una volta eseguito invii una richiesta col seriale ad un tuo server su cui si trova il DB con i clienti, lì verifichi che il seriale sia valido e rispondi alla chiamata, se rispondi in modo positivo, il plugin va avanti, in caso contrario mostra un errore.
Il problema è che uno appena smaliziato smanetta un po', trova il tuo codice per il controllo e nell'if ci mette true invece del risultato della chiamata o proprio lo rimuove, così da avere sempre eseguito il ramo che manda avanti il funzionamento del plugin.
Dalla tua parte c'è il fatto che rilasciando aggiornamenti, il codice modificato dall'utente viene sovrascritto riportando il tuo codice con il controllo valido, ma l'utente può ora ripetere la modifica e farlo tornare a funzionare.
Per scoraggiare le modifiche potresti rendere un po' complesso il controllo, per esempio rimbalzando i passaggi di tale procedura in più parti del codice, magari anche in file diversi e cambiandoli da un aggiornamento all'altro, in modo da rendere rognoso modificare ogni volta.