PDA

Ver la Versión Completa : Proteccion de ejecutables e instalador


razor7
12-11-2007, 21:59:59
Hola muchachos, estoy con un proyecto que quizas se venda masivamente, la pregunta es, como corno hago para protegerlo de su copia "ilegal" ?

Estaba pensando en:

Hard lock
Keygen
Keygen + site key
EncriptacionBueno como veran no soy muy listo en estos aspectos asique cualquier sugerencia avisenme por favor.

Muchas gracias.

ArdiIIa
12-11-2007, 22:10:39
Mas barato, imposible.:D Aquí (http://www.clubdelphi.com/trucos/index.php?id=384&scroll=0&scrollb=0)

cHackAll
12-11-2007, 22:33:30
La mejor idea no siempre es una protección de recursoX como se ve en el truco... un ResHAcker y algunas cosillas más y se puede hacer un "crack".

Desde mi humilde opinion mi escala de valores es:

- medio biométrico (Ej. un detector de huella digital); para que solo N personas reconocidad usen el sistema...
- Llave; usan mucho los Aladdin Keys y otros que se programan y todo
- Lectura de series; en tu aplicación guardas solo series de discos duros y placas madre admitidas... el resto no vá. pero NO en un recurso.
- series, etc, etc.

Aconsejo usar al final un PECompact o un UPX para que el ejecutable no sea facilmente "violable". mayormente usa programas como el PECompact que no tienen UN-PEC como el UPX, para que no puedan revertir la compresión.

Suerte.

ixMike
13-11-2007, 00:53:35
No soy un experto, pero creo que tELock (http://telock.softonic.com/) también te vendría bien. ¿Qué opinas, cHackAll? (pareces puesto en el tema)


Saludos. ;)

razor7
13-11-2007, 01:11:29
Hola muchachos...muchas gracias por sus respuestas.

Lo que quiero es que el software este protegido para que no lo puedan copiar facilmente de ordenador en ordenador.

Gracias por las sugerencias

ArdiIIa
13-11-2007, 10:32:37
Lo que quiero es que el software este protegido para que no lo puedan copiar facilmente de ordenador en ordenador.


Al margen de las cuestiones planteadas, el sistema que te he propuesto, FUNCIONA.
Evidentemente estamos hablando de cosas de "andar por casa". Claro está que si deseas tener un sistema ":)infalible:)" o algo fuera de lo común, incluso podrías contactar con ingenieros de la NASA para realizar un blindaje a tu programa.:D

Perdón por la ironía...;)

Neftali [Germán.Estévez]
13-11-2007, 11:07:15
Alguien dijo alguna vez que en muchos programas "la mejor protección es el propio programa". :D:D:D
Vamos, que hay muchos "rulando" por ahí que son tan malos que nadie quiere crackearlos...
No digo que sea este tu caso,... pero lo que viene a decir es que antes de enfrascarte en un gran sistema de protección debes evaluar el nivel real de pirateo que puede experimentar tu programa. ¿Cual es el número real de personas que pueden llegar a utilizarlo pirata?

Algunas reflexiones:
* Hay que saber si tu programa tiene 100 clientes potenciales (empresas) o tiene 10000. Para adaptar el sistema de protección mejor.
* Los sistemas comerciales son buenos, pero costosos; Ya que si te enganchas a un sistema comercial, debes pagarlo y además mantenerlo actualizado. La mayoría de los sistema comerciales por no decir todos , se pueden saltar salvo en sus últimas versiones (y esas son cuestión de tiempo).

mayormente usa programas como el PECompact que no tienen UN-PEC como el UPX, para que no puedan revertir la compresión
Como he dicho, la mayoría tienen "marcha atrás"; Incluído PECompact (sin ir más lejos con aPE); Además de ASPack, PeTite, FSG, Armadillo, ARM, ASProtect, EXEBundle,... por comentar algunos.

* A veces un sistema no-comercial (aunque acabe siendo más sencillo) es más efectivo, porque para los sistemas comerciales existen herramientas que te lo hacen automáticamente, con lo que "cualquiera" puede hacerlo. Un sistema no-comercial (casero) puede ser más sencillo para alguien que tenga conocimientos, pero deja de ser accesible para "cualquiera".

* Debes tener en cuenta los diferentes tipos de pirateo existentes; Serials válidos de un cliente existente, generador de serials válidos, patchers,... Segun la protección que programes el pirateo si se produce irá por alguno o varios de ellos (y las soluciones también).

* Antes de usar un sistema comercial y pagar por ello busca y asegúrate de los programas que existen para desprotegerlos. Incluídas las Llaves y Dongles (mochilas), que también los hay.

