Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
XenoScan — Scanner de mémoire open source écrit en C++ | Kitploit
Outils/GitHubGitHub/nickcano/xenoscan
Criminalistique MémoireExploitationRétro-ingénierieDébogueursAnalyse de Binaires
GitHubnickcano/xenoscan

XenoScan

Scanner de mémoire open source écrit en C++

Voir le dépôt
36970il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

XenoScan

XenoScan est un scanneur de mémoire qui peut être utilisé pour analyser la mémoire des processus afin de localiser les emplacements spécifiques de valeurs importantes. Ces types d’outils sont généralement utilisés lors du piratage de jeux vidéo, car ils permettent de localiser les valeurs représentant l’état du jeu en mémoire.

XenoScan est écrit en C++ avec une interface Lua, et j’ai travaillé sur des fonctionnalités avancées qui vont au‑delà de tout ce que j’ai vu dans d’autres scanneurs de mémoire. Notamment, il dispose d’un moyen d’énumérer et de retourner toutes les structures de données complexes (telles que std::list et std::map) dans l’espace mémoire de la cible, et il peut même rechercher n’importe quelles instances de classe et regrouper les instances découvertes par leurs types sous‑jacents.

Communication

Si vous avez besoin de me contacter, souhaitez un endroit pour discuter, ou avez une question, mon Discord est le meilleur endroit.

Sous‑projets

XenoLua

XenoLua est une surcouche autour de Lua qui fournit une multitude de fonctionnalités. Le plus notable est la classe LuaVariant qui encapsule la conversion entre les types C/C++ et Lua. De plus, elle contient des fonctions auxiliaires pour travailler avec Lua dans la classe LuaPrimitive.

XenoScanEngine

XenoScanEngine est le cœur du projet. Il contient le code pour l’analyse, la détection des structures de données, et tout le reste.

XenoScanLua

XenoScanLua relie XenoScanEngine à XenoLua pour fournir une interface scriptable en Lua pour le scanneur. Actuellement, c’est le seul point d’entrée du scanneur.

De plus, ce projet contient du code de test qui vérifie que tout fonctionne correctement. Un test est une combinaison d’un fichier .cpp, d’un .h et d’un .lua. Pour des exemples d’utilisation du scanneur, vous pouvez consulter les fichiers de test .lua.

Compilation

XenoScan utilise CMake et a été testé avec Visual Studio 2017. Pour utiliser cette version de VS, exécutez simplement buildmsvc2017.bat depuis une Invite de commandes développeur 32 bits pour VS. Par exemple, pour construire un projet pour Visual Studio 2017, j’exécute

root@kitploit:~
cd C:\path\to\XenoScan
buildmsvc2017.bat

Ce qui crée un fichier nommé XenoScan.sln dans mon répertoire build (par exemple C:\path\to\XenoScan\build). J’utilise ensuite ce fichier solution pour compiler le code dans Visual Studio. La construction en x64 est similaire, mais doit être exécutée depuis une Invite de commandes d’outils natifs x64 pour VS.

root@kitploit:~
cd C:\path\to\XenoScan
buildmsvc2017x64.bat

Lorsque vous passez d’une construction 32 bits à x64, vous devez exécuter buildclean.bat. Cela supprimera les fichiers projet générés et les binaires LuaJIT compilés, car ils doivent être reconstruits pour l’architecture correcte (cela se fera automatiquement).

Note : Je n’ai aucune idée pourquoi ces invites sont nommées si différemment. L’important est que les vcvars configurés par les invites correspondent à l’architecture en cours de construction. C’est surtout important pour la construction de LuaJIT. Quoi qu’il en soit, les scripts de construction vous indiqueront si vous les exécutez au mauvais endroit.

En théorie, vous devriez pouvoir compiler le code avec n’importe quel compilateur moderne, à condition d’utiliser CMake pour générer les fichiers projet. Avant de pouvoir compiler, vous devez vous assurer d’avoir récupéré les sous‑modules. Une fois cela fait, vous devrez également construire le sous‑module luajit pour que XenoScan puisse se lier aux bibliothèques.

Par moderne, j’entends tout ce qui supporte C++17, car le code utilise ce standard. De plus, votre version de CMake doit être au moins la 3.10.

Plateforme

Le code est conçu pour être indépendant de la plateforme. Théoriquement, pour compiler sur n’importe quelle autre plateforme, vous devriez

  1. Créer des fichiers projet/make pour votre IDE/compilateur cible.
  2. Supprimer les fichiers ScannerTargetWindows.cpp et ScannerTargetWindows.h du projet.
  3. Implémenter l’interface ScannerTarget pour votre plateforme.
  4. Ajouter votre implémentation au projet.
  5. ??? profitez

Fonctionnalités

Les fonctionnalités de base d’analyse prennent en charge les types suivants :

  • Types entiers* :
    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t
  • float
  • double
  • chaînes ascii
  • chaînes larges
  • Valeurs dynamiques (valeurs recherchées relativement à un état courant)
    • filetime64 : horodatage 64 bits (GetSystemTimeAsFileTime() sous Windows)
    • ticktime32 : compteur de ticks 32 bits ( sous Windows)

* L’interface Lua peut avoir du mal avec les entiers 64 bits, mais la bibliothèque du scanneur les supporte.

L’analyse prend en charge les types de correspondance suivants :

  • Égal à
  • Supérieur à
  • Supérieur ou égal à
  • Inférieur à
  • Inférieur ou égal à
  • Plages (min <= vérification <= max)

De plus, il existe une fonctionnalité pour détecter toutes les instances des types suivants :

  • std::map
  • std::list
  • Toute classe avec une table de fonctions virtuelles
Télécharger l’outil
GetTickCount()
  • Structures de données personnalisées (pensez à une struct en C++)
    • Peuvent être composées de toute combinaison de types entiers et décimaux