Pregunta

Tengo una pregunta sobre una buena manera de proteger un poco mi aplicación de cacao de la piratería. ¡Sé que esto es imposible!

Entonces, en mi aplicación tengo un método isRegistered () que se ejecuta cada vez que el usuario inicia la aplicación. Esto se llama desde el delegado de la aplicación applicationDidFinishLaunching: . Entonces, si este método devuelve verdadero, la aplicación continúa ejecutando el código; de lo contrario, aparece una alerta que dice que la aplicación no está registrada y que hay xx días para comprar una licencia.

Esta es una buena manera? Porque no tengo experiencia en esto.

¡Gracias de antemano por su ayuda!


RESUELTO

En primer lugar, ¡gracias a todos! Creo lo mismo: cualquier protección contra copia puede detener la piratería. Solo intento resolver este pequeño error, incluso si sé que alguien volverá a descifrar mi aplicación. Sin embargo, es cierto: lo mejor es mejorar la aplicación y no perder el tiempo para intentar que la protección contra la piratería sea más eficiente.

¿Fue útil?

Solución

La solución que describe casi no requiere experiencia alguna para descifrar. Es trivial cambiar su función isRegistered () para que siempre devuelva verdadero. Por lo tanto, el esfuerzo requerido para evadir su protección es una pequeña fracción del esfuerzo que tendría que dedicar a implementar toda la infraestructura para ayudar a los usuarios a comprar códigos de registro.

En otras palabras, no está obteniendo un buen retorno de la inversión. Existe cierto debate sobre si el retorno de la inversión que implementa la protección contra la piratería (en lugar de mejorar su producto) es nunca lo suficientemente bueno (porque se enfrenta a personas que no tienen nada mejor que hacer que demostrar que son más inteligentes) que tú).

Una buena manera de corregir el saldo del retorno de la inversión es usar código preexistente como AquaticPrime . De esa manera, al menos no habrás pasado tanto tiempo persiguiendo arcoiris :)

Otros consejos

No estoy en un negocio de software reducido, pero mi amigo sí. Y su observación después de 10 años de vender su producto fue que no tiene sentido crear una protección demasiado sofisticada porque siempre alguien la hackeará. Estás solo y el mundo es infinito. Es mejor invertir tiempo / dinero en mejorar su software que trabajar en la protección de copia.

También tenga en cuenta que alrededor del 10% de nunca robará y otro 10% siempre lo intentará. Solo asegúrese de que ese 80% pueda comprar su producto sin ningún otro obstáculo importante. De lo que podría ignorar ese desagradable 10%. En realidad es una cita de Joel Spolsky IHMO.

Entonces, su solución parece estar completamente bien desde el punto de vista técnico y simplemente quedarse con ella.

casi nunca vale la pena implementar su propio sistema antipiratería, porque casi siempre gastará mucho esfuerzo en algo que luego se puede romper con mucha facilidad. Confíe en una implementación compartida: en este caso, un marco como AquaticPrime (mucha gente en macsb la lista de correo recomienda eso) - y está confiando efectivamente en que el marco es bueno suficiente para proteger tu propia aplicación y todas las demás.

El marco de firma de código en Leopard y posterior le permite firmar su código de manera que si alguna vez se manipula, se negará a ejecutarse; consulte la documentación de la opción kill en página de manual .

Esta es una buena pregunta. Después de leer las respuestas, creo que lo que BitDrink realmente estaba haciendo era esto: sabemos que una función isRegistered () es muy fácil de hackear. Teniendo en cuenta que cualquier sistema de protección eventualmente será pirateado, ¿cuáles son algunas estrategias para escribir una función que es más difícil de hackear que una función isRegistered que devuelve un valor booleano?

Fundamentalmente, cualquier sistema de protección de copia eventualmente tendrá algo parecido a esto:

if (program is registered)
    let the program continue
else
    nagging message
end

Cualquier hacker con una copia de GDB eventualmente encontrará esa primera línea y escribirá un pequeño parche para quitarlo. La mayoría de los sistemas de protección contra copia se centran en la seguridad a través de la oscuridad, es decir, hacen que esa línea sea difícil de encontrar. También puede hacer que este sistema sea más robusto firmando el binario y verificando la firma, pero simplemente agregará otro aro para que los piratas informáticos puedan saltar. Eventualmente encontrarán su clave pública y la cambiarán a su propia clave pública para que puedan reemplazar su firma. Sin embargo, creo que esto los retrasará significativamente. Leopard ofrece una utilidad de firma de código, pero no sé si puede usarse para evitar que se ejecuten aplicaciones firmadas incorrectamente.

No hay una solución perfecta para este problema, pero hay dos cosas principales para recordar:

  1. su sistema de registro se se romperá. No hay absolutamente ninguna forma de evitar esto.
  2. su sistema de reigstration es una barrera entre el usuario y su programa. Debería optimizar para la (con suerte la mayoría de) usuarios legítimos y hacer que esto sea lo más fácil posible.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top