Yo optaría primero por un sistema sencillo, no-comersial, como el que te han comentado. Si el programa progresa y detectas que está siendo pirateado, tal vez valga la pena desenvolsas x dinero para subir el nivel de seguridad, pero hacerlo de primeras sin saberlo, me parece arriesgado.

Creo que me he alargado demasiado,:o:o:o pero es que el tema da para mucho. Puedes buscar más información, pero tampoco te obsesiones...
Sobre todo, porque en algunos casos, que un programa sea "inicialmente" fácil de piratear puede ser muy provechoso para su evolución e implantación.
Sólo piensa en Digital+(1), Windows, Nero (2), AutoCAD(3),...

(1) Este es el más claro respecto a sus competidores.
(2) Posiblemente es el mejor programa del sector y de los más sencillos de crackear ¿porqué será...?
(3) Hubo algunas versiones antiguas que funcionaban con mochila; Aunque al poco tiempo ya había forma de "saltarlas", no hizo falta, porque también al poco tiempo se desestimó esa opción por parte de la empresa.

Un saludo.

ArdiIIa
13-11-2007, 11:28:27
Muy buena disertación Neftali.
Yo en general no suelo calentarme la cabeza con estos asuntos porque no suelo hacer programas de propósito general y si los hago, son pequeñas utilidades que regalo...:)
Por lo general en las aplicaciones a medida, es el cliente quien me pide "algo" que no le cueste dinero adicional y que sus empleados no se lleven a casa, y es por ahí por donde entran estas pequeñas porciones de código, que a la larga, podrían resultar tediosas en casos como por ejemplo, que el cliente formatee la máquina y similares, dado que eso lleva consigo una nueva instalación y activación del "sistema anticopia"... Pero para eso estamos no ?

Neftali [Germán.Estévez]
13-11-2007, 12:29:47
Realmente ahora mismo yo tampoco estoy con estos temas, pero hace un tiempo me tuve que meter de lleno y me empapé bastante.

Tanto en sistemas de protección y de desprotección. Hasta he de decir que llegué a crackear algun programa comercial (sólo con fines educativos, eso sí, y como aprendizaje -puedo prometer que el crack nunca llegó a ver la luz-).
Pero de aquellos tiempos sigo conservando enlaces, páginas, tools y demás y de vez en cuando sigo "testeando"...;)

Como se dice, la mejor forma de vencer a tu enemigo es conociendolo a fondo.

razor7
13-11-2007, 14:57:52
Neftali...pasame esa data si podes...sobretodo algun sistema que me permita generar numeros de seria para mi programa.

Gracias.

