Como proteger o código fonte?

266 views
Skip to first unread message

Mário Jorge

unread,
Jul 14, 2009, 7:13:55 AM7/14/09
to jav...@googlegroups.com
Acho que essa deve ser uma velha discussão em torno do desenvolvimento de aplicativos (desktop) em java, fiquei abismado ontem quando peguei um descompiler (jd-gui-0.2.10.windows) e ele em apenas dois cliques me mostrou todo o meu codigo.
 
Qual a segurança (financeira) que posso ter desenvolvendo aplicativos tao faceis de serem hackeados?
 
O que poderia fazer pra complicar esse processo?
 
Quais solucoes vcs implementaram para que forçar clientes a pagar em dias no caso de sistemas alugados?
 
Vlw pela atenção.

--
Mário Jorge R. e Silva
Desenvolvimento WEB - PHP/MYSQL
Brevemente desenvolvedor JAVA
MSN e E-mail: mario...@tumeviu.com
http://www.tumeviu.com

Wabber Miranda de Arruda Filho

unread,
Jul 14, 2009, 7:18:12 AM7/14/09
to jav...@googlegroups.com
 
O que poderia fazer pra complicar esse processo?
 
 
 
Existe algo chamado obfuscator, que deixa o código decompilado bem mais complicado.
Favor pesquisar a respeito.
 
Quais solucoes vcs implementaram para que forçar clientes a pagar em dias no caso de sistemas alugados?
 
Vlw pela atenção.

--
Mário Jorge R. e Silva
Desenvolvimento WEB - PHP/MYSQL
Brevemente desenvolvedor JAVA
MSN e E-mail: mario...@tumeviu.com
http://www.tumeviu.com


--
Atenciosamente,

           Wabber Filho

Gerente de Projetos
Msc, PMP, SCJP
Stefanini IT Solutions
http://www.stefanini.com.br/
+ 55 85 3244.6711

Maurício Linhares

unread,
Jul 14, 2009, 7:20:28 AM7/14/09
to jav...@googlegroups.com
Olha Mário, o ideal é não se preocupar com isso e procurar trabalhar
com aplicações web :)

A opção de alterar código fonte através de ofuscadores vai complicar o
seu desenvolvimento e pode também evitar que você use ferramentas
comuns como Hibernate/JPA ou Spring porque elas dependem do uso de
reflexão e os ofuscadores normalmente quebram essa funcionalidade do
Java.

-
Maurício Linhares
http://codeshooter.wordpress.com/ | http://twitter.com/mauriciojr



2009/7/14 Mário Jorge <mario...@tumeviu.com>:

Emmanuel Nolêto

unread,
Jul 14, 2009, 7:21:49 AM7/14/09
to jav...@googlegroups.com
ja vi uma pessoa usando um que chamam de gel decompiler eu acho.
 
Emmanuel J. Nolêto


"O Reino de Deus está em vós e à sua volta. Não em templos de madeira e pedra. Parte um pedaço de madeira e ali estarei, ergue uma pedra e me encontrarás".
Evangelho de Tomé



De: Mário Jorge <mario...@tumeviu.com>
Para: jav...@googlegroups.com
Enviadas: Terça-feira, 14 de Julho de 2009 8:13:55
Assunto: [javace] Como proteger o código fonte?


Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes

Mário Jorge

unread,
Jul 14, 2009, 7:23:03 AM7/14/09
to jav...@googlegroups.com
Estou usando JPA mesmo.
 
Mas isso é uma questão complicada, estou com um aplicativo (nao tao complexo) mas estou com ele pronto e ter que mudar tudo pra uma versao web ou outra linguagem seria bem complicado agora, já que tive todo o trabalho de aprender a linguagem e tudo mais.

2009/7/14 Maurício Linhares <mauricio...@gmail.com>

Israel Freitas

unread,
Jul 14, 2009, 7:40:40 AM7/14/09
to jav...@googlegroups.com
Olá,

 
"O que poderia fazer pra complicar esse processo?"
Aproveitando e talvez tentando resolver... Gerar um executável (.exe) resolveria? Nesta página discutem como gerar o exe. Mas não sei se resolve.
 
