Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
XenoScan — Scanner de memória de código aberto escrito em C++ | Kitploit
Ferramentas/GitHubGitHub/nickcano/xenoscan
Forensia de MemóriaExploraçãoEngenharia ReversaDepuradoresAnálise de Binários
GitHubnickcano/xenoscan

XenoScan

Scanner de memória de código aberto escrito em C++

Ver Repositório
36970há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

XenoScan

XenoScan é um scanner de memória que pode ser usado para escanear a memória de processos a fim de localizar as posições específicas de valores importantes. Esse tipo de ferramenta é tipicamente usado ao modificar jogos de vídeo, pois permite localizar os valores que representam o estado do jogo na memória.

XenoScan é escrito em C++ com um frontend em Lua, e tenho trabalhado em funcionalidades avançadas que vão além de qualquer coisa que já vi em outros scanners de memória. Notavelmente, ele possui uma maneira de enumerar e retornar todas as estruturas de dados complexas (como std::list e std::map) no espaço de memória do alvo, e pode até mesmo escanear por instâncias de classes e agrupar as instâncias descobertas por seus tipos subjacentes.

Comunicação

Se precisar entrar em contato comigo, quiser um lugar para conversar ou tiver uma pergunta, meu Discord é o melhor lugar.

Subprojetos

XenoLua

XenoLua é um invólucro em torno do Lua que fornece uma tonelada de funcionalidades. Mais notavelmente, ele fornece uma classe LuaVariant que encapsula a funcionalidade de conversão entre tipos C/C++ e Lua. Além disso, possui funções auxiliares para trabalhar com Lua na classe LuaPrimitive.

XenoScanEngine

XenoScanEngine é a parte principal do projeto. Contém o código para a varredura, detecção de estruturas de dados e todo o resto.

XenoScanLua

XenoScanLua liga XenoScanEngine ao XenoLua para fornecer um frontend programável em Lua para o scanner. Atualmente, este é o único ponto de entrada para o scanner.

Além disso, este projeto contém algum código de teste que garante que tudo está funcionando corretamente. Um teste é uma combinação de um arquivo .cpp, um .h e um .lua. Para exemplos de como usar o scanner, você pode consultar os arquivos de teste .lua.

Compilando

XenoScan usa CMake e foi testado com Visual Studio 2017. Para usar esta versão do VS, basta executar buildmsvc2017.bat a partir de um Prompt de Comando do Desenvolvedor de 32 bits para VS. Como exemplo, para construir um projeto para Visual Studio 2017, executo

root@kitploit:~
cd C:\caminho\para\XenoScan
buildmsvc2017.bat

O que cria um arquivo chamado XenoScan.sln no meu diretório build (ex.: C:\caminho\para\XenoScan\build). Em seguida, uso esse arquivo de solução para compilar o código no Visual Studio. A construção para x64 é semelhante, mas é executada a partir de um Prompt de Comando das Ferramentas Nativas x64 para VS.

root@kitploit:~
cd C:\caminho\para\XenoScan
buildmsvc2017x64.bat

Ao alternar entre builds de 32 bits e x64, você deve executar buildclean.bat. Isso excluirá os arquivos de projeto gerados e removerá os binários compilados do LuaJIT, pois eles precisam ser reconstruídos para a arquitetura correta (isso acontecerá automaticamente).

Nota: Não faço ideia por que esses prompts têm nomes tão diferentes. A parte importante é que as vcvars configuradas pelos prompts correspondam à arquitetura que está sendo construída. Isso é principalmente importante para construir o LuaJIT. De qualquer forma, os scripts de build dirão se você os está executando do lugar errado.

Em teoria, você deve conseguir compilar o código com qualquer compilador moderno, desde que use o CMake para gerar os arquivos de projeto. Antes de compilar, você precisará garantir que fez o checkout dos submódulos. Depois disso, também será necessário construir o submódulo luajit para que o XenoScan possa linkar contra as bibliotecas.

Por moderno, quero dizer qualquer coisa que suporte C++17, já que o código usa esse padrão. Além disso, sua versão do CMake deve ser pelo menos 3.10.

Plataforma

O código foi projetado para ser independente de plataforma. Teoricamente, para compilar em qualquer outra plataforma, você precisaria

  1. Criar arquivos de projeto/make para seu IDE/compilador alvo.
  2. Remover os arquivos ScannerTargetWindows.cpp e ScannerTargetWindows.h do projeto.
  3. Implementar a interface ScannerTarget para sua plataforma.
  4. Adicionar sua implementação ao projeto.
  5. ???? lucro

Funcionalidades

A funcionalidade básica de varredura suporta os seguintes tipos:

  • Tipos integrais*:
    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t
  • float
  • double
  • strings ascii
  • strings largas
  • Valores dinâmicos (valores que são pesquisados relativamente a algum estado atual)
    • filetime64: carimbo de tempo de 64 bits (GetSystemTimeAsFileTime() no Windows)
    • ticktime32: contagem de ticks de 32 bits ( no Windows)

* O frontend Lua pode engasgar com inteiros de 64 bits, mas a biblioteca do scanner os suporta.

A varredura suporta os seguintes tipos de correspondência:

  • Igual a
  • Maior que
  • Maior ou igual a
  • Menor que
  • Menor ou igual a
  • Intervalos (min <= verificação <= max)

Além disso, há funcionalidade para detectar todas as instâncias dos seguintes tipos:

  • std::map
  • std::list
  • Qualquer classe com uma tabela de funções virtuais
Baixar ferramenta
GetTickCount()
  • Estruturas de dados personalizadas (pense em struct do C++)
    • Podem consistir em qualquer combinação de tipos integrais e decimais