Exemplo de falhas em derivados de E.O. e possíveis correções Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Exemplo de falhas em derivados de E.O. e possíveis correções

5 participantes

Ir para baixo

Exemplo de falhas em derivados de E.O. e possíveis correções Empty Exemplo de falhas em derivados de E.O. e possíveis correções

Mensagem por DragonicK Sex Mar 29, 2019 10:56 am

Não há nenhuma novidade em dizer que o Eclipse Origins é falho. 
Por enquanto, só vou mostrar como algumas coisas funcionam.

Nada é criado dinamicamente, os slots para os jogadores (e conexões) são definidos assim que o servidor é iniciado. Quando uma conexão é aceita, esse slot fica ocupado como se o jogador já estivesse no jogo, e também, o tempo das conexões que não estão recebendo dados não são verificadas no servidor. Por causa disso, qualquer um pode deixar um servidor cheio usando um laço e criando novas conexões, impedindo outros usuários de fazerem uma nova ligação com o servidor.

Qualquer um com o mínimo de conhecimento em uma linguagem de programação e TCP pode criar uma conexão com qualquer servidor.

Além do código ser aberto, o servidor também é podendo receber pacotes de qualquer origem, você pode facilmente derrubar o servidor enviando valores diferentes do esperado onde não existe verificação no servidor.

Exemplo 1:
Um erro fácil de ser identificado está no PlayerSwitchSpellsSlots: 


Runtime Error: 9
Subcript out of range 


Este é o método que faz a troca de slots de magias.
Exemplo de falhas em derivados de E.O. e possíveis correções FlfikJa

A quantidade máxima de slots de magia no personagem é de 35.
Os arrays em VB6 podem ser declarados com índices definidos. Portanto, os slots de magia do personagem, seguem o valor entre 1 e 35.

Qualquer valor diferente de entre 1 e 35 irá gerar um erro.
Runtime Error: 9
Subcript out of range 


Exemplo de falhas em derivados de E.O. e possíveis correções P4G4nEN

Quando um pacote com valores irregulares é recebido ocorrerá erros e fará com que o servidor caia.
A correção do problema é simples, é necessário apenas verificar se os números dos slots estão dentro da faixa, 1 entre 35.

Exemplo de falhas em derivados de E.O. e possíveis correções WK30uqW


Exemplo 2:
O problema de salvar os dados a todo momento.
Vou apresentar um possível problema com o banco. 


Exemplo de falhas em derivados de E.O. e possíveis correções BbMK6Pq

Quando o pacote para fechar o banco é recebido do cliente, o personagem e o banco são salvos. Alguns servidores salvam os dados dos personagens em arquivos binários, outros em arquivos de configuração (.INI).

O maior problema deste método, não é salvar os dados do personagem, mas a não verificação dele.

Se alguém atacar floodando este pacote, o aumento do uso de CPU e acesso ao disco irão aumentar, e isso irá AGRAVAR se o servidor salva os dados em arquivos de configuração, pois há muitas operações com strings por debaixo dos panos. 

Como em um VPS o processamento é limitado, a máquina ficará lenta e o processamento do restante dos usuários ficará comprometido.

Uma maneira de evitar isso, é verificar se o personagem está dentro do jogo e verificar se o banco está aberto.

Exemplo de falhas em derivados de E.O. e possíveis correções 5LTyl1Z

Exemplo 3:
ReadString tentando ler mais do que deveria.


Uma string quando adicionada ao buffer, é convertida para bytes. 
Na primeira posição é adicionado o tamanho da string em 4 bytes no array, em seguida, cada caractere é escrito.

Exemplo: abc

Posição 0: 3  (Tamanho)
Posição 1: 97 (Letra a)
Posição 2: 98 (Letra b)
Posição 3: 99 (Letra c)

Este é o método de escrita, na parte de leitura, primeiro, deve-se obter a quantidade de caracteres para obter os dados posteriormente.

O problema aqui é que, o tamanho da string pode ser alterado fazendo com que o servidor tente ler uma quantidade de dados que não existe gerando outro erro.

