PROTEGER APLICACION

Iniciado por Deep_Purple, 23 Junio 2005, 18:13 PM

0 Miembros y 4 Visitantes están viendo este tema.

Deep_Purple

Hola a todo el mundo y gracias por emplear vuestro tiempo.
Ante todo he de decir que soy Ingeniero Químico (cuando entre el proyecto) y que estoy realizando una aplicación en VBA con fines docentes (me ha costado 3 años).
Hasta ahora todo iba bien pero mis directores de proyecto me han amenazado con suspenderme si no les entrego la aplicación funcionando correctamente. ("es que en Agosto nos vamos de vacaciones y no la podemos probar, te matriculas otra vez y no pasa nada...")
El objetivo del proyecto no es la aplicación en si, sino diseñar una alternativa a otro tipo de aplicaciones comerciales muy caras y que se apartan de la docencia.

Mi pregunta es la siguiente:
¿Como puedo limitar el uso de la aplicación?
He pensado en limitar la fecha. Pero la pueden cambiar
También he pensado en cuantas veces arranca la aplicación. Pero basta con hacer una copia del CD y volverlo a instalar.
¿Se puede averiguar el número de la máquina?
¿Puede conectarse a internet y averiguar la fecha?

No se estoy un poco perdido y agradecería cualquier ayuda.
Nota: La aplicación la voy a distribuir por otros canales de forma gratuita cuando la tenga terminada.

Un saludo

programatrix

Se me ocurre que crees alguna entrada en el registro y le vas sumando uno por cada inicio y que cuando llege a 15 el programa deje de funcionar. Así solo vale para usarle 15 veces el programa.
Si lo que quieres es que sea de tiempo, días etc.. con cambiar la fecha vale por decir mas con formatear el disco duro vale.

goodbye

#2
Primero mira este pos:
http://foro.elhacker.net/index.php/topic,74232.0.html

Luego basandote en este numero que recogera tu programa desde la primera vez que se ejecute, crearas un algoritmo que genere la clave para que se pueda usar. De esta forma cada vez que lo instalen en una pc tendran que contactarte para que les proporciones la clave.
Mi propuesta es que hagas una aplicacion para ti, aparte de tu programa, pero logicamente que funcione con el mismo algoritmo, el generador de claves validas para registrarlo.
Esto conjuntamente con el uso del registro de Windows seria una buena proteccion.


Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.

Deep_Purple

Hola. Gracias a "reydelmundo11" y a "CrakelDestripador" por contestar a mi pregunta.
1. La primera opción es bastante buena para controlar a los de la universidad. Porque combinando las veces que se ejecuta la aplicación con la fecha podría bastar (no creo que les haga gracia tener que formatear el ordenador asiduamente)
2. Con respecto a la segunda opción, después de haber enviado este post, leí el post donde se detalla el procedimiento para crear la clave GUID. Lo probé pero no entiendo como poder aplicarlo. Cada vez que se ejecuta genera un código de forma aleatoria. Si cuando el usuario ejecuta el programa y genera por primera vez este código. ¿como puedo saber yo que clave va a generar?
3. He mirado alguanas de las propiedades del control Winsock y parece interesante. Si a cada copia le asigno un código generado por ejemplo con (2) y la aplicación para funcionar debe conectarse con el servidor para confirmar su funcionamiento, podría controlar si esta gentuza se está aprovechando de la aplicación. Es decir solo utilizarían la aplicación los usuarios que esten autorizados.
¿La duda es como hacerlo? Tengo conexión ADSL de Timofonica con una IP variable, por lo que no se donde ubicar el programa cliente, que por lo que he visto en el "msdn" no sería muy complicado de hacer.

Gracias de antemano

programatrix

Te recomiendo que no uses nada que tenga que ver con el control winsock y de conexión a servidor.
1 Un simple firewall puede parar la conexión para comprobar lo que quieras en tu servidor.
2 Pueden pensar mal, pueden pensar que se trata de spyware y no de un programa legal.
3 Se necesita tener el control mswinsock.ocx para hacer esto.
4 Para tener un servidor por un puerto, necesitas tener un ordenador encencido las 24h del dias 365 días al año y tener no-ip.
Lo que te recomiendo es lo del registro o lo del tiempo. O también puedes crear un fichero oculto o una entrada en el registro y cada día que pasa va sumando un 1 hasta que llege a 30.


Deep_Purple

Ok, reydelmundo11

De lo que no tengo ni idea es de como generar un fichero con el atributo oculto.

Saludos :D

Nosferatu

#6
Hola, Deep_Purple, quizas no es lo que estes buscando, pero tenia hace tiempo un codigo para proteger una aplicacion de 15 dias, segun un .txt, su autor es Eduardo Garcia Valsi - Analista de Sistemas


Primero, en un modulo, las siguientes declaraciones:
Dim Ban As Integer    'para la bandera
Public valoracion As String    'para el PWD que tu le des al
usuario


y en el form, "KeyPress" el siguiente codigo:
Private Sub laclavetext_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        FechaForm.valoracion = laclavetext.Text
        Unload Me
    End If


No soy un experto del lenguaje basic, pero podrias añadir un form con el codigo que describo, con la propiedad "Visible = False" y tambien podrias añadirle App.Taskvisible = False para ocultarlo un poco del Ctrl+Alt+Supr

Bueno, espero que te sirva o que se te ocurra otra idea ;D

un saludo

PD: se me olvidaba, para regular eso del tiempo, podrias añadir otra miniaplicacion para que desde que se ejecuta, mantenga el tiempo independientemente del tiempo del sistema. Asi, la aplicacion de 15 dias tendria que recurrir a la miniaplicacion y no a la fecha del sistema. haber si encuentro algo y te lo pongo ;)  Para pillar la fecha, propiad Visible = False Label1.Caption = Date
Triste zaudenean, triste zaudenean, pentsa esazu, zure lagun onenean

programatrix

Un archivo se oculta asi:
Call SetAttr("ruta del archivo y nombre", vbHidden)
Y para añadir una entrada:
Set sh = CreateObject("WScript.Shell")
sh.RegWrite "HKEY_CURRENT_USER\Software\dirección", "valor"

Creo que con esto ya puedes ir tirando

Deep_Purple

Muchas gracias a todos
Con lo de reydelmundo11 creo que será suficiente pero si Nospheratu encuentra el método para que la aplicación funcione con una fecha independiente de la del sistema ya sería total.

Gracias a todos.

Nosferatu

#9
Hola de nuevo! bueno quisiera aclarar que lo mio es mas la imaginacion, y no la puesta en practica de la misma (tristemente) ;D No creo que de la solucion definitiba para el problema, simplemente porque no soy un programador avanzado pero espero ayudar a acercarte a la solucion. Se me ocurren las siguientes ideas:

1-Podrias implementar un relog en tu aplicacion, para que empezara a contar desde su ejecucion, y con la aportacion de reydelmundo11, se añada al registro. E visto el siguiente codigo que puede valer. Autor:  J.I. Moratiel

Modulo:
Option Explicit
Dim segun As Byte
Dim minu As Byte
Dim hor As Byte
Dim resumen As String
Dim pitido As Variant
Dim Pitido1 As Variant


Form:
Private Sub Reloj_Timer()
    Etiqueta.Caption = Format(Now, "hh:mm:s")
   
   'sonido
    pitido = Minute(Now)
    Pitido1 = Second(Now)
    If pitido = 0 And Pitido1 = 0 Then
        Beep
    End If
   
   
    'Reloj desde arranque
    segun = segun + 1
    If segun = 60 Then
        minu = minu + 1
        segun = 0
    End If
    If minu = 60 Then
        hor = hor + 1
        minu = 0
    End If
    resumen = Format(hor, "00") & ":" & Format(minu, "00") & ":" & Format(segun, "00")
    Etiqueta1.Caption = resumen
End Sub

Pero, eso, enlazarlo con la aplicacion, pues no lo se. La idea del reydelmundo11 me parece genial al respecto

Por otro lado, podrias incrustar una cuenta atras. Despues de 15 dias, para que mostrara un MsgBox, o lo que quieras. El siguiente codigo es un programa que cuenta hacia atras segundo por segundo. Seria cuestion de coger la calculadora  ;) Autor; el mismo de antes J.I. Moratiel
Modulo:
Option Explicit


Form:
Private Sub Form_Load()
    Text1.Text = 500
End Sub

Private Sub Timer1_Timer()
    Text1.Text = Text1.Text - 1
End Sub


Bueno, haber si con la ayuda de todos, encuentras la solucion ;)
Un saludo

PD: Da gusto ayudar a alguien tan agradecido :D
Triste zaudenean, triste zaudenean, pentsa esazu, zure lagun onenean