2009-12-25 4 views

Respuesta

2

acabo de escribieron los usuarios clave de licencia y combinar correo electrónico a un archivo en "~/Library/Application Support/MyApplication/License.myApplicationlicense ". Creo que esto es mejor que usar NSUserDefaults porque el usuario se espera que sea capaz de arrojar sus Preferencias sin tener nada dramático suceda como tener que volver a registrar su aplicación.

El archivo es solo el contenido de un NSDictionary escrito usando writeToFile: atómicamente: y leer usando dictionaryWithContentsOfFile :. Los contenidos no están encriptados, pero eso normalmente no es importante según cómo funcione su esquema de licencia.

También le sugiero que eche un vistazo a AquaticPrime si aún no lo ha hecho. Decidí rodar mi propio esquema de licencia porque quería códigos de licencia y no de licencia. Al final, creo que hubiera sido mejor seguir con AquaticPrime, que es mucho más criptográficamente seguro que mi propio esquema de licencia. Cuando utilicé AquaticPrime durante mi beta, almacené el archivo de licencia en la misma ubicación mencionada anteriormente.

+0

Eso es exactamente lo que hice, excepto que usé NSKeyedArchiver para codificar los datos en lugar de NSDictionary. Agrega un nivel extra de seguridad. En cuanto a AquaticPrime, consulte esto: http://toxicsoftware.com/aquaticprime-warning/ – Chetan

+0

Debe señalarse que lo que aquí se describe es una falla binaria en el software. La defensa contra las fallas binarias es algo que nadie ha resuelto ya que incluso el cifrado de la aplicación iPhone se ha descifrado. Así que debes decidir qué quieres lograr. Propongo que desee mantener honestas a las personas honestas y tener un sistema de generación de claves de licencia que evite que alguien genere su propio generador de licencias para su aplicación. AquaticPrime logra esto con algunas advertencias. Debe compilar el código y ofuscar la clave pública y los métodos. –

0

Puede usar NSUserDefaults o un sistema de su propia invención.

1

He decidido usar NSKeyedArchiver porque mantiene los datos codificados, por lo que es más difícil acceder manualmente y cambiar los datos confidenciales, como la clave de licencia y el estado activado.

+0

Usted podría estar interesado en http://www.cocoadev.com/index.pl?MAKeyedArchiver – RCIX

+0

Eso parece útil. Voy a intentar eso. Utilicé este tutorial para escribir la clave de licencia y la información de activación en un archivo en la carpeta de datos de aplicación del usuario: http://cocoadevcentral.com/articles/000084.php – Chetan

2

Sugiero que la clave dependa de un asunto específico del usuario, es decir, correo electrónico o nombre completo o tal vez una identificación específica de la máquina si es necesario. A continuación, puede almacenarla en los NSUserDefaults o una llanura punto llamado archivo en el directorio personal del usuario. Esto sin necesidad de encriptarlo o hacer una ofuscación loca. Habrá piratería, asegúrese de eso, creo que esta es gente que nunca pagaría por nada, así que en realidad no pierde nada. Al hacer que la clave dependa de algo específico del usuario, el usuario se vuelve un poco más resistente para compartirla.

Sobre la piratería. ¿Qué tan lejos crees que pueden ir? Hice una pequeña herramienta que funcionó bien sin pagar nada. Pero como un regalo para aquellos que quisieran apoyar el esfuerzo de crearlo, agregué una pequeña característica para cambiar el color de los gráficos en él por solo $ 5. Bueno, ¿qué hicieron? Alguien realmente revirtió la ingeniería de la llave y crearon un keymaker. Admito que no he puesto mucho esfuerzo en el algoritmo de ofuscación, pero bueno, me he centrado más en lo que es fácil para todos los usuarios reales agradables a la entrada que hacer la vida más difícil para cualquier galleta. Estoy más feliz por lo que pensaron que mi pequeña aplicación valió la pena para realizar la ingeniería inversa de la clave.

Enlaces:

10

Apple proporciona una instalación completa para este tipo de requerimientos. Lo que quieres es la API de Keychain.

+1

+1 esta es la respuesta correcta. Cualquier información sensible debe almacenarse en el llavero. Llamaría a la clave de licencia de un usuario "sensible" porque si la pierden, desaparecerá. –

+1

Pero nunca he visto ninguna aplicación de software almacenar su clave de licencia en el llavero. Si el usuario pierde la clave de licencia, debe tenerla guardada en su correo electrónico o debería poder contactar al servicio de atención al cliente. Incluso los datos de Keychain se pueden perder, al igual que los datos en la carpeta de inicio del usuario. – Chetan

Cuestiones relacionadas