¡Cómo escribir un programa de registro de software de seguridad muy completo! La idea de programación no es un problema, no se requiere código.
(1) Antes de que finalmente se lance el software, el programa ejecutable debe empaquetarse/comprimirse para que el descifrador no pueda modificarlo directamente. Si el tiempo lo permite y tiene las habilidades técnicas, es mejor diseñar su propio método de carcasa/compresión. Si utiliza herramientas de embalaje ya preparadas, es mejor no elegir herramientas populares, porque estas herramientas han sido objeto de una investigación extensa y profunda y tienen un método universal de embalaje/descompresión. Además, es una buena idea utilizar dos o más herramientas diferentes para descomprimir/comprimir el programa y aprovechar al máximo las propiedades anti-seguimiento proporcionadas por estas herramientas.
(2) Agregar verificación de integridad del software en sí. Esto incluye verificar archivos de disco e imágenes de memoria para evitar que alguien modifique el programa sin permiso para descifrarlo. Se puede comprobar la integridad entre DLL y EXE.
(3) No nombre funciones ni archivos con nombres obvios, como IsLicenseedVersion(), key.dat, etc. Todas las cadenas relacionadas con la protección del software no se pueden almacenar directamente en el archivo ejecutable en texto claro; es mejor generar estas cadenas dinámicamente.
(4) Avise al usuario lo menos posible, porque estas pistas pueden llevar al descifrador directamente al núcleo de la protección. Por ejemplo, cuando se detecta un intento de craqueo, no avise al usuario inmediatamente, sino coloque una marca en algún lugar del sistema para permitir que el software deje de funcionar después de un período de tiempo aleatorio, o finja que funciona normalmente pero en realidad agregue algo de basura al archivo. datos procesados.
(5) Registre el código de registro y el tiempo de instalación fuera del sitio.
(7) Intente comprobar la información de registro y el código de tiempo por separado. No llame a la misma función y no juzgue la misma bandera global, porque si hace esto, se descifrarán todos los cambios en un solo lugar.
(8) No confíe en funciones conocidas como GetLocalTime() y GetSystemTime() para obtener la hora del sistema. Puede obtener información sobre la hora del sistema leyendo las horas de modificación de los archivos clave del sistema.
(9) Si es posible, puede verificar el código de registro en línea. Los datos deben estar cifrados durante la transmisión en línea.
(10) Además del bombardeo/compresión, también necesitamos programarnos e incrustar códigos anti-seguimiento en el software para aumentar la seguridad.
(11) Al verificar la información de registro, se inserta una gran cantidad de operaciones inútiles para engañar al descifrador, y la demora aumenta después de verificar la información de registro incorrecta.
(12) Agregue algo de aleatoriedad a la protección del software. Por ejemplo, además de verificar el código de registro al inicio, también puede verificar el código de registro aleatoriamente en un momento determinado mientras el software se está ejecutando. Los valores aleatorios también pueden bloquear herramientas de emulación como los emuladores de dongle.
(13) Si usa protección de código de registro, es mejor usar un código de máquina, es decir, el código de registro en una máquina está relacionado con las características de la máquina, de modo que el código de registro en una máquina no se puede utilizar en otra máquina para evitar que alguien difunda el código de registro. Además, no sea demasiado supersticioso con el número de serie del disco duro en el algoritmo del código de la máquina, porque su valor se puede modificar con elementos relevantes. herramientas.
(14) Si la versión de prueba y la versión oficial son dos versiones independientes y el software de la versión de prueba no tiene una función determinada, no solo atenúe el menú correspondiente, sino que elimine por completo el código correspondiente. de modo que no haya ningún código de función relevante en el programa compilado.
(15) Si el software contiene un controlador, es mejor agregarle un criterio de protección. Debido a que los controladores tienen muchas menos restricciones que las aplicaciones ordinarias para acceder a los recursos del sistema, esto también les da a los diseñadores de software espacio para jugar.
(16) Si se adopta el método de protección del archivo clave, el tamaño del archivo clave no puede ser demasiado pequeño y su estructura puede diseñarse para que sea más compleja, de modo que se puedan calcular y analizar diferentes partes del archivo clave. calculado en diferentes lugares del programa.
(17) El algoritmo de diseño propio para verificar la información de registro no debería ser demasiado simple. Es mejor utilizar un algoritmo de contraseña maduro.
Puede encontrar una gran cantidad de código fuente en línea.