2009-08-25 9 views
9

He desarrollado una pieza de software (con C y Python) que quiero proteger con un dongle para que la copia y la ingeniería inversa sean lo suficientemente difíciles. Mi dongle dispositivo viene con una API que proporciona los siguientes:¿Qué código escribir para un sistema adjunto de dongle para proporcionar una mejor seguridad?

  • existencia Comprobar dongle
  • Comprobar llave adecuada
  • Escribir en una posición de memoria en el dispositivo de seguridad
  • Leer de una posición de memoria en el dispositivo de seguridad, etc. (I cree que los silencios no son tan buenos ...)

Lo que puedo hacer en el código fuente para que sea más difícil de descifrar. El proveedor de Dongle sugirió que, debería verificar la existencia de un dongle adecuado en un bucle o después de un evento, o debería usar la memoria del dongle de una manera eficiente. ¿Pero cómo? No tengo idea de cómo crackers crackers. Por favor, arroja algo de luz. Gracias por adelantado.

P.S: Por favor, no sugiera ofuscación. Ya he hecho eso.

+0

"P.S: Por favor, no sugiera ofuscación. Ya lo hice." lol. –

Respuesta

10

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.

-1

Yo diría que si alguien quiere romper su protección de software, lo hará. Cuando dices "lo suficientemente duro", ¿cómo se debe interpretar "lo suficiente"?

Un dongle quizás impida que su usuario promedio copie su software, por lo que en ese sentido ya es "suficiente". Pero cualquiera que sienta la necesidad y pueda eludir el dongle probablemente podrá superar cualquier otro esquema que usted diseñe.

5

Los crackers se rastrean olfateando el tráfico entre su aplicación y el dongle y deshabilitan cualquier código que pruebe la presencia del dongle o el código escrito para emular el dongle (por ejemplo, reproduciendo el tráfico grabado), lo que parezca más fácil.

Ofuscación del código de prueba, y muchas piezas de código dispersas que realizan pruebas de diferentes maneras, además de separar espacialmente y temporalmente el efecto de la prueba (funcionalidad de deshabilitación/degradación, advertencia, etc.) de la prueba en sí mismo hace que el método anterior sea más difícil.

Mutar el contenido del dongle con cada prueba basada en alguna combinación aleatoria creada en cada ejecución o posiblemente incluso conservada entre ejecuciones, para que la grabación y la reproducción ingenua del tráfico no funcione, hará que el último método sea más difícil.

Sin embargo, con el sistema descrito, sigue siendo sencillo emular el dongle, por lo que tarde o temprano alguien lo hará.

Si tiene la capacidad de ejecutar código dentro del dongle, puede mover el código que desempeñe funciones críticas para su aplicación allí, lo que significaría que los crackers deben volver a publicar el código o romper la seguridad física del dongle: mucho más propuesta costosa (aunque todavía es factible; darse cuenta de que no existe tal cosa como la seguridad perfecta).

3

¿Cómo maximizar la protección con un dongle simple?

Use API junto con Enveloper si existe un sobre para su formato de archivo resultante. Esta es una regla muy básica. Debido a que nuestro ensobrador ya está equipado con algunos métodos contra la depuración y ocultación para evitar que hackers novatos comunes dejen de piratear el programa. No se recomienda el uso exclusivo de un sobre, ya que una vez que un hacker puede romper la protección del sobre en otro programa, también puede romper el suyo.

Llame a las API de dongle en MUCHOS lugares en su aplicación. Por ejemplo, cuando se inicia por primera vez, cuando se abre un archivo, cuando se abre un cuadro de diálogo y antes de procesar cualquier información. También puede hacer algunas comprobaciones al azar incluso cuando no se hace nada.

Utilice más de una función para proteger un programa. No solo use la función de búsqueda para buscar un dongle enchufado.

Utilice varios archivos DLL/bibliotecas (si corresponde) para llamar a funciones de dongle. En caso de que una DLL esté pirateada, todavía hay otras partes del software que usan las funciones de otra DLL. Por ejemplo, copiando sdx.dll a print.dll, open.dll y otros nombres, luego define las llamadas a funciones de cada dll con diferentes nombres.

Si utiliza un archivo dll para llamar a funciones de dongle, agréguelo junto con el ejecutable. Hay bastantes programas capaces de hacer esto; por ejemplo PEBundle.3

Tengo este artículo en PRLOG y lo encontré bastante útil para maximizar la protección con un dongle simple. Tal vez este enlace puede ayudarle a

Maximizing Protection with a Simple Dongle for your Software

0

Es posible que desee ver en el uso de Dinkey dongles para su protección contra copia.

Parece un sistema muy seguro y la documentación le brinda sugerencias para mejorar su seguridad general utilizando el sistema.

http://www.microcosm.co.uk/dongles.php

0

Irónicamente, lo que desea para desalentar la piratería no es por los usuarios, pero el robo por los vendedores. Internet se ha convertido en un lugar tan ilegal que los vendedores pueden robar y revender su software a voluntad. Usted tiene recursos legales en algunos casos, y no en otros.

Nada es a prueba de tontos, como se indicó anteriormente. Además, cuanto más compleja es su seguridad, es más probable que cause dolores de cabeza o problemas a los usuarios legítimos.

Yo diría que la aplicación más segura es siempre la que está más cerca del servidor. Lamentablemente, a los usuarios les preocupa que se trate de spyware.

Si realiza muchas llamadas diferentes a su dongle, entonces tal vez el cracker simplemente emule su dongle - o encuentre un único punto de falla (bastante común cambiar uno o dos bytes y todas sus llamadas son inútiles) . Es una situación sin salida.

Como autor de PECompact, siempre les digo a los clientes que no pueden confiar en nada para proteger su software, ya que puede y se raja si un cracker dedicado lo persigue. Cuanto más duro lo hagas, más difícil será para ellos.

Yo personalmente uso técnicas de protección muy mínimas en mi software, conociendo estos hechos.

0

Utilice la tarjeta inteligente + cifrar/descifrar archivos de trabajo a través de la función secreta almacenada en la tarjeta. Entonces el software puede ser pirateado, pero no podrá abrir correctamente los archivos de trabajo encriptados.

Cuestiones relacionadas