Общего ответа на такой вопрос нет. Обсуждать конкретные механизмы не хватит места и времени, но есть несколько подходов к данному вопросу:
использование магазинов приложений;
программно-аппаратная защита, разнообразные USB ключи и т. д.
завязывание софта на онлайн-сервис, без которого использование ПО теряет большую часть ценности.
Если вы посмотрите на успешные проекты, то увидите, что большинство из них, обычно, используют один из указанных подходов. Вопрос «слома» защиты — это вопрос того, насколько готов тратить ресурсы «взломщик» на неавторизованный доступ к программе. Поэтому тут скорее правильный вопрос состоит не в том, как защититься от взлома, а в том, как правильно определить свою аудиторию и подобрать механизм распространения/защиты так, чтобы это было удобно пользователю, при этом защитило от некоторого базового уровня атак на программу.