| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 18:17:54
|
thiagocg
Virtual Machine Man
![[Avatar]](/images/avatar/e22c686bc771d5872150738b15f3e533.jpg)
Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline
|
Procurei no forum mas não achei nenhum topico sobre isto, seguinte, tenho várias aplicações desenvolvidas em swing, todas elas eu apenas gero um jar e adiciona a maq. cliente. O que eu quero é impedir q um usuario, simplesmente copie a aplicação e distribua para outros computadores!
Como posso fazer isso?
Alguma dica?
Obrigado a todos q puderem ajudar!
Abraço!
|
________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 18:29:43
|
kapa01
Debugger
![[Avatar]](/images/avatar/6840b145d767fd6d53ef6a0595784bdd.png)
Membro desde: 15/08/2008 17:55:11
Mensagens: 71
Offline
|
Eu estou fazendo uma aplicação para um cliente e estou fazendo da seguinte forma:
Na primeira execução na maquina do cliente ele o programa pedi uma senha, se a senha for valida(só eu sei a senha), se a senha for valida ele cria um arquivo em um lugar que o usuário não consiga descobrir.
Quando o Programa é executado ele procura por esse arquivo, se o arquivo não existir o programa ira pedir a senha.
Essa não é a maneira mais correta, mas talves ajude.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 18:34:30
|
thiagocg
Virtual Machine Man
![[Avatar]](/images/avatar/e22c686bc771d5872150738b15f3e533.jpg)
Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline
|
Já é uma boa idéia, mas sera q não tem uma forma mais segura? Alguma api q faça esse tipo de trabalho?
|
________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 18:46:23
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Não há forma 100% segura de fazer isso. O máximo que você pode fazer é dificultar.
Se você bolar um esquema maluco de verificação de arquivo, verificação de data, de serial de HD, qualquer coisa, nada impede o usuário de criar ou editar o arquivo, de mudar a data do PC, de mudar o serial do HD (existem ferramentas que conseguem fazer isso).
A primeira coisa que um cracker iria fazer é descompilar o programa, crackeá-lo e recompilar. Por isso é recomendado que você use um bom ofuscador.
Melhor ainda, ofusque todas as classes e crie um ClassLoader (também ofuscado) que as leia criptografadas e as carregue on-the-fly. Melhor ainda se você conseguir fazer ele gerar bytecodes dinamicamente (ofuscados, obviamente). Melhor ainda se a cada execução os bytecodes gerados forem diferentes.
Mas, não importa o que você faça, um bom cracker inteligente e determinado uma hora consegue quebrar. O máximo que você pode é dificultar ao máximo a vida desse suposto cracker até que não valha a pena queimar neurônios para tentar quebrar o programa. O porém, é que para chegar nesse ponto, quem vai ter que queimar muito neurônio é você!
Uma opção interessante, porém de ética questionável, é fazer o programa se autodestruir ou se corromper se ele perceber que alguém está tentando quebrá-lo.
Outra coisa interessante é um programa capaz de se automodificar a cada execução. Isso dificulta muito a vida do cracker pois torna quase impossível reproduzir uma mesma execução do programa.
Gerar código defeituoso (ou seja, lixo) no meio de códigos válidos é algo promissor também, desde que mas que não atrapalhem a execução do programa. Principalmente se esse código corresponder a mais de 90% do programa carregado, fica muito difícil separar o joio do trigo.
Enfim, use as mesmas técnicas que os vírus (principalmente os mais antigos) costumavam usar para enganar os softwares anti-vírus e tornar um inferno a vida das pessoas que criavam os anti-vírus.
This message was edited 5 times. Last update was at 13/10/2008 19:10:55
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 19:18:12
|
khaoz
JavaGuru
![[Avatar]](/images/avatar/7c097a5ed40a8d91afd49026dd3b1062.jpg)
Membro desde: 14/08/2006 08:49:50
Mensagens: 224
Localização: São Paulo/SP
Offline
|
Ainda não passei por isso, mas eu usaria a idéia do kapa01 ( a do victorwss ta em um nível muito alto hehehe ) mas um pouco diferente já que se o aplicativo for rodar no linux eu não posso ficar largando arquivo em qualquer lugar fora do home.
Na inicialização do programa eu iria verificar se não existe um determinado arquivo, podendo até ser visivel ao usuário. Não existindo, eu coleto, escrevo e criptografo todas as informações "fixas" do computador. A chave para criptografia será solicitada pelo cliente. A partir do momento que o arquivo existe eu verifico se os dados dele conferem com a máquina.
Isso não é tão seguro, pois o cliente pode alegar que trocou de máquina, placa etc. Mas isso força ele a te ligar e você pode solicitar uma nota fiscal da troca de equipamento, de algum serviço prestado (tudo previsto em contrato) e por ai vai.
This message was edited 1 time. Last update was at 13/10/2008 19:22:04
|
Twitter
Como elaborar uma pergunta
Oracle AIA 11g Certified Implementation Specialist
Service-Oriented Architecture 11g Implementation Specialist |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 19:44:42
|
kapa01
Debugger
![[Avatar]](/images/avatar/6840b145d767fd6d53ef6a0595784bdd.png)
Membro desde: 15/08/2008 17:55:11
Mensagens: 71
Offline
|
para ficar ainda mais dificil vc pode criar esse mesmo arquivo com a extenssão .dll e colocar dentro de alguma pasta do windows com o nome parecido com algum que ja existe la, assim sera praticamente impossivel do usuario copiar esse arquivo.
Agora se for Linux já é outra história
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 20:57:03
|
psevestre
JavaEvangelist
Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline
|
Se o valor unitário do seu aplicativo justificar, sugiro não gastar muito tempo com isto e utilizar uma solução profissional
Uma das que pesquisei e possui equipe de suporte no Brasil é a Alladin (http://www.aladdin.com/). O custo, mesmo no caso da solução utilizando HardLock, é bem razoável.
Leve em conta que, para o usuário final, soluções baseadas em características da máquina são um porre.
Passei por isto recentemente quando o HD do notebook de minha esposa queimou e softwares educativos (ela trabalha nesta área) que estavam instalados não puderam ser reinstalados. Penei para convencer os caras que não estava copiando o software. Um deles teve a cara-de-pau de pedir que eu enviasse o HD defeituoso para que eles pudessem comprovar o que eu estava dizendo (por minha conta, claro...) !!!
|
http://justaphilpicks.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 21:42:24
|
thiago.filadelfo
Virtual Machine Man
![[Avatar]](/images/avatar/a0dabc6f2a8ea64b7fb210eec0175a02.jpg)
Membro desde: 07/07/2007 00:32:26
Mensagens: 579
Localização: São Paulo
Offline
|
Olá
Não sei, mas acho que o sistema de ativação da microsoft é bacana, no ponto de vista
de distribuição de cópias...
Você cria uma chaves (keys) e válida on-line essa key... tem um prazo para validar
partir deste prazo ou de número de execução seu programa não roda mais...
Mas a idéia de hardlock é interessante, há muito tempo atrás via o AutoCad com esse hardlock
plugado na porta paralela..
Enfim.. acho que precisa ver a política de como vai ser distribuído e de como vai
ser o ambiente que esse sistema irá rodar, solução é que não falta!!! rsrsrs
Flwssss
|
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2008 22:50:53
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5809
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Já vendi muito software com hardlock e sei que é uma das raras proteções que funciona. Mas precisa de JNI, coisa que não é nada difícil, para acessar o hardlock.
Outras idéias mirabolantes podem ser adotadas inclusive verificações pela Internet como a Microsoft faz. Em todos os casos, inclusive com hardlock, o mais importante é ter um bom contrato.
[]s
Luca (que quando vendia software tinha um bom contrato)
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2008 09:57:43
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
thiagocg wrote:Procurei no forum mas não achei nenhum topico sobre isto, seguinte, tenho várias aplicações desenvolvidas em swing, todas elas eu apenas gero um jar e adiciona a maq. cliente. O que eu quero é impedir q um usuario, simplesmente copie a aplicação e distribua para outros computadores!
Como posso fazer isso?
Alguma dica?
Bom, depois de todas as dicas de criptografia e hacking (que sempre incluirão a encriptação da classe que faz a verificação da licença) a opção mais simples para impedir a copia indiscriminada é torná-la legal. Ou seja, deixe o cara copia o que quiser.
Venda o serviço que o software faz e não o software em si. Afinal uma cópia não lhe custa nada , mas um cliente a menos sim.
Quando o cara deixa de usar o seu software ( o seu serviço) vc tem prejuízo, mas quando ele copia o software não.
O problema não é distribuir para outros computadores e sim para outros clientes. Mas isso é uma forma de markting viral. Se ele copia para outrem é pq o software é bom na prespectivas dos clientes. Ou seja, vc tem marketign a custo zero. Venda serviços de terinamento, upgrade, etc.. e deixe as copias soltas. Assim vc terá mais clientes em potencial, menos esforço de propaganda. A qualidade do seu produto é a melhor propaganda ( mas não quando ele não tem pernas... ).
Altera a licença. É uma ideia...
This message was edited 1 time. Last update was at 14/10/2008 09:58:42
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2008 11:19:35
|
avencurt
Thread.start()
Membro desde: 10/09/2008 15:03:43
Mensagens: 27
Offline
|
Qual o problema do cliente copiar a tua aplicação?
Tu estás cobrando por número de licensas que ele usa?
No contrato que faço eu cobro o desenvolvimento da aplicação e o suporte, deixando o cliente livre para copiar e redistribuir a aplicação, pois foi ele mesmo quem pagou por isso.
Caso ele repasse a aplicação para o concorrente dele, não será problema meu.
E tomará que o concorrente dele me ligue para prestar suporte, pois será mais um cliente do qual eu cobrarei o suporte.
|
http://www.avencurt.com
http://www.flickr.com/photos/avencurt |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2008 13:22:21
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Luca wrote:Olá
Já vendi muito software com hardlock e sei que é uma das raras proteções que funciona. Mas precisa de JNI, coisa que não é nada difícil, para acessar o hardlock.
Outras idéias mirabolantes podem ser adotadas inclusive verificações pela Internet como a Microsoft faz. Em todos os casos, inclusive com hardlock, o mais importante é ter um bom contrato.
[]s
Luca (que quando vendia software tinha um bom contrato)
Mas até mesmo hardlock pode ser violado. É verdade que isso é significativamente difícil, mas não é impossível. Pode-se por exemplo crackear-se criando-se um mock falso do hardlock ou então atacar o ponto do programa que verifica o hardlock.
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2008 13:29:25
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5809
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
victorwss wrote:Mas até mesmo hardlock pode ser violado. É verdade que isso é significativamente difícil, mas não é impossível. Pode-se por exemplo crackear-se criando-se um mock falso do hardlock ou então atacar o ponto do programa que verifica o hardlock.
Verdade mas muito difícil mesmo, pelo menos do modo como eu fazia a verificação. Mas usei mais em aplicações Fortran e C que são compiladas e muito mais dificeis de crackear. Java, mesmo com código embaralhado, sempre é mais fácil de escarafunchar. O melhor mesmo ainda é um bom contrato e usar a Internet para validar a licença (de tempos em tempos).
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2008 13:33:35
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
Ou fazer que nem a 37signals, colocar tudo como aplicação web e cobrar mensalidade
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2008 13:55:46
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Deixe que usem, assim o seu programa vai se popularizar.
Quer evitar de verdade? contrate um advogado
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
|
|