Legal Álvaro. Muito esclarecedor o artigo. Realmente não existe forma mágica para impedir a cópia. Se existisse, não haveria tanta gente perdendo os cabelos por causa da pirataria.
Só complementando, o meu sistema não é comercial, e o banco de dados (Postgres) eu crio manualmente, as tabelas e tudo mais. E a senha só eu sei. Prós: É um sistema 100% a prova de cópia. Contra: Se eu morrer ninguém vai conseguir dar manutenção no sistema. --- Em delphi-br@yahoogrupos.com.br, Álvaro Vieira <[EMAIL PROTECTED]> escreveu > Amigos, > > Encontrei este texto, enviado à lista algum tempo atrás, e achei-o bem > interessante... > > === > Protegendo o seu programa e o seu bolso > Caso você seja um desenvolvedor contratado por alguma empresa criando > sistemas específicos para cada cliente talvez isto nunca seja uma > preocupação séria pois há poucas possibilidades do sistema interessar outra > pessoa física ou jurídica com características operacionais diferentes (não > estou me referindo a código-fonte aqui mas ao produto acabado). > > Mas caso você esteja no mercado de softwares para o público em geral, > bem-vindo ao grande clube dos programas pirateados. Este artigo visa > introduzir alguns conceitos de proteção de software para programadores em > geral mas antes de começarmos há uma coisa muito importante sobre a qual > gostaria de dizer: Muitas grandes empresas liberam softwares com baixa > proteção contra pirataria exatamente visando uma divulgação indireta do > produto (ocorre muito com componentes para Delphi, a maioria possui uma > chave publicamente divulgada). É uma tática que dá certo em países aonde há > uma certa lei e consciência por parte dos usuários com software mas isto > acredito não se aplica ao Brasil.Um conselho: não faça isso ! Ninguém vai > comprar aqui o seu produto e a quantidade que comprar não cobrirá os custo > do desenvolvimento. > > Você poderá distribuir o seu software como produto de prateleira ou como um > shareware pela Internet. A grande vantagem do shareware é a divulgação boca > à boca (ou seria clique à clique ?) que ele oferece mas o ideal é as duas > abordagens ao mesmo tempo. Isto possibilita que o usuário que ficou > hesitante em adquirir o produto na loja possa baixar e testá-lo. Obviamente > nunca esqueça de divulgar o seu site na embalagem. > > Para vender software, um bem intangível materialmente, é preciso um bom > sistema de proteção pois o seu programa poderá virar um freeware em poucos > segundo. É só encontrar um hacker que goste dele. Interessante é que > dificilmente um hacker irá quebrar a proteção de um produto do qual não > goste ou não use, portanto quando encontrar cracks para o seu programa em > vários sites da web sinta-se elogiado ! Depois pode ficar triste por não ter > recebido um tostão com o seu trabalho. > > Algumas técnicas de proteção (os prós e contras) > Para avaliação do software: > Nag-Screen: O programa sempre exibe uma tela avisando que é uma cópia de > execução restrita (ou algo semelhante) e solicita o registro do mesmo por um > determinando período. > > Prós: O Usuário sempre é lembrado com uma tela de aviso que está com uma > cópia restrita ou não totalmente funcional. Alguns nag-screens apenas roubam > um pouco do tempo de uso do software mas não chegam a atrapalhar o uso > efetivo, o que é ótimo para o usuário: a lógica da comida grátis que vicia. > > Contras: Se a limitação for apenas o nag-screen todo mundo se acostuma com > ela e depois de um certo tempo até se esquece que ela existe. Não é > eficiente. > > Período: Um programa funciona dentro de um certo período de avaliação. > > Prós: O usuário usará todo o software com todos os recursos e poderá testar > tudo. > > Contras: É comum o usuário esquecer que está com uma cópia de avaliação. > Alguns softwares, com uma péssima proteção, podem ser contornados > simplesmente voltando o calendário do sistema. > > Recursos Chaves Desabilitados: O programa possui alguns recursos que não > funcionam como opções para salvar, exportar etc. > > Prós: O Usuário tem mais liberdade que todos os métodos acima e sempre que > tentar fazer o salvamento de dados lembrará que está com um software não > totalmente funcional forçando uma compra. > > Contras: É uma das formas mais fáceis de um programa receber um crack para > liberar o recurso protegido. > > Para licenciamento do software: > Número Serial: O Programa possui um número único serial que o habilita > completamente. > > Prós: O usuário somente digita o serial e pronto, o programa está liberado. > Ideal para softwares de prateleira aonde o usuário já adquiriu o produto. O > sistema preferido para a divulgação indireta. > > Contras: Centenas de outros usuários somente digitam o mesmo serial e > pronto: centenas de programas registrados. Use esta forma caso não deseje > receber pelo seu programa ou queira uma divulgação indireta do mesmo e > esperar pela consciência do usuário, isso não funciona no Brasil. Centenas > ou milhares de usuário podem usar o mesmo serial. Esta caindo em desuso > rapidamente pois há centenas de sites com index sofisticados de seriais para > qualquer programa o que torna o sistema quase completamente inútil hoje em > dia. > > HardLocks: Um pequeno dispositivo é colocado na porta serial, paralela ou > USB com uma identificação única para liberar o funcionamento do sistema. > > Prós: Um dos sistemas mais difíceis de serem quebrados e definitivamente o > mais seguro. Garante a taxa de uma licença por máquina o que é o ideal. Para > sistemas caros (algo acima de $1000,00) considere seriamente o uso de > HardLocks. > > Contras: Custo do HardLock por cópia licenciada e alguns problemas (raros) > com periféricos usando aquela mesma porta, mas nada tão sério assim para > prejudicar o usuário. As portas seriais e paralelas estão caindo em desuso > com o USB e já existem HardLocks para elas também. Os Hardlocks pode > apresentar defeitos dependendo do tipo. > > Você deve adquirir um kit de gravação e um Hardlock para cada cópia de > distribuição. Não é muito caro mas o seu software deve compensar isto > obviamente. > > Disquete de Habilitação: Um disquete é fornecido junto com o programa para a > sua habilitação ou desabilitação. > > Prós: É o hardlock dos pobres sem o mesmo nível de proteção. > > Contras: Não faça proteção via disquetes de habilitação/desabilitação como o > Dr. Case e outros. É perda de tempo ! Há vários utilitários que fazem a > cópia perfeita do disquete sendo possível habilitá-lo em qualquer máquina. E > ainda pode-se ter o problema de superfície no disco e um belo dia quando o > usuário precisar instalar o software em outra máquina ele terá a surpresa do > disco já mofado ou perdido. Tenha certeza que isto sempre acontece no final > de semana quando ele liga para o seu escritório na segunda descarregando o > seu vocabulário. > > Identidade Única: Uma das melhores e mais eficientes tipos de proteções é de > identidade do equipamentos recentemente implementado pela própria Microsoft. > Isto consiste em recolher dados únicos sobre o seu computador como serial do > HD, informação da BIOS (não aconselhável), Versão do OS, Nome do computador > etc. Com base nestas informações você poderá gerar uma fechadura de > identificação. Essa fechadura precisará de uma chave fornecida por você para > habilitar o seu software unicamente para aquela máquina. > > Prós: Difícil de ser quebrado quando bem implementado e permite alta > adaptabilidade contra cracks criado contra o sistema como patchs invisíveis > que permitem a modificação do sistema. Permite a taxa de apenas uma licença > por computador. > > Contras: Caso o usuário formate a maquina, modifique periféricos chaves o > sistema pode desabilitar a cópia automaticamente. Isto cria problemas com a > solicitação de uma nova licença para instalação. O usuário pode simplesmente > ligar alegando este fato e de boa fé você terá que fornecer uma nova > liberação. > > Habilitação Pela Internet: Ao adquirir um produto o usuário recebe uma senha > que permite a geração de um número para habilitação e instalação em uma > máquina. > > Prós: Após habilitar, o número é automaticamente invalidado para outros > usuário o que evita o problema de divulgação do mesmo pela rede. > > Contras: O seu site deve estar em um provedor 100% confiável ou esteja > preparado para aquele cliente que comprou o produto no sábado a tarde e o > seu site ficou fora do ar no domingo sem ele poder autorizar o software para > o uso. > > Conclusão > Não há método melhor ou pior na minha opinião para proteger um programa mas, > mais trabalhoso ou menos trabalhoso para um hacker quebrar. O Ideal é que > que você use duas ou mais técnicas para proteger o programa. > > Há um princípio básico que ao se usar dois sistemas simples de proteção > independentes cria-se um sistema forte de proteção. Por exemplo, caso use o > sistema de data é fácil monitorar aonde se esta gravando esta informação > (quando o programa foi instalado) e adiar o tempo limite de uso. Nag-Screens > podem ser rastreadas e um hacker com bons conhecimentos de assembler pode > editar diretamente o seu código binário fazendo jumps nas avaliações de > restrições. Agora combinando duas ou três técnicas as coisas complicam para > ele e talvez o trabalho não valha a pena (coisa que ele realmente não é > acostumado). > > Mas antes de começar a desenvolver o sistema de proteção para o seu > programa, siga algumas dicas que aprendemos depois de muito prejuízo com > pirataria. > > 1- Nunca coloque literalmente as mensagens referentes a registro, > nag-screens, avisos de limitação e etcs, em um formato legível para um ser > humano. Faça uma encriptação destas mensagens. Uma técnica bem simples dos > hackers consiste em procurar no código binário por uma determinada > ocorrência tipo " Cópia Trial" e perto tem um "IF" aonde se pode bloquear e > lá se foi a sua proteção. Portanto, faça uma função de codificação e > decodificação e grave todas as mensagens codificadas no seu programa (no > código-fonte) sendo que as mesmas somente serão exibidas quando você chamar > a função de decodificação. > > 2- Faça uma estampa no software. Ou seja, todos os programas possuem uma > informação referente ao seu tamanho físico, data e hora de criação e CRC. > Caso o seu programa tenha sido alterado após aquela data, através de uma > função, o programa poderá verificar em sua estampa interna se ele foi > modificado. Aqui pode ocorrer alguns problemas com programas anti-virus que > usam a mesma técnica para monitorar alteração de executáveis aplicando uma > "vacina" neles mas já é da responsabilidade do usuário. > > 3- Grave dados no registry sempre encriptados e, se eles forem sobre as > informações de registro nunca coloque na mesma árvore das outras definições > do seu software. Isto dificulta e muito as coisa. Mas se o hacker possui um > programa de monitoramento do registry ele poderá facilmente contornar isto > mas não antes sem um bom trabalho de adivinhação. E, nunca use chaves com > nomes óbvios tipo "Serial", "SenhaPrograma", "DataLimite" e etc. Dê sempre > preferência a gravar dados de configuração e autorização no registry do que > em arquivos INI (lembra-se deles ?). O registry é mais difícil de ser > manipulado por um leigo e é possível colocar chaves observando a mudança de > outras chaves o que torna as coisas mais complexas. > > 4- Se possível, implemente um sistema periódico de verificação da licença > via site na web. > > Coloque este alerta em seu termo de uso do seu software e o faça de tal > forma que seja invisível, indolor (não fique interrompendo o usuário) e que > desabilite o software imediatamente ao verificar uma cópia com o número de > série irregular ou divulgado. É importante aqui implementar nos CGI do site > um alerta via e-mail quando ocorrer várias tentativas de liberação de um > mesmo serial. Assim você descobre rapidamente quem vazou um serial para o > público. > > 5- Tenha uma proteção não divulgada. Por exemplo, após o software executar > 300 vezes uma mensagem surge do nada indicando o download de uma cópia mais > atualizada. Nesta nova cópia você já deve ter contornado todos os problemas > com cracks que apareceram no período. > > 6- Faça Check Point em pontos não óbvios do seu software e em vários > lugares. Use uma periodicidade completamente aleatória para fazer isto. Por > exemplo, quando o usuário abrir uma determinada tela não muito utilizada, > ocorre uma verificação em background sobre a validade da licença esta > verificação pode e deve ser aleatória. Após validar e algo estiver errado, > nunca exiba no mesmo momento que a licença é irregular pois se torna uma > referência para o Hacker aonde ele deve procurar no código binário para > quebrar o seu programa. Lembre-se que tudo serve como marcação no código > binário: um caption de um form, o conteúdo string de um controle etc. > > 7- Use constantes. Abuse delas em vez de escrever diretamente nos dialogs > para comunicação com usuário. Faça uma Unit separada aonde somente é > armazenado estas constantes. Isso confunde quem olha o código binário do > executável pois fisicamente no executável elas não estarão próximas. > > Todas estas informações foram adquiridas com a nossa experiência e, > principalmente, com dicas de dois conhecidos especialistas em quebras de > programas e criação de cracks. Na primeira divulgação de um dos nossos > softwares um deles me retornou uma cópia crackeada em questão de horas > (segundo ele, estava sem tempo por isso demorou tanto), e ficamos > envergonhados para dizer a verdade. Depois ao implementarmos a codificação > de string e outras técnicas, ele levou uma semana mas não conseguiu liberar > todos os recursos. Ao ativarmos os sistemas randômicos de verificação em > background e validação pelo site ainda não tivemos uma quebra. Claro que ela > irá ocorrer, mas enquanto isto estamos recebendo pelo nosso trabalho. > > Acho que seguindo estas dicas você terá uma boa chance de receber pelo seu > trabalho na quantidade justa. Lembre-se que há uma legião de pessoas ai fora > tentando quebrar a proteção pelo simples prazer de dizer que foram eles. > > Portanto a questão não é fazer um sistema 100% seguro (o que é quase > impossível) mas um que seja 110% trabalhoso para eles. Tenha em mente também > que eles são em maior número e problema não é se vão quebrar a segurança mas > quando e o que você vai fazer em seguida. > > Não poderíamos terminar este artigo sem falar sobre alguns componentes para > proteção. > > Uma coisa que percebi é que certos componentes de proteção são tão > complicados que você as vezes tem que passar uma semana implementando ele no > seu sistema. Mas aqui estão alguns que são ótimos pela simplicidade e fácil > implementação.: > > OnGuard (TurboPower) - Não é propaganda pessoal ! Os componentes da > TurboPower tem uma grande qualidade e o OnGuard faz tudo o que se precisa de > proteção. Validação e criação de serial, limitação por data, estampa no > executável, dias de execução e muito mais. A grande vantagem é que há > exemplos para tudo que podem ser fácil e rapidamente adaptados. > > Lock&Key - Gosto do Lock&Key pela sua simplicidade de uso. Ele gera uma > "fechadura" com base nos dados do HD do usuário e com este número-fechadura > você cria um número único para liberar o software. Trabalha com níveis o que > é ideal para proteção progressiva. Não estamos usando mais este, apesar de > sua boa qualidade. > > SharewareIt - Crie sistemas de shareware de forma bem simples. A vantagem é > que é gratuito. > > > > Este artigo foi escrito por Murilo Oliveira, proprietário da FastByte. > Contou com a colaboração de Fred Montier. > > Em 11/08/05, Osmar de Souza Júnior<[EMAIL PROTECTED]> escreveu: > > > > O Walter só confirmou o que já se sabe. Você pensa numa solução para > > impedir a cópia ilegal, e vem outro e descobre um jeito de burlar. > > > > É uma corrida de gato e rato. E pior: é uma corrida cíclica, você > > nunca sairá dela. > > > > -- > Álvaro Vieira > [EMAIL PROTECTED] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html