Estou iniciando um software que será um produto, decidi montar ele utilizando Java mas fica a dúvida: como vender um produto que pode ser aberto (engenharia reversa fácil), existe alguma coisa que garanta que o usuário final não abra fácil o arquivo e veja minha lógica e altere e recompile ela? Ou que dê pelo memos um trabalho excessivo para ele?
Acredito que um bom contrato com seus clientes seja a única forma não “burlável” de garantir que ele não irá mudar seu sistema.
Tem alguns outros tópicos no GUJ perguntando a mesma coisa. Dá uma procurada por ofuscação.
Bom…
1° - Vc distribui apenas os .class e não os .java .
2° - Vc pode “obfuscar” com http://www.yworks.com/en/products_yguard_about.htm ou diversos outros.
3° - Se vc está fazendo em Java e se estiver sendo feito para Web, pq não pensa na idéia de vender o serviço em vez do software(SaaS).
É uma tendência…
Melhor proteção sua é um bom contrato. Nada impede de alguém descompilar e entender a lógica, você pode apenas dificultar.
Vende o produto como serviço é uma opção bastate viável hoje em dia, como o colega sugeriu. Ou vender o software com uma opção de que o cara tenha o fonte mas qualquer alteração ou melhoria tem que ser compartilhada com a empresa.
Veja como o seu negócio vai funcionar e tente trabalhar com isso. O melhor profissional nesse ramo da informática ainda é um advogado!
O problema é que os clientes estão pelo mundo, é um produto em que nem sempre as pessoas vão estar conectadas, para dizer a verdade o produto não pode ter como necessidade a existencia de conexão.
Dica: normalmente, quando você vê um produto feito em Java:
É algo open-source (se a fonte é aberta, porque protegê-la?)
É algo hospedado em um servidor (aplicação Web , Web Service, SMS etc.)
É algo cujo fonte é de propriedade do seu cliente (por exemplo, grandes aplicações para grandes empresas);
Um produto muito famoso em Java é o tal do Limewire. Como você deve saber, você não paga um centavo para baixar a versão gratuita, e a versão paga requer ativação on-line, mas não há nenhuma proteção estratosférica nele.
Se você precisa algo que segue aquele antigo modelo (você vende um CD que não pode ser copiado etc. e cujos fontes são secretos, etc. etc.) escolha uma outra linguagem (não adianta usar uma linguagem .NET, exceto a C++ ou o Delphi, que as linguagens .NET também têm o mesmo problema).
É claro que você pode gastar algum dinheiro e tentar compilar seu programa usando o ExcelsiorJET (www.excelsior-usa.com); só que ele vai ficar amarrado ao Windows (ou ao Linux, dependendo de que versão você comprar). O código gerado será código nativo, mas veja se há alguma incompatibilidade com alguma biblioteca que você estiver usando.
Acredito que a ofuscar o código já protege o suficiente, pois se o cara vai ficar lendo aquele código que a descompilação gera, então ele vai ler assembly que é gerada em outras linguagens…
Um produto feito em java que é vendido e bastante, é o Oracle Applications, a partir do 11i é feito em Swingão !
Que tal fazer um produto que agrade seu público-alvo ao ponto que ele sequer veja sentido em modificar alguma coisa? Fazendo isso e usando um preço justo pelo produto e pelos serviços associados a ele dificilmente você terá este tipo de problema.
[quote=s4nchez]
Que tal fazer um produto que agrade seu público-alvo ao ponto que ele sequer veja sentido em modificar alguma coisa? Fazendo isso e usando um preço justo pelo produto e pelos serviços associados a ele dificilmente você terá este tipo de problema.[/quote]
Software Bom ou não, barato ou caro, agradar ou não agradar não importa sempre vai haver a pirataria. Achar que vou desenvolver um software perfeito com um preço de 10 centavos que o mundo todo ama, isso não vai garantir que estou livre de pirataria.
Chegamos a conclusão aqui que vamos partir para a ofuscação do código e que no futuro vamos evoluir, não sei para aonde.
A questão é que normalmente só vejo este tipo de preocupação em proteger o código em produtos meia-boca… Deve haver uma razão pra isso ;-)[/quote]
Não sei exatamente com o que tipo de software\mercado\público-alvo você trabalha (e nem quero saber) para o único motivo de você querer esconder o seu código-fonte é vergonha de alguma gambiarra que por ventura você tenha feito (também não estou dizendo que você faz gambiarras no seus projetos, não se ofenda).
O fato é que a maioria das empresas quer restringir a capacidade de terceiros de adicionar novas funcionalidades ao produto ou então alterar uma funcionalidade já existente.
Não vou entrar na discussão de que “ah, isso é errado, tinha que ser open source para qualquer um poder alterar, e aí você só vende o serviço, faz Sofware as Service e etc”.
Eu estava falando de produto, não código-fonte. Você pode ter código meia boca e um produto maravilhoso e vice-versa, e por isso que me referi ao produto. Há uma grande diferença entre os dois.
O que eu queria dizer é que se o seu produto é bom ele agrada o seu público, e portanto haveriam menos razões para terceiros quererem modificá-lo. De qualquer modo isso é só uma hipótese.
Relaxa que também não quero entrar nesta discussão.
Porque será que todo forum java da briga e discussões (é a coisa mais nojenta em java) com trocas de ofensas, acho melhor parar aqui com este asssunto de vender software.
A pergunta era simples e a resposta já foi dada, obrigado pessoal pela dica do JET, já estou fazendo bem como estou também usando o Proguard para ver se fica legal.
OBS.: Espero não ser banido por ter iniciado este tópico pois consulto muito este forum.