🔓Segurança

Procedimentos antifraude & sustentabilidade

Sobre cheats Inspeção de memória Contexto Existem muitas maneiras de enganar um jogo, vamos enumerar algumas e resolvê-las corretamente: O mecanismo de trapaça e outras ferramentas de trapaça funcionam inspecionando a memória de um aplicativo de destino. Ele cria instantâneos de memória como um dicionário de endereços e dados. É usado principalmente para pesquisar um conteúdo de dados específico e alterá-lo. Um exemplo de um processo para trapacear usando essas ferramentas: Crie o primeiro instantâneo de memória do aplicativo; Busca por conteúdo (ex. valor atual do ouro); Rastreie todos os endereços de memória de resultados com aquele determinado conteúdo; Altere de alguma forma esse valor (ex.: gaste ouro ou ganhe); Procure novamente o novo conteúdo; Repita até 4 até aparecer apenas um resultado. Altere para o que o usuário quiser (dê fundos para si mesmo. Resistente à inspeção de memória Objetivo: Ocultar dados sensíveis na memória Todos os dados sensíveis são armazenados criptografados. O processo funciona da seguinte forma: Criptografia simétrica. Para dados mutáveis, usamos uma criptografia XOR rápida: o espaço de dados usado para o conteúdo é dobrado. Um é para os dados criptografados e o outro é para a chave aleatória. Essa abordagem garante que essas ferramentas de pesquisa falhem. Só os avançados funcionariam, e não conheço nenhum capaz de explorá-lo. Em vez de procurar apenas um campo, ele precisa pesquisar 2 e XOR, então a complexidade da pesquisa seria O(N^2), uma pesquisa muito pior, mas ainda viável. Criptografia de dados assimétrica. Para uma criptografia mais robusta e para conteúdo que não muda muito, usamos chaves assimétricas. De forma tão eficaz, pelo menos triplicamos o espaço necessário para armazenar os dados. Um para os dados criptografados, um para a chave de criptografia e outro para a chave de descriptografia. Política de localização de memória: Toda vez que os dados são lidos ou gravados, a posição dos dados é alterada aleatoriamente (dentro de um array e usando alocação e desalocações dinâmicas de memória). Tão eficazmente cada vez que os dados são acessados, eles movem sua posição. Isso impede que o algoritmo de pesquisa descrito anteriormente funcione corretamente. Exploramos efetivamente a coleta de lixo para armazenar dados em setores de lixo criando iscas para acionar falsamente os algoritmos de pesquisa. Explorabilidade do armazenamento Objetivo: criptografar o armazenamento local Todos os dados de armazenamento local são considerados exploráveis. Portanto, criptografamos os dados armazenados localmente, mas todos os dados confidenciais são armazenados em nossos servidores. Protegemos localmente as chaves da carteira dos usuários de forma criptografada por meio de uma senha fornecida pelo usuário e nem mesmo os desenvolvedores podem recuperá-la. Portanto, se a senha for perdida, as chaves da carteira também serão perdidas. O usuário deve proteger as chaves da carteira em outro lugar. Se a senha for perdida, o usuário deve redefinir a carteira com a semente da senha e, em seguida, recriar a senha. O usuário pode configurar para lembrar a senha para desbloquear as chaves, mas é um problema de segurança explorável, portanto, não recomendamos isso quando você se tornar um usuário segmentado (com muito dinheiro investido). Interceptação de Pacote de Dados Para abordá-lo, usamos simulação física determinística. Transferimos apenas as entradas do usuário e validamos a física no lado do servidor. Mesmo que a posição do usuário ou outros dados em uma sessão de jogo tenham sido trapaceados, isso não afetará os outros jogadores porque sincronizamos apenas as entradas do usuário e, aos olhos dos outros jogadores, o trapaceiro ficará fora de sincronia e desconectado. Cada sessão de jogo é única. Uma semente é fornecida para cada nível para criar pequenas alterações em cada obstáculo. Ao final de uma partida, nossos servidores levam algum tempo para verificar a validade da mesma, e os trapaceiros são banidos permanentemente. Adulteração de bytecode Um pacote lançado pode ser adulterado para ignorar muitas proteções do lado do cliente. O servidor tem a liberdade de pedir ao cliente que faça hash de posições aleatórias de bytecode do cliente de tempos em tempos. Impedimos o jailbreak ou dispositivos com root para executar o jogo. Se tudo falhar Usamos serviços de soluções de terceiros de nível empresarial para proteger o jogo

Last updated