A solução é obter quantos caracteres devem ser lidos e verificar a quantidade disponível no pacote para leitura. Mas também, há outra solução e ambas são simples.

Adicionar no início do método: 
On Error Goto ou On Error Resume Next

Exemplo de falhas em derivados de E.O. e possíveis correções 6VUo8Jx

Exemplo 5:
Buffer Overflow

Por segurança, depois que o objeto for usado, sempre limpem o buffer e destruam o objeto para não ficar nada preso na memória.

Exemplo de falhas em derivados de E.O. e possíveis correções Px9hGeH

Processando o recebimento de dados corretamente:
1. Se o metodo do pacote requisitar um acesso elevado, verifique sempre no início para não criar e não processar dados que serão descartados. Do contário, verifique se o usuário está realmente dentro do jogo usando a função IsPlaying.

2. Crie o objeto para ler os dados recebidos, leia, limpe e destrua. 
3. Verifique os valores recebidos e faça o tratamento de erros.
4. Processe os dados que foram recebidos.
Exemplo de falhas em derivados de E.O. e possíveis correções E6NBSi2


Dicas finais:
Se o servidor cair, é culpa sua por não verificar e revisar o código, e principalmente por não procurar informação o suficiente. O atacante está apenas prestando um serviço gratuito para que você possa melhorar a merda do seu servidor.
Todos os valores que chegam no servidor devem ser verificados antes de serem processados. 

Jamais use On Error Resume Next ou On Error Goto se você não sabe o que está fazendo seu burro, essas coisas farão com que a mensagem do erro desapareça, mas o erro irá continuar. 


Quanto mais On Error Resume Next ou On Error Goto no projeto, menor será a manutenção e implementação de novos sistemas. O servidor irá rodar silenciosamente e quando você souber de um bug e precisar fazer a correção não conseguirá pois NÃO HAVERÁ MENSAGENS DE ERRO ALERTANDO ONDE ESTÁ O PROBLEMA.

Não seja burro, estude antes de fazer algo.


Última edição por DragonicK em Sáb Mar 30, 2019 12:23 pm, editado 3 vez(es)
DragonicK
DragonicK
Experiente
Experiente

Mensagens : 543
Créditos : 81

Ficha do personagem
Nível: 1
Experiência:
Exemplo de falhas em derivados de E.O. e possíveis correções Left_bar_bleue0/0Exemplo de falhas em derivados de E.O. e possíveis correções Empty_bar_bleue  (0/0)
Vida:
Exemplo de falhas em derivados de E.O. e possíveis correções Left_bar_bleue30/30Exemplo de falhas em derivados de E.O. e possíveis correções Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

Exemplo de falhas em derivados de E.O. e possíveis correções Empty Re: Exemplo de falhas em derivados de E.O. e possíveis correções

Mensagem por EUMORRI VIREI FANTASMA Sex Mar 29, 2019 2:18 pm

Jesus do Eclipse Origins

EUMORRI VIREI FANTASMA
Novato
Novato

Mensagens : 15
Créditos : 1

Ir para o topo Ir para baixo

Exemplo de falhas em derivados de E.O. e possíveis correções Empty Re: Exemplo de falhas em derivados de E.O. e possíveis correções

Mensagem por Valentine Sex Mar 29, 2019 4:59 pm

Sobre o problema do banco, acredito que seria melhor salvar o personagem e o banco apenas quando o jogador se desconectar (e a cada certo período de tempo definido no servidor). Não é uma boa ficar fazendo operação de entrada e saída durante o jogo (ao fechar o banco).

Ótima contribuição, Drago.

+ 1 crédito
Valentine
Valentine
Administrador
Administrador

Medalhas : Exemplo de falhas em derivados de E.O. e possíveis correções ZgLkiRU
Mensagens : 5345
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Exemplo de falhas em derivados de E.O. e possíveis correções Empty Re: Exemplo de falhas em derivados de E.O. e possíveis correções

Mensagem por Paulo Soreto Sex Mar 29, 2019 8:16 pm

