... y luego uno recibe otro valor para validar el programa pero en que se basa ese ultimo valor?
En el valor que haz enviado.
Hay
infinitas implementaciones de este tipo de proteccion.
La idea es generar un codigo para cada PC, lo mas unico posible (hwid).
Luego se usa un algoritmo para generar un "codigo" (el cual es reflejo de los datos usados para hacer el hwid).
Ese codigo es enviado por el usuario y en base al mismo, se genera otro codigo, el cual sera verificado por el programa.
Como dije al principio, hay infinitas formas de hacer esto.
Saludos!