Автору, ничего не стоит в каждой версии программы менять алгоритм защиты.
Конечно, при условии, что его возможно динамически изменять.
В этом случае, штатный cracker будет постоянно занят снятием защиты