Você está na página 1de 7

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=413

Gerando chaves de segurana com o OnGuard


Data: Monday, September 04 @ 23:56:18 Tpico Administrador

Neste artigo estudaremos os trs passos do exemplo RGC Release Code Generator do OnGuard, que prove meios para criao de chaves nicas de segurana, garantindo a execuo de nossos programas apenas nos computadores onde foram autorizados a serem executados. Nota O estudo deste artigo no se restringe ao Delphi 2006 embora tenha sido usada esta verso como base para redigir este artigo, os mesmo resultados podem ser obtidos no Delphi 2005, e no Delphi verses 3 a 7. Para este artigo sero utilizados os trs programas contidos na pasta: C:\Arquivos de programas\Borland\BDS\4.0\OnGuard\examples\Delphi\RegDemo. Os trs programas so: RCG.EXE Este programa voc utilizara para digitar informaes obtidas a partir de seus usurios. Estas informaes sero utilizadas para gerar a chave de registro que voc enviar de volta ao seu usurio. REGISTRATION.EXE Este programa ser executado pelo seu usurio para efetuar o registro do seu aplicativo. - Neste programa o usurio digitara o nmero de srie impresso no CD de instalao do seu aplicativo ou um nmero de srie provido ao seu usurio de outra forma. - Quando o usurio entra em contato com voc para registrar o programa ele fornece para voc dois nmeros: Um o nmero de srie, o outro o Identificador nico do Computador chamado pelo RCG.EXE de (MachineModifier). - Voc ento digita os dois nmeros fornecidos pelo usurio no programa RCG.EXE, calcula a chave de registro e envia a chave de registro calculada para o usurio. - O usurio por sua vez digita esta chave de registro no programa REGISTRATION.EXE, quando o usurio pressiona o boto salvar a chave de registro fornecida por voc ser validada e se for uma chave vlida, ser gerado ento no computador do usurio um arquivo com o nome REGISTRATION.DAT que contem o nmero de srie e a chave de registro. Nota Fornea sempre nmeros de srie distintos para cada aplicativo que o usurio compre de voc, por exemplo, um nmero de srie para o seu aplicativo para Fluxo de Caixa outro nmero de srie para o seu aplicativo de Controle de Estoque etc. E gere sempre instalaes de seus aplicativos em pastas distintas, pois o REGISTRATION.DAT deve ser nico para cada aplicativo, garantindo que o seu aplicativo seja executado somente no computador onde foi registrado. Em casos onde os programas so instalados em redes, mantenha o banco de dados no servidor e os aplicativos com seus respectivos REGISTRATION.DAT em cada computador da rede, garantindo assim a execuo de seus aplicativos somente em computadores onde foram registrados. Lembre-se do Identificador nico do Computador (MachineModifier). HELLOWORLD.EXE Este programa equivaleria a seu aplicativo, ele demonstra o uso das informaes contidas no arquivo REGISTRATION.DAT que foi criado pelo programa REGISTRATION.EXE. O nmero de srie gravado no arquivo REGISTRATION.DAT usado para calcular a chave de registro no computador onde o helloworld.exe executado e ele compara a chave de registro com a que esta gravada no arquivo REGISTRATION.DAT, se as duas chaves so idnticas o helloworld.exe exibira "Hello World" caso contrario ele formar que uma verso demo no registrada. No arquivo OnGuard.ini contem a chave que ser usada no programa RCG.EXE para gerar a chave nica de segurana para seus aplicativos. Nota Esta chave contida no arquivo OnGurad.ini pode ser usada para gerar diversas chaves de segurana nicas para diversos aplicativos que voc tenha desenvolvido. A gerao desta chave contida no arquivo OnGurad.ini caso de estudo para outro artigo, no futuro. Dica Para facilitar as coisas eu adicionei os trs programas em um Prject Group como ilustrado na figura abaixo:

1 de 7

04/07/2013 21:16

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=413

Voc tambm pode compilar os trs programas e depois execut-los fora do Delphi, fica a seu critrio. Antes de efetuar qualquer gerao de chaves de segurana vamos executar um teste para verificar como os programas se comportam quando so executados: 1- Execute o programa HELLOWORLD.EXE como voc pode ver na figura abaixo, ele no esta registrado.

Feche o programa. 2- Execute o programa REGISTRATION.EXE e digite um numero inteiro de at 9 dgitos no campo Enter your serial number from your CD como ilustrado na figura abaixo:

2 de 7

04/07/2013 21:16

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=413

3 - Execute o programa RCG.EXE e arranje as duas janelas de modo a poder ver ambas abertas como ilustrado na figura abaixo:

