Segurança para aplicativos desktop. [RESOLVIDO]

13 respostas
J

Criei um aplicativo desktop básico, criei o .jar mas gostaria de implementar alguma segurança para quem for usá-lo não dar um EXTRAIR ARQUIVOS e ver as .CLASS.

Tem alguma ferramenta que bloqueia isto, algum tipo de anti-engenharia reversa? Ou um anti-UNZIP()?

Vlw.

13 Respostas

janjan

não sei dizer nome mas existe uns obfuscadores de códigos sim…
mas mesmo assim nao é totalmente anti engenharia reversa para java.

janjan

http://www.guj.com.br/posts/list/27865.java

ViniGodoy

Você pode, além do ofuscador, ter uma classloader que carrega .jar criptografados. Aí, vc teria apenas um .jar com a classe básica, que chama esse classloader, e outro .jar com as classes criptografadas em si.

Na verdade, isso também não resolve o problema, já que alguém poderia fazer a engenharia reversa sobre o primeiro .jar, mas já inibe um curioso que abra o seu .jar com o zip.

j0nny

Aproveitando o tópico, criei uma API e gerei o jar com o proguard, mas assim ofuscado, não consigo utilizar as classes da minha api, só se crio normal, sem ofuscação, é normal isso? :oops:

fabiofalci

Dependendo do quanto ofuscado está, tu vai ter classes assim:
a.Aa
a.Ab
a.Ac

Tem que dar uma configurada nele pra não editar os nomes, métodos públicos, etc.

j0nny

fabiofalci:
Dependendo do quanto ofuscado está, tu vai ter classes assim:
a.Aa
a.Ab
a.Ac

Tem que dar uma configurada nele pra não editar os nomes, métodos públicos, etc.

Cara, obrigado pela ajuda :slight_smile:
Dei uma procurada na internet e nao achei como configurar essas opções, como eu faria entao para nao alterar o nome das minhas classes, e o nome dos metodos publicos?

ViniGodoy

Não ofuscando. Manter claros os nomes de classes e métodos públicos vai deixar seu aplicativo praticamente legível novamente. Vai ser uma ofuscação que vai atrapalhar mais você do que quem quer realmente ler seu código.

Ofuscação só é efetiva se você puder aplicar sobre o código todo, e tornar praticamente tudo ilegível. Não é o caso de libs, pois elas precisam ser usadas em outros aplicativos.

Se o seu caso é esse, talvez elaborar um bom contrato seja mais efetivo, ou pensar seriamente num modelo de negócio com código aberto.

j0nny

ViniGodoy:
Não ofuscando. Manter claros os nomes de classes e métodos públicos vai deixar seu aplicativo praticamente legível novamente. Vai ser uma ofuscação que vai atrapalhar mais você do que quem quer realmente ler seu código.

Ofuscação só é efetiva se você puder aplicar sobre o código todo, e tornar praticamente tudo ilegível. Não é o caso de libs, pois elas precisam ser usadas em outros aplicativos.

Se o seu caso é esse, talvez elaborar um bom contrato seja mais efetivo, ou pensar seriamente num modelo de negócio com código aberto.

Na verdade, é mais por diminuir o tamanho dela, pois com o proguard consigo uma redução de uns 60% :cry:

fabiofalci

Mas qual é o tamanho do teu jar pra vc pensar em reduzir?
Normalmente o que mais toma espaço são as próprias dependências, mas mesmo assim, um tamanho não considerável.

j0nny

fabiofalci:
Mas qual é o tamanho do teu jar pra vc pensar em reduzir?
Normalmente o que mais toma espaço são as próprias dependências, mas mesmo assim, um tamanho não considerável.

São 236KB, e se tratando de J2ME, para uma API, é muito grande :cry:

fabiofalci

ah bão…

Mas nesse caso, vc deve ofuscar somente quando for executar, o teu produto final, certo?
Nesse caso que não está funcionando?

j0nny

fabiofalci:
ah bão…

Mas nesse caso, vc deve ofuscar somente quando for executar, o teu produto final, certo?
Nesse caso que não está funcionando?

Não não, quero minha API ja ofuscada com o tamanho reduzido, pra aí então usa-la em diversos projetos (e vai ser usada em todos praticamente).

J

Aê galera é isso mesmo, não lembrava o nome.

Valeu!

Criado 23 de fevereiro de 2010
Ultima resposta 24 de fev. de 2010
Respostas 13
Participantes 5