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.
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”.
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.