Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
XenoScan — Escáner de memoria de código abierto escrito en C++ | Kitploit
Herramientas/GitHubGitHub/nickcano/xenoscan
Forensia de MemoriaExplotaciónIngeniería InversaDepuradoresAnálisis de Binarios
GitHubnickcano/xenoscan

XenoScan

Escáner de memoria de código abierto escrito en C++

Ver Repositorio
36970hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

XenoScan

XenoScan es un escáner de memoria que se puede utilizar para analizar la memoria de procesos y localizar las ubicaciones específicas de valores importantes. Este tipo de herramientas se usan típicamente al modificar videojuegos, ya que permiten localizar los valores que representan el estado del juego en la memoria.

XenoScan está escrito en C++ con un frontend en Lua, y he estado trabajando en funcionalidades avanzadas que van más allá de cualquier cosa que haya visto en otros escáneres de memoria. En particular, tiene una forma de enumerar y devolver todas las estructuras de datos complejas (como std::list y std::map) en el espacio de memoria del objetivo, e incluso puede escanear cualquier instancia de clase y agrupar las instancias descubiertas por sus tipos subyacentes.

Comunicación

Si necesitas ponerte en contacto conmigo, quieres un lugar para charlar o tienes alguna pregunta, mi Discord es el mejor lugar.

Subproyectos

XenoLua

XenoLua es un envoltorio alrededor de Lua que proporciona una gran cantidad de funcionalidades. Lo más destacado es que proporciona una clase LuaVariant que envuelve la funcionalidad de conversión entre tipos C/C++ y Lua. Además, tiene funciones auxiliares para trabajar con Lua en la clase LuaPrimitive.

XenoScanEngine

XenoScanEngine es el núcleo del proyecto. Contiene el código para el escaneo, la detección de estructuras de datos y todo lo demás.

XenoScanLua

XenoScanLua une XenoScanEngine con XenoLua para proporcionar un frontend scripteable en Lua para el escáner. Actualmente, este es el único punto de entrada al escáner.

Además, este proyecto contiene código de prueba que asegura que todo funciona correctamente. Una prueba es una combinación de un archivo .cpp, un .h y un .lua. Para ver ejemplos de cómo usar el escáner, puedes consultar los archivos de prueba .lua.

Compilación

XenoScan usa CMake y ha sido probado con Visual Studio 2017. Para usar esta versión de VS, simplemente ejecuta buildmsvc2017.bat desde un Símbolo del sistema para desarrolladores de VS de 32 bits. Como ejemplo, para compilar un proyecto para Visual Studio 2017, ejecuto

root@kitploit:~
cd C:\ruta\a\XenoScan
buildmsvc2017.bat

Lo que crea un archivo llamado XenoScan.sln en mi directorio build (por ejemplo, C:\ruta\a\XenoScan\build). Luego uso este archivo de solución para compilar el código en Visual Studio. La compilación x64 es similar, pero se ejecuta desde un Símbolo del sistema de herramientas nativas x64 para VS.

root@kitploit:~
cd C:\ruta\a\XenoScan
buildmsvc2017x64.bat

Al cambiar entre compilaciones de 32 bits y x64, debes ejecutar buildclean.bat. Esto eliminará los archivos de proyecto generados y quitará los binarios compilados de LuaJIT, ya que deben reconstruirse para la arquitectura correcta (esto ocurrirá automáticamente).

Nota: No tengo idea de por qué estos símbolos del sistema se llaman de manera tan diferente. Lo importante es que las vcvars configuradas por los símbolos correspondan a la arquitectura que se está compilando. Esto es principalmente importante para compilar LuaJIT. De todos modos, los scripts de compilación te dirán si los estás ejecutando desde el lugar incorrecto.

En teoría, deberías poder compilar el código con cualquier compilador moderno, siempre que uses CMake para generar los archivos de proyecto. Antes de compilar, deberás asegurarte de haber clonado los submódulos. Una vez hecho eso, también tendrás que compilar el submódulo luajit para que XenoScan pueda enlazar con las librerías.

Por moderno me refiero a cualquier cosa que admita C++17, ya que el código usa ese estándar. Además, tu versión de CMake debe ser al menos 3.10.

Plataforma

El código está diseñado para ser independiente de la plataforma. En teoría, para compilar en cualquier otra plataforma, necesitarías:

  1. Crear archivos de proyecto/make para tu IDE/compilador objetivo.
  2. Eliminar los archivos ScannerTargetWindows.cpp y ScannerTargetWindows.h del proyecto.
  3. Implementar la interfaz ScannerTarget para tu plataforma.
  4. Agregar tu implementación al proyecto.
  5. ??? ganancias

Características

La funcionalidad básica de escaneo admite los siguientes tipos:

  • Tipos enteros*:
    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t
  • float
  • double
  • cadenas ascii
  • cadenas anchas
  • Valores dinámicos (valores que se buscan en relación con algún estado actual)
    • filetime64: marca de tiempo de 64 bits (GetSystemTimeAsFileTime() en Windows)
    • ticktime32: contador de ticks de 32 bits ( en Windows)

* El frontend de Lua puede tener problemas con enteros de 64 bits, pero la librería del escáner los admite.

El escaneo admite los siguientes tipos de coincidencias:

  • Igual a
  • Mayor que
  • Mayor o igual que
  • Menor que
  • Menor o igual que
  • Rangos (min <= check <= max)

Además, hay funcionalidad para detectar todas las instancias de los siguientes tipos:

  • std::map
  • std::list
  • Cualquier clase con una tabla de funciones virtuales
Descargar herramienta
GetTickCount()
  • Estructuras de datos personalizadas (piensa en struct de C++)
    • Pueden consistir en cualquier combinación de tipos enteros y decimales