Ir para conteúdo
  • 2 Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

WYDStudio_PacketSniffer


gcr_fc
 Compartilhar

Posts Recomendados

Fala pessoal, vou compartilhar com vocês uma ferramenta que vem me ajudando a analisar os packets do WYD_Global na versão atual.
Foi desenvolvida com o único intuito de poder acertar as STRUCTS do jogo e ter um padrão sólido.

 

Não vou compartilhar a Source. Porem a ferramenta é 100% funcional e cumpre o objetivo.
Funciona em todos os cliente que usam o padrão de CPSock Original com o sistema de criptografia original, salvo os que estejam protegidos por anti injection ou outros tipos de proteção,

já que a ferramenta não tem nem uma técnica para bypassar essas proteções. Como o objetivo é o WYD Global e ele não tem nem uma tipo de proteção, não implementei nem um bypass, salvo uma verificação de debugger que existe do WYD.exe original!!

Temos a KeyTable Original codada dentro da dll, porem conseguimos gerar um dump da KeyTable do cliente que estamos trabalhando. E podemos carregar uma KeyTable Custom caso seja necessario.

Como funciona: a primeira ferramenta é a DLL, que basicamente faz todo o trabalho. Sempre que injetamos a DLL em um cliente ela analisa o exe acha a posição da KeyTable na memoria, gera um WYD_KeyTable_dump.txt que pode ser aberto com o bloco de notas. Em caso de diferença entre a KeyTable Original que esta na DLL e a KeyTable usado no cliente, basta renomearmos WYD_KeyTable_dump.txt para WYD_KeyTable_custom.txt e injetarmos novamente a DLL a KeyTable custom será carregada automaticamente e substitui a codada na DLL.
Gera um console com informações em tempo real e exibe os packets que estão sendo analisados (somente o Header no console), podemos analisar packets específicos adicionando os opcodes em WYD_PacketFilter.txt, dentro do arquivo tem toda a descrição de como usar, se o arquivo estiver vazio ou somente com comentarios (;) todos os packets serão logados.
Os packets são salvos completamente na raiz do cliente, uma pasta é criada com o nome de PacketLog e dentro dela temos as pasta Send e Recv, que são auto explicativas!! os packets são salvos desencriptados e em .txt podendo serem analisados no próprio bloco de notas por exemplo. Cada arquivo .txt salva ate 200 dumps dos packets, qunaod chega no limite os dados param de ser salvos no arquivo. Podemos configurar essa quantia tbm em WYD_PacketFilter.txt o valor minimo é 1 e o maximo 200. Tudo auto explicativo dentro dos .txt

Temos uma segunda ferramenta no pacote que se chama WYDSigGen, ele deve ser colocado na pasta do exe. Basta executar e ele carregara o WYD.exe e fara uma analise do binário procurando pela posição das funções de Recv e Send. Dessa forma gera um arquivo chamado WYD_Signatures.ini nele vai conter informações para que a DLL consiga hookar nos locais corretos, mesmo após uma atualização, por exemplo. Salvo quando o cliente passar por modificações muito grandes, como reestruturação das funções de encode/decode por exemplo. Ai o binário precisa ser analisado novamente para encontrar os offsets e assinaturas das novas funções.

A terceira ferramenta é o WYDInjector ele que carrega nossa WYDHook.dll no executável. Inicia o WYD no Global normalmente pelo Launcher, quando o cliente estiver rodando, abra o WYDInjector como administrador e a DLL será carregada automaticamente. ATENÇÃO a WYDHook.dll deve estar na mesma pasta do WYDInjector.exe, nem um dos 2 precisam estar na pasta do cliente. Somente WYD_Signatures.ini, WYD_PacketFilter.txt e WYD_KeyTable_custom.txt (caso queira carregar uma KeyTable custom) devem estar na pasta raiz do cliente que esta sendo analisado.

Acho que não esqueci de nada, segue um vídeo em uso...



OBS: não vou postar scan dos arquivos pelos seguintes motivos: A DLL nao tem nem um tipo de proteção ou ofuscação. Os executáveis WYDSigGen e WYDInjector, principalmente o WYDInjector modificam coisas em runtime, então obviamente são detectados como vírus, porem são falso positivo.

O fórum é voltado a Cheat, temos varias pessoas com muito conhecimento aqui, caso não se sintam seguros em usar, baixem os arquivos e analisem pessoalmente... os .exe tbm nao possuem nem um tipo de proteção ou ofuscação. Podem ser abertos com debuggers e analisados, até mesmo descompilados caso alguém tenha curiosidade.
Quem quiser usar, pode usar tranquilamente, não tem nada malicioso ou que possa gerar dano a vocês.
Bom é isso e espero que seja útil para vocês como foi para mim.

A ultima compilação foi hoje, vocês estão tendo acesso a versão release.

Segue o Link. Caso o antivirus de vocês acuse algo, basta adicionar uma exceção.

É necessário se cadastrar para acessar o conteúdo.

Editado por gcr_fc
  • Curtir 37
  • Uau 2

Discord: GuiCandiotto

Link para o comentário
Compartilhar em outros sites

Muito util isso, estava procurando um esses dias e nao encontrei, queria saber como tu fez para ele pegar os addrs atualizados, lembro que era assim que funcionava no Combat Arms, a galera só rodava e atualizava os enderecos do cheat, maneiro ver alguem trazendo isso pro WYD. 
Obrigado pela contribuicao. 

