Boa Walter, falou bem... Já tinha lido algo sobre CRC, e você colocou o tema muito bem... Acho que essa é uma boa oportunidade para criarmos algo muito bom aqui...
_____ De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Walter Alves Chagas Junior Enviada em: sexta-feira, 28 de julho de 2006 19:12 Para: 'delphi-br@yahoogrupos.com.br' Assunto: RES: [delphi-br] CRC de arquivos. Elazar, Semana retrazada eu tentei ascender este assunto lá na lista-delphi, a respeito do CRC. Postei até o link do Delphi About que tratava do assunto: http://delphi.about.com/od/fullcodeprojects/ss/crc_filecheck.htm A ideia minha era abrir uma thread a respeito do assunto, mas poucos lá interessaram. O resto ou fez algum breve comentário ou não entendeu bem o que era. Uns achavam se tratar de mais algum método anticópia de um programa e outros associaram o assunto com crack. Quando na verdade não é nada disso. Este interessante recurso visa assegurar mais ainda seu executável contra a mão maldita do usuário fução: O número serial CRC (Cyclic Redundance Code). Primeiramente isto daí não tem absolutamente nada haver com chave de ativação de programa ou de senha pois este número serial não está em lugar nenhum no programa, LUGAR nenhum. Nenhum. Portanto não tem um lugar aonde ele fica. Ele não fica. Ele é calculado com base em infomações do executável como data, hora, tamanho e agrupamento de bytes internos. O CRC consiste em um código gerado com base na situação atual de seu executavel (data e hora de compilação + tamanho). Caso alguém abra seu exe em um editor de programas ou mesmo no Debug do DOS e mexa em alguma coisa dentro dele e salve-o, a chave serial de CRC já é outra. Aliando isto ao fato também deste número serial não está em lugar nenhum no programa, isto anularia a ideia de girico dos espertozoides tentarem copiar o CRC antes de mexer no executável, mexer nele, e depois salvar o CRC antigo nele novamente achando que, com isto, não deixariam rastro algum. Então você pode, além de criar seus métodos anticópia, colocar um validador de CRC em seu programa de forma que se alguém entrar nele pra mudar nome de autor ou de empresa filiada, ou mesmo tentar quebrar a regra anticópia, o executável irá ter outro CRC e você pode impedir a execução dele mediante validação desta "chave serial" interna. PS: Não confundam CRC com registro de licença de programa. Registro de programa é um metodo que você usa para que seu programa libere funcionalidades internas mediante a entrada de um código que seu cliente irá lhe pedir. VOCÊ PROGRAMA ISTO e isto irá depender do seu algorítmo de validação. Agora CRC não. CRC é calculado com base em informações internas do executável aonde se aplica uma regra para ele. Esta regra (algorítmo) é universal. Um programa externo (ou uma função interna) irá validar o executavel. Se o CRC bater com a validação, então este executável está em conformidade com a compilação original. O recurso do CRC é interessante para você checar se seu executável foi infectado por um virus, se foi arrombado por um crack (ou então um cracker) visando burlar validação de licença, visando burlar telas de "Registre" ou visando trocar nomes de empresa e de autor em telas "About". Então. Se o camarada abrir se exe com um PCTools da vida e, for lá trocar alguma coisa no executável, ao salvar ele, o CRC ja passa a ter outro valor. E é esta mudança de valor que você pode usar para assegurar a autenticidade de seu programa. Se ele está intacto ou se foi "mexido" por alguem. qualquer mexida no arquivo já altera o CRC dele. Fazer a validação do CRC de dentro do próprio executável, não é das tarefas faceis porque você precisa montar um código de validação, sendo que a informação que irá checar com o validador, você só obterá ela depois de compilado o programa. Ora, então como é que vamos codificar um if isto igual a aquilo, se o isto não temos antes de compilar o produto? MAS! Nada impede de você colocar o validador em uma DLL ou uma BPL vinculada a ele. Na carga desta biblioteca supra-citada, ela pode validar seu programa e, já de lá, ou deixar ele continuar ou abortar a continuação do mesmo. No caso do abortamento da execução do programa, aí sim você poderia colocar um algorítmo para destruir o executável. Nos bons tempos do clipper, eu costumava fazer um arquivo de lote compilado com o Exe2Bat que virava um executor do meu programa. O programinha verificava a data do computador e checava com a data do executável. Ao expirar, o programa emitia um aviso de que o mesmo foi expirado e ecoava null para o arquivo: Echo Null > <nome do programa>.exe ou então Type Null > <nome do programa>.exe O resultado disto é que o executável ficava com tamanho 0. É por aí que a coisa flui. Se quiserem abrir a Thread aqui, to dentro :) []s Walter Alves Chagas Junior Projeto e desenvolvimento de sistemas Telemont Engenharia de telecomunicações S/A Belo Horizonte - MG - Brasil [EMAIL PROTECTED] Fone: (31) 3389-8215 Fax: (31) 3389-8200 Parabens Telemont - Somos a 8ª maior empresa do Brasil no segmento de construção!! -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de .:: Elazar Dornelles Ceza ::. Enviada em: sexta-feira, 28 de julho de 2006 09:16 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] CRC de arquivos. Bom dia pessoal; Estava olhando algo sobre o CRC de arquivos e ocorreu o seguinte Me ocorreu o seguinte, estava 'brincando' o windows explorer e o winrar...(compactador) e pude perceber o que: ao trocar a data do micro para alguns dias atraz, compactar, o winrar me mostrou um CRC XXXXXX entao acessei as propriedades do arquivo e verifiquei que o mesmo tinha a data de 'acessado' em para o dia que havia trocado a data....blz, voltei novamente o micro para a data atual, acessei o arquivo sem modificar nada...fechei compactei e o CRC ainda continua XXXXX. Voltei ao windows explorer e verifique a data de acesso do arquivo e como era de se esperar estava datada para o dia de hoje. Entao eu pergunto. Onde o windows guarda as informacoes de ultimo acesso do arquivo, data de criacao...modificado...??? Se for no proprio arquivo (como eu imagino que sim)....porque o CRC do arquivo não Muda??? Como eu faco em delphi para mudar alguma coisa em um arquivo qualquer...que não modifique o CRC??? Alguem já trabalhou com algum esquema semelhante??? Atenc. Elazar _______________________________________________________ Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora! http://br.mobile.yahoo.com/mailalertas/ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- <<<<< 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] 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