c++ dll licensing

c++ - Asegure un archivo DLL con un archivo de licencia



licensing (3)

Puede comprobar si hay una licencia dentro de DllMain () y morir si no se encuentra.

¿Cuál es la mejor manera de asegurar el uso / carga de una DLL con un archivo de licencia?


También depende de cómo funciona su algoritmo de licencia. Sugiero que busques utilizar algo como un intercambio de claves Diffie-Hellman (o incluso RSA ) para generar algún tipo de clave pública / privada que se pueda pasar a tus usuarios, en función de cierta información.

(Dependiendo de la aplicación, conozco un caso en el que escribí el código de licencia de un contrato para una empresa, utilizaron una dirección MAC y otros datos, lo cifraron y cifraron el hash, dándoles el "valor clave", si el número de registro fue correcto). Esto asegura que el archivo de clave no se puede mover, (o entregar) a otra máquina, por lo tanto ''robando'' el software.

Si quieres profundizar y evitar los piratas informáticos, ese es otro tema más ...


Un par de cosas que quizás desee considerar:

Verificar suma la DLL. Usando una función hash criptográfica , puede almacenar esto dentro del archivo de licencia o dentro de la DLL. Esto proporciona un método de verificación para determinar si mi archivo DLL original está deshabilitado o si es el archivo de licencia para este archivo DLL. Algunas técnicas simples de intercambio de bytes pueden sacar rápidamente a su función hash de la ruta establecida (y por lo tanto no es fácil de reproducir).

No guarde su hash como una cuerda, divídalo en pantalones cortos sin firma en diferentes lugares.

Como dijo Larry, una dirección MAC es bastante común. Hay muchos ejemplos de cómo obtener eso en The Code Project , pero tenga en cuenta que es fácil de falsificar en estos días.

Mi sugerencia es usar claves privadas / públicas para la generación de licencias.

En resumen, los modos de ataque serán binarios (modifique las instrucciones de su archivo DLL) para protegerse de esto o de la generación de claves, de modo que haga que cada usuario de licencia, máquina e incluso la instalación sean específicos.