Básicamente depende de qué tan apretado desee acoplar su software al hardware subyacente. Por ejemplo, podría obtener información de hardware del registro, leer la dirección MAC de la tarjeta LAN, recuperar el fabricante de gfx, la id. De la CPU, etc. y analizar todos estos datos.
Puede utilizar este hash como un código challenge que se envía a su empresa. El cliente luego recibe la versión firmada (con su clave privada) de este hash.
Al iniciar su aplicación, puede verificar si la firma del hash es buena o mala (es decir, ha sido firmada por su empresa).
Esto no solo ata el software a una cierta configuración de hardware, sino que también obliga a los crackers a parchear la aplicación (porque necesitarían parchar la clave pública de su ejecutable y reemplazarla para escribir un keygen). Muchas personas consideran dos veces instalar una grieta obtenida de varias fuentes, en contraste con simplemente ingresar una copia en serie válida de un keygen.
Editar:
Con el fin de comprobar la firma del hash, nada de RSA sobre DSA a ECC se puede utilizar. Puedo recomendar Crypto++ o libTomCrypt para eso.
Nota: se ha agregado una etiqueta de protección contra copia – newgre