Link para o comentário
Compartilhar em outros sites

eu fiz um usando winpcap, da pra sniffar tudo sem injetar
só não da pra enviar pacote

 

 

5 horas atrás, Juumper disse:

Muito util isso, estava procurando um esses dias e nao encontrei, queria saber como tu fez para ele pegar os addrs atualizados, lembro que era assim que funcionava no Combat Arms, a galera só rodava e atualizava os enderecos do cheat, maneiro ver alguem trazendo isso pro WYD. 
Obrigado pela contribuicao. 

 

vc pode fazer uma função que procura bytes na memoria e retorna o addr
então vc acha o padrão da sendpacket por exemplo, e vc consegue encontrar o addr em diversos clients com o mesmo padrão 

É necessário se cadastrar para acessar o conteúdo.

Editado por badcorp
  • Curtir 13
  • Uau 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, badcorp disse:

eu fiz um usando winpcap, da pra sniffar tudo sem injetar
só não da pra enviar pacote

 

 

 

vc pode fazer uma função que procura bytes na memoria e retorna o addr
então vc acha o padrão da sendpacket por exemplo, e vc consegue encontrar o addr em diversos clients com o mesmo padrão 

É necessário se cadastrar para acessar o conteúdo.


Nao sabia que era assim, obrigado por compartilhar!

Link para o comentário
Compartilhar em outros sites

8 horas atrás, Juumper disse:

Muito util isso, estava procurando um esses dias e nao encontrei, queria saber como tu fez para ele pegar os addrs atualizados, lembro que era assim que funcionava no Combat Arms, a galera só rodava e atualizava os enderecos do cheat, maneiro ver alguem trazendo isso pro WYD. 
Obrigado pela contribuicao. 

Basicamente. Toda função compilada vira uma sequência de bytes. Mesmo quando o executável é recompilado, o padrão de bytes do início da função costuma ser muito parecido entre versões.

Por exemplo, CPSock::AddMessage sempre começa com algo assim:
55 8B EC 51 56 8B F1 83 3E 00 77 ?? C7 46 ?? 0A 00 00 00
│  │     │  │  │     │        │     │
│  │     │  │  │     │        │     └─ constante 0x0A (erro 10)
│  │     │  │  │     │        └─ JA (jump if above) = "se > 0, pula"
│  │     │  │  │     └─ CMP [ESI], 0  = "buffer vazio?"
│  │     │  │  └─ MOV ESI, ECX  = salva o ponteiro 'this'
│  │     │  └─ PUSH ESI
│  │     └─ PUSH ECX
│  └─ MOV EBP, ESP  ─┐ prólogo padrão de função x86
└─ PUSH EBP          ─┘

O ?? são wildcards — bytes que podem mudar entre versões (offsets que o compilador pode realocar), mas o esqueleto da lógica é o mesmo.

Para cada função, temos 3 assinaturas ordenadas da mais específica para a mais genérica:

v1 (22 bytes, match=100): "55 8B EC 51 56 8B F1 83 3E 00 77 ?? C7 46 ?? 0A 00 00 00 33 C0 5E"  -  muito específica, quase impossível dar falso positivo

v2 (14 bytes, match=70):  "55 8B EC ?? 56 8B F1 83 3E 00 77 ?? C7 46"  -  mais tolerante, aceita variação no prólogo

v3 (8 bytes, match=40):   "8B F1 83 3E 00 77 ?? C7"  -  último recurso, só o "núcleo" da lógica

 

A prioridade é sempre a v1, se por acaso não encontrar com a v1, tenta a v2 e assim por diante. Raramente chega na v3.

Se o código for recompilado, o addr muda porem o padrão dos bytes continua o mesmo, digamos que a função foi reescrita, isso vai dificultar a analise, porem sabemos que esse tipo de função normalmente tem valores de retornos específicos, como por exemplo - constante 0x0A (erro 10), então seguimos procurando por essas particularidades.

 

É necessário se cadastrar para acessar o conteúdo.


Comentei ai nesse trecho de código, alguns pontos que podem ser usados para a analise.
Nesse novo sistema que implementei, vc ate consegue fazer funcionar, porem como cada sessão que vc iniciar com o servidor tem um conjunto de keys exclusivas, toda vez vc vai ter que capturar, para poder fazer funcionar.

Mas digamos que reescreveram a função toda, mudaram tudo e etc... Ai meu amigo, vc analisa o exe novamente e encontra outra vez suahsaushaushau
A grosso modo é isso.

Editado por gcr_fc
  • Curtir 13
  • Uau 1

Discord: GuiCandiotto

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Juumper disse:


Nao sabia que era assim, obrigado por compartilhar!

tmj
eu fiz uma gambiarra que pode ajudar

 

É necessário se cadastrar para acessar o conteúdo.

 

  • Curtir 14
Link para o comentário
Compartilhar em outros sites

3 horas atrás, badcorp disse:

eu fiz um usando winpcap, da pra sniffar tudo sem injetar
só não da pra enviar pacote

 

 

 

vc pode fazer uma função que procura bytes na memoria e retorna o addr
então vc acha o padrão da sendpacket por exemplo, e vc consegue encontrar o addr em diversos clients com o mesmo padrão 

É necessário se cadastrar para acessar o conteúdo.

É por ai, a primeira analise tem que ser feita manualmente, salvo se vc já conhece os padrões da função que esta procurasndo.

  • Curtir 1

Discord: GuiCandiotto

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.