Seguranca dos meus sources quebrada!

11 respostas
B

Ola, ao gerar o arquivo .jar da minha aplicacao, vc pode usando o winrar (ou outro parecido) pra ver o q tem dentro do .jar.

La vc pode observar q tem as classes do seu programa. Todas sao .class…
Ao abri-las vc ve tudo codificado, q bom! eu achei… :cry:

Esses dias, meu amigo me chega com um programa q pega esses .class e os decodifica, e eu vi todo as minhas classes, todo meu source, sendo decodificado e prontinho pra ser copiado! :shock:

Ha alguma maneira de proteger meu codigo? :?

Vlw!

11 Respostas

von.juliano

Vc pode usar algum programa para ofuscar o seu código, mas isso não garante a “proteção” dele, no máximo dificulta para alguém que queira copiá-lo.

Flw! :thumbup:

T

Use uma outra linguagem (compilada), como Delphi ou C++ (de preferência o C++ Builder, porque o Visual C++ não é produtivo para aplicações GUI).

VB 6.0, por incrível que pareça, embora seja uma linguagem compilada, pode até ser mais ou menos descompilada; depende das opções de compilação. É que ele é compilado para um pseudo-código, na verdade. Esse pseudo-código, dependendo das opções de compilação, é compilado para linguagem da máquina, mas o código gerado é muito regular e (com alguma paciência) pode ser descompilado.

As linguagens .NET também têm o mesmo problema de descompilação, porque usam o mesmo esquema do Java.

B

Entao nao eh possivel codificar seguramente meus sources?

T

a) Você pode tentar usar um “obfuscator” mas isso não é muito útil se seu programa usa muita “reflection”
b) Você pode tentar compilar seu programa para código nativo (por exemplo, com o ExcelsiorJET, http://www.excelsior-usa.com )
c) Você pode usar outra linguagem - aqui é um grupo de usuários Java e sou um dos moderadores, mas também sei outras linguagens.
d) Como você já deve ter ouvido falar, Java normalmente é usado em servidores (aplicações Web) em grandes projetos. Nesses grandes projetos, o proprietário dos fontes é normalmente o cliente (e não você); portanto não há motivo algum para “esconder” os fontes.
Também é muito usado em projetos “open-source”; pelo nome (open-source = fonte aberta) é claro que não há motivo algum para “esconder” os fontes.

RodyBr

A melhor dica para proteger o seu trabalho é implementar uma série de métodos de segurança da informação para a sua aplicação, desde a configuração de segurança dos servidores de aplicação até a autenticação de usuários e interação homem-máquina (ex: poder proibir que o usuário clique com o botão direito no item exibir código-fonte de sua página HTML, e utilize o CTRL C).

B

Entao nao tem jeito de esconder meus sources a nao ser usando os Obfuscators?

nbluis

HTML/CSS/Javascript é código aberto, é impossível proibir o usuário de visualização.
O máximo que vc consegue é complicar um pouco mais, mas qualquer usuário um pouco mais inteligente faz isso rindo…

nbluis

O thingol respondeu todas as alternativas possíveis.

victorwss

Bem, você pode fazer algumas coisas, que são melhores que alguns obfuscators, fazer a ofuscação manualmente!!!

  1. Renomear todos os métodos, atributos e classes para nomes sem sentido vindos das profundezas do inferno.

  2. Acrescentar milhões de métodos e classes inúteis com lógica de altíssima complexidade e ligue-os em vários pontos ao seu código principal guardados por coisas como if (i > i + 1) para ter certeza que nunca executam, mas sem que isso fique óbvio.

  3. Fazer uso abusivo de métodos que contenham complexas expressões matemáticas e se utilizem de vários números aleatórios mas que sempre produzam o mesmo resultado.

  4. Trocar todo o fluxo de dados por chamadas recursivas ao método main, códigos horrorosamente multithread e tratamento de exceções bizarros.

  5. Utilizar coisas como NullPointerException, OutOfMemoryError e StackOverflowError para transportar dados na aplicação e para controlar o fluxo do programa.

  6. Trocar todos os seus atributos por um único public static Object[] = new Object[10000]; dentro da classe Main e trabalhar apenas neste array usando índices hardcoded.

  7. Desfazer todas as suas classes colocando tudo dentro da função main e em classes anônimas dentro de classes anônimas, dentro de classes anônimas.

  8. Transformar toda a sua lógica de negócio em uma gigantesca String criptografada e escrever um interpretador maluco que de alguma forma insana interprete essa String.

  9. Colocar o interpretador dentro de uma String ainda mais criptografada e escrever um outro interpretador para interpretar o primeiro interpretador.

  10. Certificar-se que as Strings contendo os códigos criptografados sofram alterações causadas pela própria lógica criptografada dentro delas mesmas.

  11. Colocar partes importantes do seu programa dentro de comentários e garantir que durante a execução o seu programa procure pelo código-fonte para ler os comentários.

  12. Garantir que o seu programa durante a execução consiga alterar o seu próprio código-fonte e então invoque o compilador para se recompilar. Daí basta dar um Class.forName na nova versão compilada.

Assim você poderá ter certeza que ninguém, nem você mesma poderá alterar qualquer coisa mesmo tendo o código-fonte.

Neste site tem umas boas dicas de como fazer isso: http://www0.us.ioccc.org/main.html

[ok, desculpe a piada, mas código ofuscado é uma arte das trevas que infelizmente poucos sabem apreciar.] :smiley: :smiley: :lol:

jgbt

Java roda no servidor, tudo que vc vai ver no browser basicamente é html+javascript gerado pelo processamento no servidor.
Niniguem vai ver uma linha de codigo sequer exibindo o codigo fonte de uma pagina no browser.

[]´s

B

Estou usando o yGuard para ofuscar meu codigo, ele troca os nomes das funcoes xD
Alguem sabe de algum q bagunçe mais ainda?

Vlw!

Criado 16 de janeiro de 2008
Ultima resposta 16 de jan. de 2008
Respostas 11
Participantes 7