Olá…
Gostaria de saber um jeito seguro para distribuir aplicações pra desktop…
uso o plugin FatJar pro eclipse para gerar o .jar com todas as bibliotecas embutidas e uso o JSmooth para gerar um executável a partit desse .jar.
Porém esse executável precisa do .jar para sua execução… dessa forma tenho que distribuir junto o .jar com todos os .class e sabendo que existe vários descompiladores por aí essa distribuição ficaria praticamente OpenSource…
então, como posso distribuir minhas aplicações de forma segura?
desde já obrigado…
Por que vc não usa o Web Start? É uma maneira simples e pratica de distribuir, basta baixar o JNPL, e caso vc faça uma atualização disponibiliza ela la no server, e o Web Start vai fazer o download da aplicação automaticamente.
Simples, prático e rápido.
[]'s
em casos especificos, as vezes vale a pena tentar um compilador nativo como esse
Caro erico_kl, tenho a mesma dúvida q vc, espero que tenha várias respostas.
Felagund, nem todos os meus clientes possuem conexão com a internet, isso inviabiliza a utilização do Web Start, tendo eu que distribuir as minhas aplicações em CDs.
Estou acompanhando o tópico, no aguardo de uma resposta.
Pode obfuscar o código, para que nibguém entenda. Em linguagens que geram pseudo código, é o único meio de proteger o fonte.
Valeu as dicas ae…
se eu executo a aplicação com webStart ela simplesmente nao roda…
e se eu tento executar pelo comando “javaws nome.jnlp” gera um erro TooManyArgumentsException
porem se eu executo pelo comando “javaws -Xnosplash nome.jnlp” roda perfeitamente…
alguma dica?? ahh… é a primeira vez que utilizo o Web Start…
Arquivo fluxo.jnlp:
<?xml version="1.0" encoding="utf-8"?>
<jnlp
spec="1.0+"
codebase="http://localhost:8080/fluxo"
href="fluxo.jnlp">
<information>
<title>Java Web Start</title>
<vendor>SGCarro</vendor>
<homepage href="http://localhost:8080/fluxo/index.html"/>
<description>Tutorial Java Web Start</description>
<description kind="short">Tutorial JWS</description>
<icon href="images/logo.jpg"/>
<offline-allowed/>
</information>
<resources>
<j2se version="1.3+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="FluxoCaixa.jar"/>
<property name="myProperty" value="Isso é um exemplo de propriedade"/>
</resources>
<jar href="FluxoCaixa.jar" main="true" download="eager"/>
<application-desc main-class="view.JFFluxoCaixa"/>
</jnlp>
Arquivo index.html:
<html>
<head>
<title>Fluxo Caixa</title>
</head>
<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then
javawsInstalled = 0
Else
javawsInstalled = 1
End If
If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.4.2.0"))) Then
javaws142Installed = 0
Else
javaws142Installed = 1
End If
If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.5.0.0"))) Then
javaws150Installed = 0
Else
javaws150Installed = 1
End If
End If
</SCRIPT>
<body>
<br>
<p align="center"><font face="tahoma" size="4"><b>Java Web Start</b></h1>
<p align="center"><img src="images/logo.jpg" border="0"/></p>
<p align="center"><font face="tahoma" size="2">
<script>
insertLink("fluxo.jnlp", "Clique aqui para executar a aplicação");
</script>
</body>
</html>
Obs: o Link para executar a aplicacao nao aparece
Só um comentário, sem querer ser chato: ofuscar o código ilumina mas não aquece.
E se for fazer aplicação desktop no melhor estilo cliente-servidor e
for se preocupar com segurança (entenda leitura do fonte), melhor ir pro Delphi ou um similar
que será mais feliz (não que o código Assembly gerado pelo Delphi
vá resolver 100%, ainda podem depurar seu código).
Eu ainda acho um pé no saco esses descompiladores pra Java. A Sun bem que podia mandar
algo mais “difícil” de interpretar no Java 7.
Inté.
Cara, obfuscar já ajuda…
Mas contra pirataria, não adianta brigar assim. Os cara sempre dão um jeito de crackear o sistema. O que você pode fazer é, de alguma forma, oferecer algo que faça valer a pena ter a licença.
Realmente ajuda, josenaldo.
Mas crackear é diferente de ter o seu fonte.
Vou dar um exemplo: digamos que vc tenha uma rotina de validação de
senha dentro do seu fonte (coisa simples). Com o código descompilado do
Java, isso vem de mão beijada, até mesmo porque o obfuscador não pode
modificar a lógica da coisa.
Depurar as chamadas Assembly já é bem mais difícil para entendimento mas
não impede do cracker fazer um desvio.
O maior problema que eu vejo nem é a licença e sim a segurança que seu
software irá proporcionar para seu cliente.
Já pensou se um funcionário do seu cliente com pouco conhecimento em Java resolve
“sacanear” a empresa? Numa aplicação desktop em Java vc ficará mais
vulnerável.
Só pra não fugir do tópico, o WebStart é uma mão na roda.
No caso do colega que tem clientes que não utilizam internet (ainda existe isso???),
disponibilize os 2 serviços: WebStart para que puder acessar e CD para quem não
tem internet.
O meu problema é bem esse mesmo, meus sistemas são para automações industriais, por isso a questão de proteger o código fonte é muito importante, e realmente tenho validações e senhas que ao acessar o código fonte tudo vai por água a baixo. A forma que estou pensando em fazer pra melhorar a segurança, vai ser gerar um arquivo compilado separado da minha aplicação Java no qual estará a lógica para as minhas senhas.
Mas isso mostra um problema enorme para o JAVA, que é uma linguagem tão poderosa mas não tem como proteger ao menos o código fonte!
[quote=homisinho]O meu problema é bem esse mesmo, meus sistemas são para automações industriais, por isso a questão de proteger o código fonte é muito importante, e realmente tenho validações e senhas que ao acessar o código fonte tudo vai por água a baixo. A forma que estou pensando em fazer pra melhorar a segurança, vai ser gerar um arquivo compilado separado da minha aplicação Java no qual estará a lógica para as minhas senhas.
Mas isso mostra um problema enorme para o JAVA, que é uma linguagem tão poderosa mas não tem como proteger ao menos o código fonte!
[/quote]
Pense bem… Será que já não pensaram nisso antes? Será que, depois de tanto tempo, não existe técnica pra combater isso? Pesquise um pouco mais…
Bom, eu já pesquisei muito sobre isso na há um tempo atrás e sinceramente não encontrei
nada melhor que obfuscadores.
Dividir a aplicação em 3 camadas (desktop) ou web diminui o acesso ao .jar com a regra
do negócio mas ainda não elimina a possibilidade de descompilação.
Se tiver uma idéia melhor, estou bastante interessado.
Inté.
Ninguém até agora citou hardlocks, que creio ser muito confiável para lidar com a situação de distribuição da aplicação.
Com ele vc consegue:
:arrow:Limitar o número de execuções da aplicação
:arrow:Proteger contra alterações indevidas
:arrow:Pode copiar a vontade sua aplicação, mas sem o hardlock a aplicação não roda
Enfim, para quem precisa, não vejo método mais seguro a não ser investir nesta hardware, que convenhamos, não é caro para o que se propõe.
então acho ainda que a solução seria Web Start…
Encontraram alguma solução?
Já existe alguma solução para este problema?
Não.
Ok, obrigado!