Pessoal, to desenvolvendo (na verdade já terminei, só falta essa parte) um aplicativo em Java que pega a cd-key que o usuário coloca e verifica no meu servidor se ela é pirata ou original e talz. O problema é que se ela for original, eu preciso deixar isso escrito em algum lugar, pois cada vez que o software é iniciado, o código faz a verificação se existe essa informação. Se o software for “pirata” eu queria escrever em um arquivo (ou outro tipo de armazenamento) quantos dias falta para ele expirar e não funcionar mais. O problema é que se eu escrever isso em algum arquivo e salvar no HD, basta os espertinhos irem lá e fazerem um backup do arquivo que diz quantos dias ainda tem para usar o aplicativo, e quando estiver quase no fim do prazo, é só ir lá e colar o backup que a contagem volta lá pra cima.
Já quebrei a cabeça pensando em uma maneira de salvar essa informação no computador, mas que não seja em um arquivo que possa ser tão facilmente copiado. Pensei em salvar no registro do Windows mas isso vai tirar toda a portabilidade da aplicação.
Será que vocês tem alguma idéia de como “dificultar” essa cópia em algum arquivo, salvar de outro jeito ou outro lugar?
Muito Obrigado!
Utilize algum algoritmo de criptografia inserindo informações que não podem ser desvendadas pelo usuário comum. Assim, apenas teu programa saberá cifrar e decifrar as informações desse arquivo.
Acho que algo nessa linha de raciocínio poderia ser utilizado. Infelizmente nunca desenvolvi algo parecido com isso.
[quote=pedroghilardi]Utilize algum algoritmo de criptografia inserindo informações que não podem ser desvendadas pelo usuário comum. Assim, apenas teu programa saberá cifrar e decifrar as informações desse arquivo.
Acho que algo nessa linha de raciocínio poderia ser utilizado. Infelizmente nunca desenvolvi algo parecido com isso.[/quote]
Você pode seguir o algoritimo desta aplicação web aqui.
Olhe o código fonte.
http://cursoeduardo.vilabol.uol.com.br/nick.htm (mas olhe só o algoritomo por favor fiz esta pg com 12 anos) :lol:
[list]Você pode usar a criptografia XOR (bit a bit) - ou exclusivo, é a mais fácil de se implementar. (a ^ b ^ b == a) sempre verdadeiro.[/list]
[list]Você pode esconder essa informação, por exemplo em uma imagem. É só escolher um ponto e por o dado lá. Dificilmente alguém vai notar, é um ponto só.[/list]
A minha idéia seria fazer a contagem em um arquivo normal e verificar a data de instalação a data atual, onde a data de istalação poderia ser gravada no própio código fonte do arquivo. Dessa força seria nescessária uma decompilação e reescrita para quebra.
No caso que descrevi seria nescessário construir um istalador que altera-se o cod-fonte e compila-se logo depois deletando o arquivo com linguagem de alto nível.
E facílimo de quebrar também.
Se a pessoa estiver usando um editor hexadecimal para olhar os arquivos que foram alterados na execução do programa, pouco importará se é uma imagem ou não.
Melhor mesmo é usar a API de criptografia do Java. Inclua no seu arquivo informações como a data, o que impede que alguém simplesmente restaure de um backup. Zere a contagem caso a data regrida no tempo, também.
Você deve também usar um ofuscador no seu código fonte, ou fazer essa parte de verificação usando uma linguagem mais difícil de se reverter, como o C++.