elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  El Santo Grial de los programadores, como hacer para que se venza al Mes ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: El Santo Grial de los programadores, como hacer para que se venza al Mes ?  (Leído 4,510 veces)
TrashAmbishion


Desconectado Desconectado

Mensajes: 756


Ver Perfil
El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« en: 25 Abril 2013, 00:50 am »

Pues quisiera oir ideas de como puedo hacer para que mi aplicación se venza en una fecha X todos los meses...

He estado pensando en hacerlo por tiempo, que la aplicación trabaje un X tiempo.

Asi como obligar a que tenga que verificar la fecha por internet siempre al arrancar la aplicación.

Pero bueno quisiera antes de tomar una decision algunas opiniones para evitar la pirateria.

La Pc en la que correra la aplicacion no tiene internet.

Salu2


En línea

USLO

Desconectado Desconectado

Mensajes: 175

Programador(C#,Vb.net,Asp.Net,JavaAndroid)


Ver Perfil
Re: El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« Respuesta #1 en: 25 Abril 2013, 15:05 pm »

Hola TrashAmbishion,

A ver el planteamiento de que verifique por internet, no esta mal.
Pero como vas a hacerlo si el pc en la que corre la aplicación no tiene internet?
Si tiene internet yo verificaría si la fecha a expirado o no y a su vez meterle una segunda comprobación.

Ejemplo:
Creas un fichero XML con una clave y que el programa al arrancar verifique la clave y la hora del fichero XML de forma remota.

Si quieres añadir mas seguridad. puedes codificar la clave, para los listos que sacan las claves.

Esto seria para mi , un formato estándar y básico de comprobación de software.

Otro planteamineto seria:

Que tu programa al descodificar la clave a partir de cierto dia,tenga otro tipo de codificacion, por lo que deberias generar un fichero XML con la nueva clave codificada de otra manera.

Asi te aseguras que a partir de determinada fecha el programa expire.

Seguro que hay metodos mucho mas eficaces , pero la verdad no he indagado mucho en este asunto.

Espeor que te sirva de algo.


Un saludo


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« Respuesta #2 en: 30 Abril 2013, 11:38 am »

Una solución sencilla de usar:

Código
  1.    #Region " Trial Period Function "
  2.  
  3.       ' [ Trial Period Function ]
  4.       '
  5.       ' Examples :
  6.       ' Trial_Get(Trial_value.As_Boolean)
  7.       ' MsgBox(String.Format("You have {0} day(s) remaining.", Trial_Get(Trial_value.As_LeftDays)))
  8.  
  9.       Public Enum Trial_value
  10.           As_Boolean
  11.           As_LeftDays
  12.           As_CountDays
  13.       End Enum
  14.  
  15.       ' Trial Period [Get]
  16.       Public Function Trial_Get(ByVal Trial_value As Trial_value)
  17.           'My.Settings.Reset() 'If you want to reset the trial period
  18.           Dim TrialCount As Integer = 0
  19.           TrialCount += 1
  20.           Return Trial_CheckDate(Date.Now.AddDays(TrialCount), Trial_value)
  21.       End Function
  22.  
  23.       ' Trial Period [CheckDate]
  24.       Public Function Trial_CheckDate(ByVal Trial_DateToCheck As Date, ByVal Trial_value As Trial_value)
  25.  
  26.           Dim Trial_retValue As Boolean = False ' Fail safe, default to false
  27.           Dim Trial_usageDatesLeft As Int16 = 7 ' Set here the number of days of Trial period
  28.           Dim Trial_hashedDate As String = Trial_HashDate(Trial_DateToCheck)
  29.  
  30.           If My.Settings.Trial_Period Is Nothing Then My.Settings.Trial_Period = New System.Collections.Specialized.StringCollection
  31.  
  32.           If My.Settings.Trial_Period.Contains(Trial_hashedDate) Then
  33.               Trial_retValue = True
  34.               Trial_usageDatesLeft = CShort(Trial_usageDatesLeft - My.Settings.Trial_Period.Count)
  35.               If Trial_usageDatesLeft <= 0 AndAlso My.Settings.Trial_Period.IndexOf(Trial_hashedDate) <> My.Settings.Trial_Period.Count - 1 Then Trial_retValue = False
  36.           Else
  37.               If My.Settings.Trial_Period.Count < Trial_usageDatesLeft Then My.Settings.Trial_Period.Add(Trial_hashedDate)
  38.               Trial_usageDatesLeft = CShort(Trial_usageDatesLeft - My.Settings.Trial_Period.Count)
  39.               If Trial_usageDatesLeft > 0 Then Trial_retValue = True Else Trial_retValue = False
  40.           End If
  41.  
  42.           Select Case Trial_value
  43.               Case Trial_value.As_Boolean : Return Trial_retValue ' If False then Trial Period is expired
  44.               Case Trial_value.As_LeftDays : Return Trial_usageDatesLeft ' Days left
  45.               Case Trial_value.As_CountDays : Return My.Settings.Trial_Period.Count ' Count days
  46.               Case Else : Return Nothing
  47.           End Select
  48.  
  49.       End Function
  50.  
  51.       ' Trial Period [HashDate]
  52.       Public Function Trial_HashDate(ByVal Trial_DateToHash As Date) As String
  53.           Dim Trial_Hasher As System.Security.Cryptography.MD5 = System.Security.Cryptography.MD5.Create()
  54.           Dim Trial_Data As Byte() = Trial_Hasher.ComputeHash(System.Text.Encoding.Default.GetBytes(Trial_DateToHash.ToLongDateString()))
  55.           Dim Trial_StringBuilder As New System.Text.StringBuilder()
  56.           Dim Trial_IDX As Integer
  57.           For Trial_IDX = 0 To Trial_Data.Length - 1 : Trial_StringBuilder.Append(Trial_Data(Trial_IDX).ToString("x2")) : Next Trial_IDX
  58.           Return Trial_StringBuilder.ToString
  59.       End Function
  60.  
  61.    #End Region


Aquí tienes más snippets interesantes: http://foro.elhacker.net/net/libreria_de_snippets_posteen_aqui_sus_snippets-t378770.0.html
En línea

TrashAmbishion


Desconectado Desconectado

Mensajes: 756


Ver Perfil
Re: El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« Respuesta #3 en: 30 Abril 2013, 16:02 pm »

Puedes explicarlo un poco..

Como verificas la fecha ??

Acaso usas la fecha del pc donde corre el programa como referencia ? Es que esta claramente se puede alterar !! Yo obligo a que se conecte y tenga que verificar la fecha a internet y bueno realizo una serie de verificaciones y demas ?

Salu2
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« Respuesta #4 en: 30 Abril 2013, 16:43 pm »

No soy el creador del código, pero te responderé según lo que estuve testeando.

Acaso usas la fecha del pc donde corre el programa como referencia ?

Si y No, se toma la fecha como referencia para el primer uso, y cuando la fecha cambia (ya séa hacia atrás o hacia delante), cuenta como un día de uso.

Es decir, si tenemos un trial de 7 días y Pasan 5 días, quedan 2 días de uso,
Si el usuario cambia la fecha a -5 días porque se cree muy listo,  ¿al volver a iniciar la aplicación que sucede?,
Que se ha restado 1 día de uso, en lugar de 2 días queda 1 día de uso, porque al cambiar la fecha hacia atrás, el programa ha detectado el cambio de fecha y lo ha contado como un día más de uso.

¿Como puede eludir esta protección un usuario?, fácil, no cambiando la fecha en el sistema, mantener siempre la misma fecha, pero no creo que exista nadie que primero se de cuenta y sepa que para evadir la protección hay que hacer eso, y segundo alguien que séa tán retorcido como para perder 1 minuto cada día para vivir siempre en la misma fecha de su puñetero PC xD.

No sé que tipo de aplicación haces, pero si no está relacionada con la web entonces no te parece demasiado excesivo querer OBLIGAR a disponer de una conexión de internet para utilizar la aplicación?

Un saludo!
« Última modificación: 30 Abril 2013, 16:47 pm por EleKtro H@cker » En línea

TrashAmbishion


Desconectado Desconectado

Mensajes: 756


Ver Perfil
Re: El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« Respuesta #5 en: 30 Abril 2013, 17:39 pm »

Oye eso ultimo era privado jejeje y dime si te pagasen no harias lo necesario, jejeje..

Salu2 y gracias por la explicación muy bueno.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« Respuesta #6 en: 30 Abril 2013, 18:27 pm »

Si me pagasen por hacer una Aplicación Trial, lo que yo haría es cojer un software profesional de pago (craqueado) para implementar la protección Trial a la aplicación > http://www.exeshield.com

Saludos!



EDITO:
Otra alternativa mucho más barata y eficaz que se me ocurre es :

· Crear un timer que tickee cada 5 segundos y que haga lo siguiente:
1. Crear una clave de registro oculta (si, oculta, de 256 caracteres)
2. Sumarle el tiempo transcurrido por el timer al valor de la clave (sumarle 5 segundos cada 5 segundos) hasta que el programa se cierre.
3. cifrar la clave aunque séa con algún cifrado básico.
4. Denegar los permisos de lectura y de escritura a la clave del registro para el usuario actual.

· Al volver a iniciar la aplicación, se retomaría el permiso de lectura/escritura a la clave, se descifraría, se leeria el valor y se convertiría a días, para saber los días restantes que quedan.

PD: El usuario no podría saber ni que esa clave existe aunque la monitoriee, pero si se diera el caso, además debería tener los conocimientos necesarios para obtener los permisos de usuario, y saber como ver la clave oculta, y como desencriptarla.

...hmmm creo que acabo de sacar una nueva idea de esto para mi próximo snippet xD.

Saludos.



EDITO2:

Añado un comentario muy bueno que he leido respecto a hacer una protección trial añadiendo una clave de registro...
Si entiendes el inglés lee la parte subrayada, tiene toda la razón, y es uno de los motivos por lo que te digo que no hay que buscar la protección perfecta.

Traduzo:
· No hay que preocuparse por los usuarios que hacen cosas como cambair la hora dle pc o eliminar tu clave de registro de protección.
· Los usuarios que hacen esas cosas representan 0 perdidas de dinero.
· Un usuario que está dispuesto a intentar piratear tu aplicación no se va a levantar para comprarte la aplicación.
· Estás aquí para ganar dinero, no para perder tiempo intentando ganar batallas perdidas con compradores que no puedes obtener.

http://stackoverflow.com/questions/4521468/where-to-store-the-protection-trial-info-for-software-protection-purpose

Cita de: StackOverFlow
Just don't worry about those users who do things like set back their system clock or manually hack the registry to break your key. Let me say that again: Just don't worry about users who make a conscious decision to alter their system in a significant way to get past your trial limitations — and make no mistake, setting back the system clock or editing the registry are significant modifications. The reason you shouldn't worry about these users is that they represent exactly $0 in potential income. A user willing to make to take this kind of conscious choice about pirating your software isn't going to just give up and decide to pay for your product if it doesn't work. If they can't get your software for free, they'll either go with a competitor or do without. You're in this to make money - you don't want to spend time and resources trying to grab sales you can't win or sending users to a competitor. Therefore, the basic security issues you raised for either option aren't a factor.
« Última modificación: 30 Abril 2013, 19:16 pm por EleKtro H@cker » En línea

TrashAmbishion


Desconectado Desconectado

Mensajes: 756


Ver Perfil
Re: El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« Respuesta #7 en: 30 Abril 2013, 20:24 pm »

Tiene hasta cierto punto lógica pero bueno la aplicación no lo voy a comercializar es algo mas bien a pedido y entonces quiero tratar de hacerlo lo mejor posible por defender el tiempo que me llevo crearlo  ::)

De todas formas me alegra a verte ayudado en idear un Snippet jejeje thx anyway aun sigo viendo...

Salu2
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: El Santo Grial de los programadores, como hacer para que se venza al Mes ?
« Respuesta #8 en: 30 Abril 2013, 20:52 pm »

Siempre recuerda que: If it runs, it can be defeated.

La idea es hacerlo tan insoportable, que no valga la pena perder tiempo en reversearlo...

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines