Então, já passamos por isso várias vezes agora, lançamos um jogo (barato) e alguém o corta e o coloca no espelho. Configuramos os Alertas do Google para todos os nossos aplicativos, para que seja informado diariamente sobre quem está fazendo o hacking. Até o momento, implementamos o serviço de licenciamento, como o Google sugeriu, nosso sal é feito aleatoriamente toda vez que a licença é iniciada com o ID do dispositivo exclusivo. Executamos o serviço de verificação uma vez, quando o aplicativo é iniciado pela primeira vez. Em seguida, geramos um hash de 512 caracteres para a chave e o valor armazenado que é comparado em SharedPreferences a partir daí.
Agora, eu sei que verificar uma vez é provavelmente onde o aplicativo está sendo bloqueado. Nosso bytecode provavelmente foi analisado e recompilado sem a linha que inicia a verificação.
A partir daqui, não quero ofuscar nosso código como já vi antes. Quero algo um pouco mais sólido e também quero aprender como fazer isso corretamente. Estou mais interessado em aprender do que em ganhar dinheiro neste momento, pois apenas 2% das pessoas jamais procurarão uma versão hackeada.
Até agora, por conta própria, criei um gerador de números aleatórios que é colocado em várias áreas de inicialização do jogo. Quando iniciada (digamos, 1 em 50 vezes), a licença é verificada. Eu sei que isso tornaria mais difícil invadir, porque o cracker teria que eliminar cada caso, compilar, eliminar, compilar. Esse método, no entanto, ainda é decifrado ... então o que vocês sugerem? Mais uma vez, estou realmente interessado nesse processo de segurança; portanto, educe, não transforme isso em uma discussão sobre ofuscação ou verificação periódica com base em um carimbo de data / hora.
obrigado