Gdyby istniał prosty idealny sposób każdy by go stosował. Wybierz losowy płatny program dopisz crack i wyszukaj to w google. Nawet bardzo skomplikowane zabezpieczenia są łamane.
Swoją drogą skąd program miałby wiedzieć u kogo ma działać, a u kogo nie jeżeli nie pozwalasz mu się łączyć z serwerem? Zazwyczaj aplikacje działają tak, że podajesz jakiś klucz licencyjny, aplikacja łączy się z serwerem, on sprawdza czy klucz jest aktywny, czy np. nie jest tak że 1000 osób używa tego samego klucza itp. Zwraca aplikacji odpowiedź (być może jakieś pliku umożliwiające jej działanie).
Są też pewnie aplikacje które pozwalają dodać klucz offline, wykorzystują różne metody kryptograficzne, aby sprawdzić czy klucz został wygenerowany od twórcy aplikacji, ale takie podejście nie zabezpieczy np. przed problemem który napisałem wyżej.
Ogólnie jeżeli jeden if dzieli tylko aplikację od działania lub nie działania to zwykła osoba znająca assemblera, byłaby w stanie sprawić, że aplikacja uruchomi się zawsze, nawet bez klucza. Dlatego aplikacje jeszcze dodatkowo sprawdzają swój hash, czy nikt jej nie modyfikował itp.