Protección de software

Soltrac

Buenas,

Os voy a comentar mi situación a ver si encontrais una solución.

Vendo un software que tenemos protegido con un dongle USB. Yo ya sabía que estos USB se pirateaban (existen emuladores a ring 0, vamos, casi imposibles de detectar), pero hace poco me puse a indagar sobre el tema y efectivamente, puedo piratearlo. El tema toca los huevos porque valen una pasta interesante y estás pagando por algo q sabes q alguien puede emular.

Entonces he pensado en utilizar números de serie. El problema radica q mi target de clientes son personas q no tienen (no tienen pq tener más bien) internet y no se como solucionar el problema de que un ordenador se joda y tengan q instalar la aplicación en otro PC, como desactivar la licencia del primero. La desactivación a mano es factible y más o menos la tengo pensada como hacerla, el problema sería como he dicho que ese ordenador ha muerto, se ha tenido q formatear pq el disco duro se ha jodido y no se ha podido desactivar manualmente.

Ni que decir tiene que yo no tengo contacto con los clientes, solo con distribuidores que pueden ser más o menos de fiar.

¿Qué soluciones tomariais para esto?

LOc0

Puffff, si ni las dongles USB son completamente seguras, no te digo nada de una protección por software y además sin control por internet... Lo más robusto que se me ocurre sería algo así:

1º) Una rutina o aplicación que genere una hardware fingerprint de la máquina donde se pretende instalar la aplicación. Después el cliente envía esa huella a un servidor (formulario web sencillito) que le devolverá la firma de dicho código (otro código).

2º) Al instalarse la aplicación solicitará la firma que devolvió el servidor. Si la firma es buena se instala el programa.

La "fortaleza" de este sistema está principalmente en:

1º) Los datos que saques de la máquina para generar su hardware fingerprint tendrán que ser lo más rígidos posible y acceder directamente al hardware para leerlos (nada de valores del registro de Windows ni cia).

2º) Cómo almacenes la clave pública del servidor dentro del código de la aplicación de cara a un posible craqueo (se escribe así?)

3º) Si aparte de una "simple" firma RSA le metes algún tipo de ofuscación.

Pero vamos, en una protección por software, el 90% es el punto 2 y para protegerse de debuggers y desensambladores hay que saber muuuuuuuuuuucho y aun así... Aquí tienes bastantes técnicas de protección que usa Skype para proteger el binario ->
http://www.blackhat.com/presentations/bh-europe-06/bh-eu-06-biondi/bh-eu-06-biondi-up.pdf

Salu2 ;)

PD: releyendo tu post veo que quieres desactivar licencias sin internet. Es de sentido común que eso no puede hacerse... (Lo máximo es que al generar la hardware fingerprint pilles la fecha de instalación de windows, el id de volumen, etc... que en caso de formateo y reinstalación invaliden la huella anterior, pero vamos, esos valores son modificables...)

1 respuesta
Soltrac

#2 XDDD obviamente se q lo q pido es imposible. La idea sería encontrar el sistema que menos dolores de cabeza diera.

Sobre la seguridad no hay q preocuparse, no vendo Adobe, mi software no está pirateado pq no está para descargarse en ningún sitio y trastear con él.

De todas formas lo q propuse en sí es una gilipollez, como mucho tendría qh acer con revisiones semestrales de nº de serie y eso es un rollo cuando al final tengas 3000 clientes.

Voy a tirar por la detección de emuladores de dongle, q me da a mi q es un camino más sencillo, aún sabiendo q es jodido pq como ya digo están en modo kernel.

LOc0

En ese caso te recomiendo que le eches un vistazo a este libro:

En tito google con esto 140315194/Rootkits-SubvertingtheWindowsKernel

Salu2 ;)

1 respuesta
elkaoD

He hecho MUCHA ingeniería inversa y mucho cracking en general. ¿Te puedo dar un consejo? No lo intentes. Olvida proteger tus programas, no vale de nada y sólo va a incomodar a tus clientes de verdad, los que pagan.

Entiendo tu punto de vista, pero... ¿las molestias que te vas a tomar y el tiempo que vas a gastar compensan? ¿Te darían más dinero si añades funcionalidades al programa y captas nuevos cientes? ¿Qué pasa si rompen tu sistema y se va toda tu protección a la mierda?

La única fórmula eficaz de verdad es ofrecer servicios online que requieran de autenticación.

1 respuesta
Soltrac

#5 Verás...como dije mi software no va a ser crackeado. No soy el lider de mi mercado...en total puedo tener ahora mismo, yo q se, 3000 instalaciones en españa q no es nada. Además solo se vende a través de distribuidores.

El software es crackeable, yo lo tengo asumido. Lo q no quiero es q funcione mediante un simple emulador q hasta un niño de 10 años sabría poner a andar. No me preocupa la ingeniería inversa porque parto de la idea de q todo es pirateable.

El problema es q no quiero q haya un sistema ya funcionando por ahí para piratearlo, quiero q si alguien quiere hacerlo tenga q trabajar exclusivamente en mi protección, q eso ya es más complicado porque si en 12 años nadie lo ha hecho, nadie va a hacerlo ahora.

Empezaré a mirar programación en modo kernel con cosas como las de #4 porque creo que es el camino a seguir.

NeB1

No sé si es algo que puedas decir por aquí pero, se puede saber en que consiste tu software?

1 respuesta
Soltrac

TPVs #7.

Usuarios habituales

  • Soltrac
  • NeB1
  • elkaoD
  • LOc0