En primer lugar, tenga en cuenta que el dongle solo proporcionará un poco de un obstáculo. Alguien que sepa lo que está haciendo simplemente eliminará la llamada al dongle y colocará un 'verdadero' para cualquier resultado que se haya llamado. Todos te dirán esto. ¡Pero hay obstáculos que puedes agregar!
Me gustaría encontrar una parte clave de su código, algo que es difícil o difícil de conocer, algo que requiere conocimiento del dominio. Luego ponga ese conocimiento en la llave. Un ejemplo de esto serían las rutinas shader. Las rutinas de Shader son archivos de texto que se envían a una tarjeta gráfica para lograr efectos particulares; un filtro de brillo/contraste muy simple tomaría menos de 500 caracteres para implementarlo, y puede almacenarlo en el espacio de usuario en la mayoría de los dongles. Luego, coloca esa información en la clave y solo utiliza la información de la clave para mostrar las imágenes. De esa forma, si alguien intenta simplemente quitar su dongle, todas las imágenes de su programa se perderán. Haría falta que una persona tenga una copia de su programa, tome el archivo de texto de la clave y luego modifique su programa para incluir ese archivo de texto y luego sepa que ese archivo en particular será la forma "correcta" de mostrar las imágenes. Los detalles de la implementación dependen de su plataforma de implementación. Si está ejecutando un programa en WPF, por ejemplo, puede almacenar una rutina de directx en su clave, y luego cargar esa rutina desde la tecla y aplicar el efecto a todas las imágenes en su aplicación. El cracker tiene que ser capaz de interceptar esa rutina de directx y aplicarla correctamente.
Otra posibilidad es utilizar las rutinas de generación de números aleatorios de la clave para desarrollar UID. Tan pronto como alguien elimine la funcionalidad del dongle, todos los UID generados se pondrán a cero.
Lo mejor que se puede hacer, sin embargo, es poner una función específica de dominio en el dongle (como la rutina de generación de UID completa). Los diferentes fabricantes tendrán diferentes capacidades en este sentido.
¿Cuánto de un obstáculo le conseguirán estas habilidades? Realistamente, depende de la popularidad de su programa. Cuanto más popular sea su programa, más probabilidades habrá de que alguien quiera descifrarlo, y dedicará su tiempo a hacerlo. En ese escenario, es posible que tenga unos días si es particularmente bueno en la codificación de dongle. Si su programa no es tan popular (digamos que solo unos pocos cientos de clientes), la sola presencia de un dongle podría ser lo suficientemente disuasorio sin tener que hacer nada inteligente.
"P.S: Por favor, no sugiera ofuscación. Ya lo hice." lol. –