Ir para conteúdo
Propaganda

Como Proteger Devidamente seu OTCv8 (Cryptografia)


Posts Recomendados

    Como Proteger Devidamente seu OTCv8 (Cryptografia)

Olá pessoal, meu primeiro tutorial aqui e na vida ahaha, então vou me esforçar ao máximo para ser o mais didático possível.

Todos sabem que o OTC V8 vazou e que não é muito seguro utilizá-lo, seja por questões de roubo de sprites ou até mesmo por segurança do servidor.
Vou ensinar a vocês como proteger devidamente o OTC V8 antes de utilizá-lo, ou pelo menos listar as questões que eu conheço.

Uma das formas mais conhecidas de roubar sprites, conteúdos, abrir o lua são:

1  - Utilizando as próprias funções do OTCV8 de dump e extração de imagens e sprites.
2 - Utilizando o próprio "decrypt" do cliente por meio de um aplicativo no Linux.

 

Primeiramente, vamos retirar as funções de dump/extração de imagens do seu OTCv8

Nas sources do seu client você ira em \src\client\ luafunctions_client.cpp

Procure e comente (coloque // antes do texto) em todas as funções citadas:
 

Spoiler

// g_lua.bindSingletonFunction("g_things", "dumpTextures", &ThingTypeManager::dumpTextures, &g_things);

// g_lua.bindSingletonFunction("g_things", "getThingTypes", &ThingTypeManager::getThingTypes, &g_things);

// g_lua.bindSingletonFunction("g_sprites", "dumpSprites", &SpriteManager::dumpSprites, &g_sprites);

// g_lua.bindClassMemberFunction<ThingType>("exportImage", &ThingType::exportImage);

 

Agora iremos modificar a cryptografia

Daqui pra frente, partindo da idéia de que você já sabe criptografarseu OTCv8

Vamos em \src\framework\util\crypt.cpp

 

Procure as funções:

Spoiler

void Crypt::bdecrypt(uint8_t* buffer, int len, uint64_t k) {
    uint32_t const key[4] = { (uint32_t)(k >> 32), (uint32_t)(k & 0xFFFFFFFF), 0xDEADDEAD, 0xB00BEEEF };
    .....
}

void Crypt::bencrypt(uint8_t* buffer, int len, uint64_t k) {
    uint32_t const key[4] = { (uint32_t)(k >> 32), (uint32_t)(k & 0xFFFFFFFF), 0xDEADDEAD, 0xB00BEEEF };
    ...
}

Repare no conteúdo colorido em vermelho. Altere igualmente os valores Hexadecimais para um de sua preferência, desde que se mantenham iguais tanto na decodificação quanto na codificação.

É preferível que você utilize um valor Hexadecimal próprio, mas vou sugerir alguns para que você possa usar:

 0x12E3F4A5   0xAAAAAAAA   0x55555555   0xDEADBEEF  0xABCDEF01  0xFEEDFACE  0x1A2B3C4D  0x5A5A5A5A  0xC0FFEE70  0xBAD1DEA5 0x3F6789AB   0xD1F2E3C4   0x89ABCDEF   0xCAFEBABE   0xABCDDCBA   0x24681357   0xBEEFF00D   0xC0FFEE80   0xBAADF00D 

Alterando os Hexadecimais, a função ficará semelhante a isto:

Spoiler

void Crypt::bdecrypt(uint8_t* buffer, int len, uint64_t k) {
    uint32_t const key[4] = { (uint32_t)(k >> 32), (uint32_t)(k & 0xFFFFFFFF), 0x12E3F4A5 0x89ABCDEF };
    .....
}

void Crypt::bencrypt(uint8_t* buffer, int len, uint64_t k) {
    uint32_t const key[4] = { (uint32_t)(k >> 32), (uint32_t)(k & 0xFFFFFFFF), 0x12E3F4A5, 0x89ABCDEF };
    ...
}

 

Voce pode compilar seu client agora.

Após compilar, observe que seu cliente antigo não reconhecerá a criptografia do novo cliente, assim como o novo cliente não reconhecerá a criptografia antiga.

Não se esqueça de compilar o mobile também, se não não adianta nada.

E para os que já utilizam o V8, terá que basicamente limpar e colocar os novos arquivos na api do updater no site, também mandar os jogadores re-instalar o Client.

 

É isso galera isso irá resolver boa parte dos problemas de segurança por parte deste client. Lembrem-se, sempre estarão surgindo novos meios, também pode haver algum que eu desconheço, então esteja sempre atento e verificando a segurança do seu cliente. É altamente recomendado que você utilize outra forma de proteção/criptografia e não a padrão do OTC V8.

 

Contéudo exclusivo TibiaDevs não permito a utilização do mesmo em outro forúm.

  • Like 6
  • Thanks 7
Link para o comentário
Compartilhar em outros sites

  • Administrador

Tópico Aprovado!
Somos gratos por sua contribuição, com certeza será útil para toda a comunidade! ❤️  REP+

Link para o comentário
Compartilhar em outros sites

7 minutos atrás, Ant-Pool disse:

Alguns celulares não fazem a leitura da criptografia das sprites alguma dica ?.

Todos os celulares fazem a leitura da criptografia, pois sem ela, o cliente não chegaria a abrir a tela inicial. Pelo menos eu desconheço algum celular que não faça a leitura, já que imagino que você está se referindo ao problema ao tentar se conectar.

Se for o caso, existem inúmeros motivos para esse erro ocorrer, e ainda não tenho uma solução para alguns deles.

Um deles é o tamanho da tela, pois quando o jogador dá zoom out, o erro não acontece. Outro é a caixa de "remember password" marcada, basta desmarcar que é possível se conectar. E o pior de todos é o tamanho das sprites, pois ao ultrapassar um certo limite, o cliente não se conecta mais. Não tenho a minima ideia do que fazer em relação a isso.

  • Thanks 1
Link para o comentário
Compartilhar em outros sites

Belo conteúdo, um ótimo tópico tanto pra quem ta começando agora quanto pra quem já ta no mercado procurando uma crypto haha

  • Like 1
Link para o comentário
Compartilhar em outros sites

matheus é brabo nem é novidade :D 
vai salvar os script dos coleguinha

Link para o comentário
Compartilhar em outros sites

  • Suporte
13 minutos atrás, gutinha disse:

Os kra que dumpa spr ficando malucos KKKKKKKKKKK

Os cara que vendia isso ficando malucos auhauauauauauaua

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 4 meses depois...
  • 4 meses depois...

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

×
  • Criar Novo...