Algumas duvidas meio baixo-nivel

4 respostas
gpellizzoni

Ola.

Gostaria de saber se:

Ha alguma forma de eu detectar o numero de serie e/ou o modelo da placa-mae via Java
Pergunto isso porque estou desenvolvendo software que eh hardware-locked e soh roda caso a ID da placa-mae esteja cadastrada no meu servidor (para isso ha uma checagem no servidor, feita remotamente).

Existe algum meio de obfuscar o codigo (pode ser via packer, mas prefiro uma solucao em Java) e proteger o binario contra tentativas de cracking
Me preocupo com isso porque alguem com conhecimentos em engenharia reversa e cracking pode burlar o sistema da placa-mae e gerar um crack para o programa.

Tem como ler e escrever diretamente na memoria via Java.
Apenas curiosidade.

Agradeco desde ja.

4 Respostas

gpellizzoni

Ninguem?

pepicon

Cara, vamos lá:

  1. Para acessar o código da placa mãe você terá que utilizar Native Methods. Nunca fiz, mas sei que dá via DLL ou mesmo utilizando código C na sua aplicação Java. Talvez seja melhor relacionar algum parâmetro como data de modificação de algum arquivo, acessível via Java “puro”.

  2. Há diversos obfuscadores bacanas, que nunca fornecerão a proteção de um EXE mas já representam um ótimo nível de segurança. Recomendo o Proguard. Leia em http://evandropaes.wordpress.com/2008/06/20/protegendo-o-seu-codigo-java-da-engenharia-reversa/.

  3. Muito provavelmente somente através de Java Nativo.

Caso siga meu conselho e precise de alguma ajuda em capturar a data de algum arquivo, é só falar. Abraço!

sergiotaborda

Não sei o que seria o ID da placa mãe, o MAC da placa de rede até dá.
via Java “puro” vc não consegue acessar coisas muito especificas, mas pode sempre usar uma biblioteca escrita em outra linguagem e se integrar com ela via JNI ou JNA ou algumas coisas do tipo.

Proteger o seu código é muito mais que ofuscar os .class. É ter cuidado com os modificadores de acesso, por exemplo. É ter um SecurityManager ativo. É ter um arquivo de policy de segurança. Tudo coisas para o ajudam a fechar o cerco muito melhor e sem precisa ofuscar o codigo. Se o seu problema é copia, o seu problema é legal e nenhuma ferramenta o vai ajudar. Para cada compilador existe um intervalo de tempo para o qual existe um descompilador.

Dietamente não, mas pode usar JNI junto C++ para isso. Contudo, se vc quer fazer isso provavelmente não deveria estar usando Java para começo de conversa…

Agradeco desde ja.[/quote]

cristianosanchez

Existe frameworks para facilitar a integração JAVA / C/C++ (outras linguagens) para que você não tenha que sofrer tanto escrevendo código JNI, como por exemplo https://jna.dev.java.net/.

Sobre o problema de controlar o uso da app… porque você não tenta uma abordagem de atualização/verificação online? Assim pode checar o uso do sistema…

Tem como ler e escrever diretamente na memoria via Java.
Apenas curiosidade.

Você pode desenvolver grande parte do seu sistema em Java trazendo produtividade (além de encontrar uma comunidade maior de programadores) e integrar via JNI alguns trechos que requer uso específico da plataforma.

Criado 7 de agosto de 2008
Ultima resposta 28 de ago. de 2008
Respostas 4
Participantes 4