"Quais solucoes vcs implementaram para que forçar clientes a pagar em dias no caso de sistemas alugados?"
Sugestões:
1. Gerar um arquivo temporário em algum lugar escondido com as devidas permissões apenas para sua aplicação que teria o prazo de validade de uso.
2. Consultar um WS sobre a validade do uso. Prefiro esta.

Israel Freitas


2009/7/14 Mário Jorge <mario...@tumeviu.com>

Maurício Linhares

unread,
Jul 14, 2009, 7:41:31 AM7/14/09
to jav...@googlegroups.com
Um WS é facilmente forjável :)
2009/7/14 Israel Freitas <israel.ara...@gmail.com>:

Bruno Maomeh

unread,
Jul 14, 2009, 7:56:06 AM7/14/09
to jav...@googlegroups.com
"Quais solucoes vcs implementaram para que forçar clientes a pagar em dias no caso de sistemas alugados?"

não sei se eh a melhor, mas eu criei um aspecto para todas as minhas classes de serviço.. e eu barro o sistema de qualquer ação, caso a chave tenha sido vencida, por exemplo..

2009/7/14 Maurício Linhares <mauricio...@gmail.com>

Israel Freitas

unread,
Jul 14, 2009, 7:58:11 AM7/14/09
to jav...@googlegroups.com
Malditos sniffers! ;)

Verdade. Mesmo sendo acessado via https seria facilmente forjável? Ou se utilizasse criptografia nos dados de validade?

Então que não seja um WS. Reformulemos. Utilizar um servidor remoto com o qual a aplicação troca dados criptografados, os quais contém informações do cliente e a resposta com a validade. Um novo algoritmo de criptografia seria utilizado por eles a cada negociação. A lista desses algoritmos obviamente seria conhecida por ambos, bem como a forma de acessá-la para a seleção do algoritmo a ser utilizado.

Acho que agora está mais difícil. A idéia continua a mesma, que é pegar a informação em um servidor que não está no cliente.

Israel Freitas


2009/7/14 Maurício Linhares <mauricio...@gmail.com>

Maurício Linhares

unread,
Jul 14, 2009, 8:04:32 AM7/14/09
to jav...@googlegroups.com
Mesmo com HTTPS seria forjável, com um simples ataque de
"man-in-the-middle". Se os dados forem criptografados, a pessoa com
acesso ao código fonte do cliente poderia simplesmente fazer a
decompilação e olhar qual algoritmo/chave de criptografia estão sendo
utilizados.

Agora uma coisa, porque as aplicações que agente escreve são tão
importantes que precisam de uma coisa dessas? Será que vai realmente
ter alguém que vai se dar ao trabalho de decompilar o código?

Rafael Ponte

unread,
Jul 14, 2009, 8:07:04 AM7/14/09
to jav...@googlegroups.com
Eu também me pergunto isso. Será que o cliente vai fazer questão de ler e entender milhares de linhas de códigos?

2009/7/14 Maurício Linhares <mauricio...@gmail.com>



--
Rafael Ponte
http://www.rponte.com.br

Leonardo Eloy

unread,
Jul 14, 2009, 8:17:04 AM7/14/09
to jav...@googlegroups.com
Deve haver uma relação de troca. Se o cliente vai pegar meu sistema e vai quebrá-lo, problema dele. Se ele não vai mais pagar o aluguel ou suporte (ou qquer outra forma de licenciamento), problema dele também. Qdo vc se preocupa demais em impor controle ao seu sistema, você acaba esquecendo do que é importante para o cliente, mas a discussão não é essa! :)

Java sempre vai ter este problema, a não ser que você transforme seu programa num binário, seja para Windows ou Linux, mesmo assim, ainda sofrerá com o problema. Quantos sistemas em Delphi aí a fora não são quebrados só alterando pequenas instruções? Um JE (jump if equals) vira um JNE (jump if not equals) mudando somente um número, logo seu if (serial.equals(serialCorreto)) vira if (!serial.equals(serialCorreto)).

Como o Wabber falou, a solução mais factível de software é ofuscar o código, a segunda e transformar o sistema num executável (e matar a portabilidade de SO que o Java te dá). Como terceira solução, recomendo dar uma olhada no jProducitvity (http://jproductivity.com/), apesar de pago, é muito bom.

Agora, se você realmente precisa de licenciamento sem problemas de cópias, recomento um hardlock tipo http://www.matrixlock-com.com/.

Leonardo Eloy
Mobile: +55 85 7811 2876
Nextel ID: 91*12934
http://www.leonardoeloy.com


2009/7/14 Rafael Ponte <rpo...@gmail.com>

CMilfont

unread,
Jul 14, 2009, 8:21:11 AM7/14/09
to jav...@googlegroups.com
se meu cliente descompilar o codigo, entender e modifica-lo eu o contrato!

2009/7/14 Rafael Ponte <rpo...@gmail.com>



--
http://www.milfont.org

Joao Filho

unread,
Jul 14, 2009, 8:22:43 AM7/14/09
to jav...@googlegroups.com
L0L
 
Essa foi boa @CMilfont

2009/7/14 CMilfont <cmil...@gmail.com>



--
Atenciosamente,

João Batista
Ciência da Computação - Faculdade Farias Brito - FFB


AS 4 MELHORES COISAS DA VIDA SÃO: COMER E VIAJAR!

" A vida e muito importante para nós, por isso vale a pena investir nela. "

Mário Jorge

unread,
Jul 14, 2009, 8:28:52 AM7/14/09
to jav...@googlegroups.com
Acho que o foco não é o cliente. Vc gostaria que eu burlasse seu sistema, nao to dizendo q sei como fazer ou q sou capaz, mas se eu pegasse seu trabalho de muitos anos e simplesmente o utiliza-se sem seu concentimento. e aí?

2009/7/14 Joao Filho <jbsous...@gmail.com>

Maurício Linhares

unread,
Jul 14, 2009, 8:30:17 AM7/14/09
to jav...@googlegroups.com
É exatamente aí a questão, e aí?

Se o pessoal tem dificuldade de entender o códgo que eles fizeram
semana passada, imagina código descompilado dos outros.

E se o cara tá vendendo o seu software pra outra pessoa, é porque você
não chegou lá primeiro :)

2009/7/14 Mário Jorge <mario...@tumeviu.com>:

Leonardo Eloy

unread,
Jul 14, 2009, 8:36:28 AM7/14/09
to jav...@googlegroups.com
Mário,

Problema de quem fez, se tem no contrato eu processo o cara. É assim que se faz negócio, segurança por obscuridade não existe, você tem que ter o diferencial em outro canto, como por exemplo, usabilidade, customização ou melhor compreensão do negócio. Agora, se você tem um algoritmo patenteado que melhora em 10x no cálculo de uma coisa, simplesmente não coloque dentro do Java que vai pro cliente. Tem que usar o bom senso aqui também.

CMilfont

unread,
Jul 14, 2009, 8:37:37 AM7/14/09
to jav...@googlegroups.com
MInha licença diz o que?
Se for proprietário basta um advogado com sangue nos olhos e uma gorda comissão sobre os espólios da vítima.
--
http://www.milfont.org

CMilfont

unread,
Jul 14, 2009, 8:39:15 AM7/14/09
to jav...@googlegroups.com
A grande realidade das empresas locais é que ninguem quer dá manutenção nem nos sistemas feitos por ele imagina nos de terceiros :)

2009/7/14 Maurício Linhares <mauricio...@gmail.com>



--
http://www.milfont.org

Mário Jorge

unread,
Jul 14, 2009, 8:49:55 AM7/14/09
to jav...@googlegroups.com
isso é verdade, huahuhuahua

2009/7/14 CMilfont <cmil...@gmail.com>
Reply all
Reply to author
Forward
0 new messages