Eu curto esse tipo de análise e é um bom conteúdo pra quem ta desenvolvendo jogos online, não só nessa engine em questão.
4. Verifique os valores recebidos e faça o tratamento de erros.
3. Processe os dados que foram recebidos.
Só muda a ordem ai.
Paulo Soreto
Paulo Soreto
Lenda
Lenda

Mensagens : 1980
Créditos : 367

Ficha do personagem
Nível: 1
Experiência:
Exemplo de falhas em derivados de E.O. e possíveis correções Left_bar_bleue0/0Exemplo de falhas em derivados de E.O. e possíveis correções Empty_bar_bleue  (0/0)
Vida:
Exemplo de falhas em derivados de E.O. e possíveis correções Left_bar_bleue30/30Exemplo de falhas em derivados de E.O. e possíveis correções Empty_bar_bleue  (30/30)

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Exemplo de falhas em derivados de E.O. e possíveis correções Empty Re: Exemplo de falhas em derivados de E.O. e possíveis correções

Mensagem por DragonicK Sex Mar 29, 2019 8:43 pm

Paulo Soreto escreveu:Eu curto esse tipo de análise e é um bom conteúdo pra quem ta desenvolvendo jogos online, não só nessa engine em questão.
4. Verifique os valores recebidos e faça o tratamento de erros.
3. Processe os dados que foram recebidos.
Só muda a ordem ai.

Além dessas coisas, ainda tem mais, só separei algumas.
DragonicK
DragonicK
Experiente
Experiente

Mensagens : 543
Créditos : 81

Ficha do personagem
Nível: 1
Experiência:
Exemplo de falhas em derivados de E.O. e possíveis correções Left_bar_bleue0/0Exemplo de falhas em derivados de E.O. e possíveis correções Empty_bar_bleue  (0/0)
Vida:
Exemplo de falhas em derivados de E.O. e possíveis correções Left_bar_bleue30/30Exemplo de falhas em derivados de E.O. e possíveis correções Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

Exemplo de falhas em derivados de E.O. e possíveis correções Empty Re: Exemplo de falhas em derivados de E.O. e possíveis correções

Mensagem por GallighanMaker Sáb Mar 30, 2019 2:51 am

Muito bom Drag, esse tipo de coisa ajuda muito pra quem está começando a mexer e a entender essa desgraça de VB6 + EO.

_________________
Exemplo de falhas em derivados de E.O. e possíveis correções 8dVK0ku
using C# and import Python developer || Expert in Unity Engine IDE. || Exemplo de falhas em derivados de E.O. e possíveis correções 769_heart 2D pixel games.
GallighanMaker
GallighanMaker
Colaborador
Colaborador

Medalhas : Exemplo de falhas em derivados de E.O. e possíveis correções ZgLkiRU
Mensagens : 985
Créditos : 102

Ficha do personagem
Nível: 1
Experiência:
Exemplo de falhas em derivados de E.O. e possíveis correções Left_bar_bleue0/0Exemplo de falhas em derivados de E.O. e possíveis correções Empty_bar_bleue  (0/0)
Vida:
Exemplo de falhas em derivados de E.O. e possíveis correções Left_bar_bleue30/30Exemplo de falhas em derivados de E.O. e possíveis correções Empty_bar_bleue  (30/30)

https://kingsland-online.com/

Ir para o topo Ir para baixo

Exemplo de falhas em derivados de E.O. e possíveis correções Empty Re: Exemplo de falhas em derivados de E.O. e possíveis correções

Mensagem por Valentine Sáb Mar 30, 2019 1:01 pm

Se achar mais falhas, posta aqui pra gente. Irá contribuir muito para o meu servidor.
Valentine
Valentine
Administrador
Administrador

Medalhas : Exemplo de falhas em derivados de E.O. e possíveis correções ZgLkiRU
Mensagens : 5345
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Exemplo de falhas em derivados de E.O. e possíveis correções Empty Re: Exemplo de falhas em derivados de E.O. e possíveis correções

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos