VB6 - Protegendo o seu trabalho da Pirataria...


A cópia ilegal de um programa é um assunto delicado e polêmico.

Muitos justificam a pirataria alegando que os autores cobram muito caro pelas cópias legais ; outros alegam que não teriam condições de adquirir os programas que , segundo eles, custam os 'olhos da cara' ; há os que arrazoam que as empresas detentoras dos direitos de comercialização dos softwares já ganharam muito dinheiro com isso.

E por ai vai...

Vamos fazer o seguinte: imagine que você demorou meses desenvolvendo um sistema para um determinado fim e que após muito trabalho conseguiu colocar o seu produto no mercado.

Você não trabalhou de graça todo esse tempo e naturalmente vai cobrar um certo valor pelo seu software.

 Você define o preço e começa a vender o seu produto. 

Como você se sentiria se percebesse que o seu trabalho fosse copiado e distribuído ilegalmente ?

Você se sentiria estimulado a continuar o seu trabalho ?

As respostas eu deixo a cargo da consciência de cada um.

Vamos agora ao que interessa. Responda as perguntas abaixo:

Se a resposta foi não para todas elas , você esta com sorte. Vamos mostrar como fazer esse trabalho...

Usando uma OCX para proteger o seu trabalho

Existem muitos produtos no mercado que podem ser usados para proteger sua aplicação. Vamos analisar e mostrar como usar um produto muito bem feito e que tem como seu principal atrativo ser inteiramente grátis. Isto mesmo, grátis . Estamos falando do produto ActiveLock ( http://www.insite.com.br/activelock ).

Existem duas versões disponíveis: uma para Visual Basic 5.0 e outra para Visual Basic 6.0.

Selecionando o Componente ActiveLock 1.5 O componente disponível na barra de ferramentas

Criando um versão que funciona por um certo tempo (TrialWare)

Um Trialware é um versão completamente funcional de um sistema que deixa de funcionar depois de um certo período de tempo.

Vamos mostrar como você pode implementar esta funcionalidade em seus sistemas usando a ActiveLock. Para isso vamos trabalhar com o projeto que vem junto com o arquivo OCX, o projeto : trialware.vbp.

Quando você inicia o projeto , um formulário de registro aparece solicitando que você informe a chave para liberação do sistema. O formulário em tempo de projeto é mostrado a seguir:

A seguir a tela inicial ao rodar o projeto:

A tela inicial do sistema  O período de avaliação terminou

Se o usuário estiver dentro do período de avaliação definido o sistema irá rodar normalmente. Se o período de avaliação expirou o sistema emite uma mensagem avisando ao usuário e encerra o aplicativo.

Quer saber qual é a mágica ? Bem , a coisa é mais simples do que imagina. Vamos analisar o código do módulo .bas do projeto , eí-lo a seguir :

Option Explicit

' This sample project requires ActiveLock control
' You may download ActiveLock free of charge at
'
http://www.insite.com.br/~nferraz/activelock

Sub Main()

Load frmRegister
Load Calculator

With frmRegister.ActiveLock1
 ' Se o usuário é registrado exibe o formulário principal

   If .RegisteredUser Then
      Calculator.Show
   Else
   ' Se o usuário não esta registrado, verifica
   ' se ele alterou a data do sistema

      If .LastRunDate > Now Then
         MsgBox "ActiveLock detectou que você alterou a data do sistema !..."

         End
      End If

      ' Verifica o período de avaliação
      If .UsedDays < 30 Then
          frmRegister.Show 1
          Calculator.Show
      Else
         'Se período expirou avisa o usuário e sai

         MsgBox "Seu periodo de avaliação terminou , Registre-se...!"
         Unload frmRegister
         Unload Calculator
      End If
   End If
End With

End Sub

A primeira coisa que o código verifica é se o usuário é um usuário registrado, isto é feito através da propriedade - RegisteredUser.

Esta propriedade retorna um valor Boleano (Sim/Não) indicando se o software foi registrado ou não.

Um usuário estará efetivamente registrado quando informar uma Chave de Liberação - LiberationKey - válida.  A chave de liberação depende do código do Sofware - SoftwareCode - e da Senha - Password ; e é fornecida por você ao usuário que deseja se registrar.

Quando o usuário instala o seu aplicativo a ele é atribuído um SoftwareCode único que o identifica. Mesmo após o sistema ser desinstalado o código do Software permanece no sistema . Você exibe o código de identificação do usuário da seguinte forma:

Label1.Caption = "O seu SoftwareCode é  : "  &   ActiveLock1.SoftwareCode

Você define uma senha para cada aplicativo que desenvolver via código da seguinte maneira:

ActiveLock1.Password = "ALEPH"

Obs: Parece que uma nova versão do ActiveLock não utiliza mais a propriedade Password. A identificação do aplicativo agora é feita pela propriedade SoftwareName.

Para gerar a Chave de liberação - LiberationKey - para o usuário , portanto , você vai precisar da Password e do SoftwareCode. As chaves de liberação são geradas pelo KeyGenerator - um programa que é distribuído junto com o ActiveLock e que também é gratis. 

Para verificar o período de avaliação usamos a propriedade - UseDays:

Ela retorna um valor do tipo longo que indica o número de dias que o sistema foi utilizado. Você utiliza a propriedade da seguinte forma:

If (ActiveLock1.UsedDays > 21) Then
  MsgBox "Your evaluation period has expired! Please register!"
End If

Observe que o período é definido em : ActiveLock1.UsedDays > 21  . Basta informar o valor desejado para o período de avaliação em dias. Você deve usar esta propriedade junto com a propriedade RegisteredUser - que verifica se o usuário esta registrado para não 

If Not (ActiveLock1.RegisteredUser) And ActiveLock1.UsedDays > 21 Then
  MsgBox "Seu periodo de avaliação terminou...!"
End If

E se algum espertinho alterar a data do sistema ? A propriedade LastRunDate irá cuidar dele...

Esta propriedade retorna uma valor do tipo data que indica a data que o programa foi usado pela última vez. Ela deve ser usada em conjunto com a propriedade UseDays para evitar que os espertinhos alterem a data do sistema e estendam o período de avaliação.  

If (ActiveLock1.LastRunDate > Now) Then
  MsgBox "Por favor corrija a data do sistema para continuar..."
  End
End If

Criando um versão Demo do seu aplicativo

Você pode também criar um versão demo do seu programa fazendo com que ele rode um determinado número de vezes e depois seja desabilitado. 

Para fazer isto basta usar a propriedade : Counter.

Ela retorna um valor do tipo Longo indicando o número de vezes que a propriedade foi chamada. Assim se você quiser que o seu sistema rode somente dez vezes na máquina do cliente use o código a seguir:

If (ActiveLock1.Counter > 10) Then
  MsgBox "Você já executou a versão Demo 10 vezes , registre-se..."
  End
End If

Faltou falar da propriedade : SoftwareName

Ela atribui um nome único para cada programa que você desenvolver. Tenha a certeza de atribuir um nome único e diferente para cada sistema para criar versões diferentes. 

Desabilitando partes do seu sistema (Crippleware)

Para desabilitar partes do seu sistema utilize a propriedade RegisteredUser. Se o usuário não for registrado simplesmente desabilite o código do sistema. Para habilitar/Desabilitar um botão de comando (cmdIncluir) o código seria o seguinte:

If .RegisteredUser Then
      cmdIncluir.enabled= True

else

     cmdIncluir.enabled = False

endif

 

Um detalhe final: Como o ActiveLock utiliza o número de série do Windows e outras propriedades do sistema para gerar a Chave de Liberação, se o Windows for reinstalado , o SoftwareCode irá ser alterado, e  o usuário vai precisar registrar o aplicativo novamente. 

 

Se você desejar outra cópia da mesma aplicação que tenha um comportamento diferente , deve mudar a propriedade SoftwareName.  

 

Bem , creio que as informações acima são suficientes para você usar o ActiveLock  para proteger o seu código.


A seguir veremos como gerar via código um rotina no VB para proteger seu sistema...

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

 

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti