| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 15:31:09
|
rocha
Virtual Machine Man
![[Avatar]](/images/avatar/0b8aff0438617c055eb55f0ba5d226fa.jpg)
Membro desde: 28/04/2003 10:23:56
Mensagens: 718
Localização: São José dos Campos e Poá - SP.
Offline
|
Olá pessoal, é o seguinte um amigo meu me questionou quanto a segurança do código de uma aplicação, dizendo que com progrmas que revertem os arquivos .class obtendo assim o código desta classe. Eu gostaria de saber como isso funciona.
Rocha
|
"As religiões formalistas tendem à fixação das crenças e à cristalização dos sentimentos; fossilizam a Verdade; desviam-se do serviço de Deus para o da Igreja; lutam entre si e entre os irmãos, em nome do amor, dando origem ao aparecimento das seitas e das divisões; estabelecem autoridades eclesiásticas pressivas; conduzem ao nascimento do falso estado mental aristocrático de povo eleito; mantêm ideias falsas e exageradas sobre a santidade; tornam-se rotineiras e petrificadas e acabam por venerar o passado, ignorando as necessidades do presente."
Rodrigo
http://www.rrochas.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 15:43:58
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Segura em que sentido? Com Java conseguimos fazer com relativa facilidade sistemas muito complexos com muitos milhares de instruções. Mesmo que um cara seja muito paciente para usar um decompiler e abrir o código fonte, ele ainda terá muitas dificuldades para usar. Aliás é assim que me sinto quando começo a trabalhar com código escrito por outros e sem documentação.
Há outras linguagens que a gente só consegue fazer uns sisteminhas simples que por serem compiladas são mais difíceis de abrir o código fonte. Mas na prática se consegue abrir o código do mesmo jeito.
Se tem preocupações quanto a segurança contrate um bom advogado e solicite um contrato adequado.
Este assunto já foi muito discutido aqui no GUJ, dê uma pesquisada.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 15:45:17
|
andre_a_s
GUJ Ranger
![[Avatar]](/images/avatar/3328bdf9a4b9504b9398284244fe97c2.jpg)
Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline
|
Use obfuscadores, eles "sujam" o codigo quando decompilado
|
Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 15:46:02
|
smota
Moderador
![[Avatar]](/images/avatar/ca9c267dad0305d1a6308d2a0cf1c39c.jpg)
Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline
|
Funciona assim: vc pega um programinha desses, seleciona um .class ou vários e ele gera um arquivo(s) .java com o quase o código original.
Se você usar um obfuscador ele vai voltar o código tb, mas com nomes cabulosos e pequenas alterações, nada demais.
Por isso Java não é seguro, vou correndo tirar meu dinheiro do Banco do Brasil pq qualquer zé-mané pode fazer engenharia reversa no código deles e descobrir os ifs que tem por lá .. pensando bem vou tirar de qualquer banco porque a merda do banco central tb gosta de Java
|
"Perfection is reached not when there's nothing more to add but when there's no more to take out" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 16:32:41
|
rocha
Virtual Machine Man
![[Avatar]](/images/avatar/0b8aff0438617c055eb55f0ba5d226fa.jpg)
Membro desde: 28/04/2003 10:23:56
Mensagens: 718
Localização: São José dos Campos e Poá - SP.
Offline
|
smota wrote:
Por isso Java não é seguro, vou correndo tirar meu dinheiro do Banco do Brasil pq qualquer zé-mané pode fazer engenharia reversa no código deles e descobrir os ifs que tem por lá .. pensando bem vou tirar de qualquer banco porque a merda do banco central tb gosta de Java
Smota eu não afirmei que java não é seguro estou querendo saber como isso funciona, pois me questionaram a seguinte situação, em um sw feito em java existe uma classe que cuida da validação do sistema, uma pessoa usa um decompiler conseguiria muito bem mudar o método q cuidada disso idaí como ficaria. Lembrando que qdo falamos da métodologia q hj é usada no planejamento das classes até facilia essa cituação pois provavelmente essa classe chamaria algo do tipo: Validacao ou tempoValidacao então a pessoa já teria um bom caminho bom onde começar, lembrando q este é apenas um exemplo.
Rocha
|
"As religiões formalistas tendem à fixação das crenças e à cristalização dos sentimentos; fossilizam a Verdade; desviam-se do serviço de Deus para o da Igreja; lutam entre si e entre os irmãos, em nome do amor, dando origem ao aparecimento das seitas e das divisões; estabelecem autoridades eclesiásticas pressivas; conduzem ao nascimento do falso estado mental aristocrático de povo eleito; mantêm ideias falsas e exageradas sobre a santidade; tornam-se rotineiras e petrificadas e acabam por venerar o passado, ignorando as necessidades do presente."
Rodrigo
http://www.rrochas.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 17:01:01
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
eu tava pensando num jeito de criptografar um código fonte...
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 17:13:04
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
rocha wrote:em um sw feito em java existe uma classe que cuida da validação do sistema, uma pessoa usa um decompiler conseguiria muito bem mudar o método
Até aí deve-se proteger as partes que fazem a validação. Por exemplo, se quer uma validação segura, ela deve ficar em um sistema central protegido, não na máquina do usuário.
Só para dar um exemplo: quando você se loga no mail.yahoo.com, por exemplo, todos sabem que o hash MD5 de sua senha é enviada via http (opcionalmente via https). É só ler o Javascript (não é nem Java, o código está lá pra todo mundo ver). Mas nem por isso o login é tão inseguro assim.
Para começar, a senha não é enviada em claro, nem criptografada com uma chave fixa; e o Yahoo guarda muito bem as senhas em alguma base bastante protegida.
Na verdade, o segredo não é esconder como é feita uma determinada coisa (alguém acaba sempre descobrindo...), mas sim esconder (proteger) apenas as partes que devem ser protegidas. Isso é um serviço para profissionais...
This message was edited 1 time. Last update was at 02/02/2005 17:14:23
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 17:27:20
|
rocha
Virtual Machine Man
![[Avatar]](/images/avatar/0b8aff0438617c055eb55f0ba5d226fa.jpg)
Membro desde: 28/04/2003 10:23:56
Mensagens: 718
Localização: São José dos Campos e Poá - SP.
Offline
|
thingol wrote:
Na verdade, o segredo não é esconder como é feita uma determinada coisa (alguém acaba sempre descobrindo...), mas sim esconder (proteger) apenas as partes que devem ser protegidas. Isso é um serviço para profissionais...
Ok concordo e nessa solução eu já tinha pensado só q existem profissionais e "profissionais", tem muita gente fq é mau carater e por qualquer merreca faria uma sacanagem de abriru um codio aleio para modificalo, imaginem eu aqui em SP vendo minha aplicação para um cara do RS daí o cara decide parar de me pagar um "profissional" (funcionário da empresa) vai decompila me código muda o método de validação daí como fica.
Rocha
|
"As religiões formalistas tendem à fixação das crenças e à cristalização dos sentimentos; fossilizam a Verdade; desviam-se do serviço de Deus para o da Igreja; lutam entre si e entre os irmãos, em nome do amor, dando origem ao aparecimento das seitas e das divisões; estabelecem autoridades eclesiásticas pressivas; conduzem ao nascimento do falso estado mental aristocrático de povo eleito; mantêm ideias falsas e exageradas sobre a santidade; tornam-se rotineiras e petrificadas e acabam por venerar o passado, ignorando as necessidades do presente."
Rodrigo
http://www.rrochas.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 17:41:23
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Este problema sempre existiu desde que apareceram os programas que editavam código binário nos primórdios do uso do PC. Mas como disse o Thingol, quem seria louco suficiente para deixar o código de validação aberto para olhos estranhos?
Mas há muitas maneiras de vc se defender.
Vou contar algumas que já usei:
- Esta usei há uns 10 ou 12 anos atrás. Calculei o CRC do total dos bytes do trecho da minha aplicação que não admitia modificação e coloquei dentro da aplicação uma verificação de CRC deste trecho. Isto era feito em vários lugares e da forma mais disfarçada possível.
- Como a solução anterior dava trabalho, em outras aplicações resolvi adquirir trava de hardware e lá fazer o controle.
- Em uma determinada aplicação que era alugada o cliente precisava solicitar mensalmente uma chave e um patch que era usado em um trecho do programa (isto hoje seria feito com java web start).
- Atualmente as aplicações web podem se autenticar no nosso servidor para obter a tal autorização.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 18:15:34
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Rocha, descompiladores existem para todas as grandes linguagem de programação que conheço.
E ofuscadores (obfuscator, google it) que já vi funcionam muito bem; ao descompilar as classes ofuscadas o código fica, além de ilegível, "errado". Nem compila de novo
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 18:29:14
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Só para você ter uma idéia. Algumas versões do JBuilder precisavam de uma chave de ativação, que era enviada via email (era uma chave enorme, acho que era uma assinatura digital.)
Um fulano qualquer simplesmente escreveu uma classe que você copia sobre a instalação do JBuilder e ele passa a não checar mais a chave de ativação. (Se bobear você também tem esse JBuilder piratado, não?)
Por isso é que o tal sistema tem de funcionar conectando-se periodicamente com um servidor seu, para pegar uma chave de ativação, e explodir se não conseguir se conectar. Tem gente também que vende aqueles "dongles", que são chaves de hardware que você liga na USB e que o software tem de ficar checando periodicamente se estão lá. (Obviamente já quebraram a segurança de muitos "dongles", portanto consulte antes de comprar)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 19:21:46
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
acho que é por isso que o java pegou mesmo para a web e não para desktop...
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 19:25:34
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Não acho não.
Na minha opinião não pegou porque Swing é difícil.
*lipe, que começou a tentar usar Swing*
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 19:49:29
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
pow... nem é... só ter o javadoc na mão e mandar bala
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2005 19:50:48
|
Flin
Java Ninja
Membro desde: 10/12/2003 16:30:10
Mensagens: 263
Offline
|
Hey Luca, lembra do classloader que lia .class encriptografado?
Claro que dava pra desconpilar o classloader e etc.. etc.. etc... mas era algo bem complexo, foi divertido.
|
http://www.wayjobs.com.br - Busca de vagas e currículos 100% gratuito! |
|
|
 |
|
|