Neftali [Germán.Estévez]
13-11-2007, 16:54:22
Ese código no lo puedo publicar, puesto que pertenece a la empresa para la que trabajaba, lo que sí puedo hacer es comentarte cómo se generaba y no te debe ser muy complejo de crear.
En nuestro caso teníamos en cuenta alguna información del ordenador; Hay que decir que inicialmente se obtenía mucha información, poco a poco nos dimos cuenta de que cuanta más información recopiles, más a menudo cambia esa información.
Por ejemplo, si te quedas con el DNI del cliente, Razón Social, Serial del disco duro (* (http://neftali.clubdelphi.com/componentes/TDiskInfo.html))(* (http://www.swissdelphicenter.ch/en/showcode.php?id=57)), Bios Date (* (http://www.swissdelphicenter.ch/en/showcode.php?id=587)), SN de Windows(NOTA1), Versión de windows (* (http://clientes.napoles.eti.br/faq/17482.html)), MAC Address (* (http://www.clubdelphi.com/foros/#88:%20How%20do%20I%20find%20a%20MAC%20address?)) (* (http://www.swissdelphicenter.ch/en/showcode.php?id=651)),.... cada vez que cambia unos de estos parámetros en un cliente normal, se "estropea" el Serial y el cliente te debe llamar para que se lo reenvíes.

Una vez obtenida esta información que quedas con una parte de cada una de ellas y al número que sale le aplicas algun algoritmo de encriptación (simétrico, si no te quieres complicar mucho...)

Ya tienes tu Número de Cliente; Ese es el número que el cliente te envía; A eso le aplicas alguna transformación y le devuelves el Número de Serie.

Cuando ejecutas tu programa debes comprobar que esos dos números siguen coincidiendo...

NOTA1:

// en el registro de windows
key := 'Software\Microsoft\Windows\CurrentVersion';
Name := 'ProductID';
Name := 'ProductKey';

razor7
13-11-2007, 17:44:09
jajaja...va a ser una ensalada barbara, pero gracias por la data!

ixMike
13-11-2007, 18:22:58
Sólo piensa en Digital+(1), Windows, Nero (2), AutoCAD(3),...



¡Te saltaste Delphi! :D:D En serio, las primeras versiones (como mi versión 3) ni si quiera piden Serial ni nada.

Saludos.

marceloalegre
13-11-2007, 18:29:21
Buenas:

Te recomiendo el paquete de componentes de turbopower denominado "OnGuard"
Ahi tienes OgProtectExe, con el cual puedes evitar que modifiquen el exe dado que hace un checksum que verifica en tiempo de ejecución.
Obviamente cuanto mas uno aprende de seguridad, mas se da cuenta que todo es inseguro... Por no que no quiere decir que no se pueda desensamblar el .exe.

Igualmente, te recomiendo ese componente como una seguridad mas.

Saludos

egostar
13-11-2007, 18:43:19
Yo muchas veces me he preguntado esto que se está comentando, sin embargo, no le doy muchas vueltas al asunto, uso tres variables y una ligera suma binaria (nada que ver com MD5 y esas chunches) para crear la "llave de activación" de mis programas.

Las variables que uso son las siguientes:

Volumen del disco duro C, (todas las maquinas lo tienen :))
El Product ID de Windows (como lo indica Neftali)
Numero de serie del programa

Con eso, genero la llave de activación que solo me sirve para activar la inserción de registros generados por el sistema y los reportes, los catálogos de mis sistemas no tienen protección, lo único que me interesa proteger (por llamarlo de una manera) son las tablas donde almaceno la información procesada.

En este momento estoy evaluando unas llaves USB, pero al final yo me sentiría muy bien si mis sistemas son dignos de que los quieran crackear, digo, sería estupendo llegar a ese nivel. :cool:

Salud OS

TheJHorse
15-03-2008, 02:51:23
Creo que la palabra correcta no es "Proteger" sino dilatar el proceso de crackeo.

rretamar
15-03-2008, 03:00:54
En lo particular estoy en desacuerdo (actualmente) con los sistemas anticopia (confieso que hice uno basado en el número de serie del disco rígido y la dirección MAC de una placa de red). Si algo tienen muchos de estos sistemas (y más los basados en hardware) es que pueden resultar irritantes para el usuario final. Justamente el que paga por nuestro trabajo. Por eso hoy en día me lo pensaría dos veces.

Saludetes ! ;)

joaquipardo
02-06-2008, 06:08:50
En conclusión a ver que dicen de esto

Sres.
Mi idea es la siguiente:
1. Que sea un paquete fácil de difundir.
2. Paquete que sea fácil de instalar.
3. Que no se ejecute sin el archivo de autorización enviado por correo por el fabricante.

Como llegaríamos a eso:
1. Que al instalar genere un archivo en donde levante el Id del Bios + Id del disco + Id de LAN.
2. Esto se enviaría al fabricante de la aplicación vía correo.
3. El fabricante generaría otro archivo de respuesta que se debe copiar en donde se encuentra el ejecutable, en ese archivo este cifrado todos esos Id, con información falsa también y ahí el ejecutable al levantarse lo compara con los Id’s.

La pregunta Sres., esto sería fácil de violarlo???, alguien sabe de algo que este funcionando así.
Nosotros estamos desarrollando algo así para proteger nuestros desarrollos y servicios.
Saludos atentamente y en espera de alguna recomendación de ustedes.

Neftali [Germán.Estévez]
02-06-2008, 10:36:37
1. Que al instalar genere un archivo en donde levante el Id del Bios + Id del disco + Id de LAN.
2. Esto se enviaría al fabricante de la aplicación vía correo.
3. El fabricante generaría otro archivo de respuesta que se debe copiar en donde se encuentra el ejecutable, en ese archivo este cifrado todos esos Id, con información falsa también y ahí el ejecutable al levantarse lo compara con los Id’s.

(4) La pregunta Sres., esto sería fácil de violarlo???, alguien sabe de algo que este funcionando así.


(1) Yo seleccionaría un único ID; Más ID's sólo te complican la vida.
(4) Estos sistemas no se suelen "saltar" cambiando los ID's (aunque se puede); El punto débil es el código que se utiliza para las comparaciones. El algun momento hay que desencriptar esos ID's y compararlos con los correctos. Ese suele ser el punto de ataque (parcheando suele ser lo más simple).
De ahí que no varíe mucho si coges 1 ID, 2 o 3. Lo difícil o fácil de saltarlo será dependiendo (mucho) del código que utilices en las compraciones.
De todas formas estamos hablando de "fácil de saltar" para gente que esté familiarizada con estos temas. Para un usuario normal es imposible.

Has un test de prueba de lo que sería el sistema (sólo el de protección, no tu programa) y lo testeamos... :D:D:D:D