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()?
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.
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:
[quote=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.[/quote]
Cara, obrigado pela ajuda
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?
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.
[quote=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.[/quote]
Na verdade, é mais por diminuir o tamanho dela, pois com o proguard consigo uma redução de uns 60%
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.
[quote=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.[/quote]
São 236KB, e se tratando de J2ME, para uma API, é muito grande