Многие ответы, похоже, упускают из виду тот факт, что вопрос заключался в том, как сделать это сложнее, а не в том, как сделать это невозможным.
Запутывание является первым критическим шагом в этом процессе. Что-нибудь еще будет слишком легко понять, если код не запутан.
После этого все зависит от того, чего вы пытаетесь избежать. Установка без лицензии? Взрыв на время? Увеличение использования программного обеспечения (например, на большем количестве процессоров) без дополнительной оплаты?
В современном мире виртуальных машин долгосрочная стратегия противодействия взлому должна включать в себя домашний вызов. Окружающая среда просто слишком легко сделать нетронутой. Тем не менее, некоторые типы программного обеспечения бесполезны, если вам нужно вернуться в первозданное состояние, чтобы использовать их. Если это ваш тип программного обеспечения, то есть довольно туманные места для внесения данных в реестр для отслеживания временных испытаний. И вообще схема лицензионного ключа, которую трудно подделать.
Одна вещь, о которой нужно знать, - не слишком увлекайтесь. Довольно часто схема лицензирования получает наименьшее количество QA и сталкивается с серьезными проблемами в производстве, когда законные клиенты блокируются. Не отгоняйте реальных платящих клиентов из-за страха перед копированием со стороны людей, скорее всего, все равно не заплатили бы вам ни копейки.