Dica Para poder executar o segundo programa RCG.EXE simultaneamente ao primeiro programa REGISTRATION.EXE clique sobre o RCG.EXE no Project Explorer, clique em Activate e em seguida pressione F9 (Run). No programa Release Code Generator RCG.EXE pressione o boto coma chave ao lado do campo Application Key, abrira uma nova janela como ilustrado na imagem abaixo:

3 de 7

04/07/2013 21:16

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=413

Clique no boto ao lado do campo File name da nova janela aberta Key Maintenance e selecione o arquivo OnGuard.ini como ilustrado na figura abaixo:

Na janela Key Maintenance clique na lista Applications, devero parecer a chave fornecida pelo arquivo OnGuard.ini, clique em seguida no boto OK, como ilustrado na figura abaixo:

4 de 7

04/07/2013 21:16

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=413

Cheque a checkbox ao lado de Apply a Machine Modifier Copie o nmero que esta no campo Machine Modifier da janela Registration Tools Para o campo Apply a machine Modifier da janela Release Code Generator Pule o campo Release code expires (cdigos que expiram por datas sero estudos em um artigo futuro). Copie o nmero que esta no campo Enter your serial number from your CD da janela Registration Tools. Para o campo Serial Number da janela Release Code Generator (simulando que o usurio te informou esses nmeros por e-mail ou telefone). Clique no boto ao lado do campo Release Code da janela Release Code Generator Ser gerada ento e finalmente a chave nica de segurana que dever ser enviada ao usurio. Copie este Release Code para a janela Registration Tools (simulando que a chave foi enviada ao usurio, por e-mail ou telefone conforme o caso). As janelas devero ficar como na figura abaixo:

5 de 7

04/07/2013 21:16

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=413

Voc pode efetuar um teste alterando algum digito da chave de Release Code ou do Serial Number da janela Registration tools para ver como o programa rejeita chaves invlidas. Pressionando o boto Save da janela Registration Tools se o Release Code for vlido o programa gera o arquivo REGISTRASTION.DAT contendo a Chave nica de Segurana e o Nmero de Srie e em seguida encerra a execuo. Encerre tambm a execuo do programa Release Code Generator clicando no boto Exit. Ative agora no Project Explorer o programa HelloWorld.exe e execute-o, voc verificar que agora o programa HelloWorld.exe no apresenta mais a frase Unregistrered Demo como anteriormente, mas sim a frase Hello World confirmando assim o registro com sucesso, como ilustrado na figura abaixo:

Se voc possui mais um computador, efetue outro teste, copie o programa HelloWorld.exe e o arquivo REGISTRASTION.DAT para outro computador e execute o HelloWorld.exe. Voc constatar que a frase Unregistrered Demo voltar a ser exibida pois, o (MachineModifier) do outro computador no confere com o que foi usado para gerar a Chave nica de Segurana, Dica possvel tambm voc adicionar a funcionalidade do programa Registration Tools (REGISTRATION.EXE) dentro dos teus aplicativos. Voc pode colocar a execuo da verificao da chave dentro do evento OnCreate do Formurio principal de seu aplicativo por exemplo.

Eu uso o Componente UserControl e coloquei no evento OnAfterLogin o seguinte cdigo:

procedure TFormStart.UserControl1AfterLogin(Sender: TObject); var ReleaseCodeString: string; var SerialNumber : longint; begin

6 de 7

04/07/2013 21:16

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=413

GetRegistrationInformation (ReleaseCodeString, SerialNumber); if not IsReleaseCodeValid (ReleaseCodeString, SerialNumber) then begin Application.CreateForm(TregMain, regMain); regMain.ShowModal; regMain.Free; end else RregistroEfetuado := True; end; Concluso : A chave de segurana nica, serve somente para um computador, dessa forma voc pode ter o mesmo aplicativo rodando em uma rede de computadores, bastando que para isso voc fornea as chaves de registro para cada computador da rede. Como eu citei no artigo anterior, Instalando o TurboPower OnGuard no Delphi 2006 o que nos podemos fazer dificultar a execuo de forma ilegal de nossos aplicativos, isso quer dizer tambm que teremos dificuldades, gerar esses chaves de segurana no tarefa fcil como tambm ser igualmente difcil algum usar nossos aplicativos sem a devida permisso. Sobre o autor: Augusto Alves de Toledo Desenvolvedor independente. Ribeiro Preto (SP) - Brasil. augusto.alvestoledo@gmail.com 1982 1986 Desenvolvendo Sistemas com COBOL em UNIX para Mainframes Burroughs 3900. 1987 1995 Desenvolvendo Sistemas com CLIPPER e PASCAL em DOS para PC. 1996 2006 Desenvolvendo Sistemas com Visual Basic, Visual FoxPro e Delphi em Windows.

Digitado por :: Active Delphi http://www.activedelphi.com.br/ A URL para esta notcia : http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=413

7 de 7

04/07/2013 21:16