Pregunta

Estoy trabajando en la creación de una versión de prueba completamente funcional de un software.Ahora, como no quiero una prueba de tiempo limitado (como una prueba de 30 días) o de funcionalidad limitada, sería bueno optar por la prueba de "número de veces que un usuario puede ejecutar el software".

Es una aplicación .NET basada en C# y estoy intentando encontrar una manera de implementarla.Probé claves de registro, seguimiento basado en archivos, etc., pero no parecen ser muy confiables.

Realmente agradecería ayuda sobre este tema.

Gracias Rohan

¿Fue útil?

Solución

Las dos formas habituales de realizar un seguimiento de un período de prueba son con una clave de registro y con un servicio web:

  • Clave de registro: Implemente algún método para conservar el número de inicios de programas en una clave del Registro de Windows, probablemente con algún tipo de ofuscación.Un esquema de cifrado "saltado", en el que cifra un esquema que contiene su valor más algún valor dependiente de la máquina, como la dirección MAC de la NIC, probablemente funcionaría mejor;asegúrese de que su código sea difícil de descompilar, usando algo como Dotfuscator.Lo mejor sería colocar la clave en los lugares usando el instalador, para que el programa pueda simplemente tratar la ausencia de la clave como un intento de manipulación.

    Luego, al iniciar, recupere la clave, descifre e inspeccione.Si es lo que espera, agregue 1 al valor, escríbalo nuevamente en el registro y, si el nuevo valor es mayor que la cantidad de inicios permitidos, bloquee al usuario.Si la clave de registro alguna vez tiene un valor que no espera (lo que significa que la alteraron), incluso si no está presente en absoluto, simplemente bloquee al usuario.

    La ventaja de este enfoque es que proporciona una seguridad muy sólida sin necesidad de Internet.La desventaja es que los detalles "dependientes de la máquina" pueden cambiar por razones legítimas, y cuando eso sucede, su usuario queda bloqueado antes de haber utilizado todos sus inicios, lo que puede frustrar a los usuarios.Además, su implementación para el salting y el cifrado está presente en la computadora del usuario;un hacker sofisticado tendrá formas de examinar su programa incluso si ofusca el código, y podrá descubrir su implementación e imitarla para "restablecer" el contador.Sólo se necesita una persona que pueda hacer eso, y habrá una aplicación Warez simple que permitirá que cualquiera pueda hacerlo.

  • Servicio web:Implemente un servicio WCF en un servidor que usted controle.Ciérrelo bien, de modo que la única forma de entrar o salir desde fuera de su LAN sea a través del puerto WCF exactamente de la manera que WCF espera.Ahora implemente un cliente en su programa y su instalador.Durante la instalación, el instalador llamará a un método de servicio indicando que el software se está instalando en una máquina con una dirección MAC o ID de hardware particular.Si no tiene esa máquina única en su base de datos, agréguela;de lo contrario no hagas nada.Luego, al iniciar el programa, llame al servicio web desde su programa, pase la misma información y el servicio web actualizará el número de inicios y devolverá un valor que le indica al cliente si puede iniciarse.

    La ventaja de un servicio web es que será muy difícil distribuirlo de manera que pueda comercializarse masivamente a través de Warez;La forma principal de atacar un sistema de este tipo es piratear el servidor de licencias o poner un "hombre en el medio" que pueda redirigir la solicitud del servicio web de su programa a una computadora que él controle.La desventaja es que los cambios en la identificación del hardware de una computadora aún pueden provocar bloqueos tempranos o, peor aún, permitir una solución al permitir que el atacante simplemente falsifique una nueva dirección MAC o identificación de hardware que nunca antes haya visto y reinstale el software, lo que proporciona la usuario un nuevo conjunto de inicios en la "nueva" máquina.También hay formas de evitarlo, pero cada nivel de ofuscación y verificación anti-piratería que agregue es una capa más de complejidad.

Hagas lo que hagas, recuerda la regla 80/20;El 80% de sus usuarios se mantendrán honestos mediante las medidas más básicas para asegurar el proceso de prueba.El 20% de sus usuarios encontrarán una manera de evitarlo.De ese 20%, el 80% se verán obstaculizados por cualquier medida adicional que usted implemente.Este proceso es recursivo;El punto es que alguien, en algún lugar, eludirá cualquier medida que usted implemente, pero si las matemáticas se mantienen, el 96% de sus usuarios simplemente cederán y le pagarán por acceso completo cuando se enfrenten a una clave de registro cifrada por turnos y un programa ofuscado. código.Puede hacer llegar eso al 99,2% de los usuarios agregando cualquier otra cosa, como agregar sal a la clave ofuscada con algo específico de la máquina.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top