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
manticore — Symbolic execution tool | Kitploit
Outils/GitHubGitHub/trailofbits/manticore
Static AnalysisDynamic Analysis (Sandboxing)Reverse EngineeringFuzzingBinary AnalysisLearning & EducationArchived
GitHubtrailofbits/manticore

manticore

Symbolic execution tool

Voir le dépôt
3.9k497il y a 1 moisVé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
Site web

⚠️ Projet archivé ⚠️

Ce projet n'est plus développé ni maintenu en interne.

Manticore


Build Status Coverage Status PyPI Version Slack Status Documentation Status Example Status LGTM Total Alerts

Manticore est un outil d'exécution symbolique pour l'analyse de contrats intelligents et de binaires.

Fonctionnalités

  • Exploration de programmes : Manticore peut exécuter un programme avec des entrées symboliques et explorer tous les états possibles qu'il peut atteindre
  • Génération d'entrées : Manticore peut produire automatiquement des entrées concrètes qui mènent à un état de programme donné
  • Détection d'erreurs : Manticore peut détecter les crashs et autres cas d'échec dans les binaires et les contrats intelligents
  • Instrumentation : Manticore offre un contrôle fin de l'exploration des états via des rappels d'événements et des hooks d'instructions
  • Interface programmatique : Manticore expose un accès programmatique à son moteur d'analyse via une API Python

Manticore peut analyser les types de programmes suivants :

  • Contrats intelligents Ethereum (bytecode EVM)
  • Binaires Linux ELF (x86, x86_64, aarch64 et ARMv7)
  • Modules WASM

Installation

Note : Nous recommandons d'installer Manticore dans un environnement virtuel pour éviter les conflits avec d'autres projets ou paquets

Option 1 : Installation depuis PyPI :

root@kitploit:~
pip install manticore

Option 2 : Installation depuis PyPI, avec dépendances supplémentaires nécessaires pour exécuter des binaires natifs :

root@kitploit:~
pip install "manticore[native]"

Option 3 : Installation d'une version de développement nightly :

root@kitploit:~
pip install --pre "manticore[native]"

Option 4 : Installation depuis la branche master :

root@kitploit:~
git clone https://github.com/trailofbits/manticore.git
cd manticore
pip install -e ".[native]"

Option 5 : Installation via Docker :

root@kitploit:~
docker pull trailofbits/manticore

Une fois installé, l'outil en ligne de commande manticore et l'API Python seront disponibles.

Pour une installation de développement, consultez notre wiki.

Utilisation

CLI

Manticore dispose d'une interface en ligne de commande qui peut effectuer une analyse symbolique de base d'un binaire ou d'un contrat intelligent. Les résultats de l'analyse seront placés dans un répertoire de travail commençant par mcore_. Pour plus d'informations sur l'espace de travail, consultez le wiki.

EVM

La CLI de Manticore détecte automatiquement que vous essayez de tester un contrat si (par ex.) le contrat a une extension .sol ou .vy. Voir une démo.

Cliquez pour développer :
root@kitploit:~
$ manticore examples/evm/umd_example.sol 
 [9921] m.main:INFO: Registered plugins: DetectUninitializedMemory, DetectReentrancySimple, DetectExternalCallAndLeak, ...
 [9921] m.e.manticore:INFO: Starting symbolic create contract
 [9921] m.e.manticore:INFO: Starting symbolic transaction: 0
 [9921] m.e.manticore:INFO: 4 alive states, 6 terminated states
 [9921] m.e.manticore:INFO: Starting symbolic transaction: 1
 [9921] m.e.manticore:INFO: 16 alive states, 22 terminated states
[13761] m.c.manticore:INFO: Generated testcase No. 0 - STOP(3 txs)
[13754] m.c.manticore:INFO: Generated testcase No. 1 - STOP(3 txs)
...
[13743] m.c.manticore:INFO: Generated testcase No. 36 - THROW(3 txs)
[13740] m.c.manticore:INFO: Generated testcase No. 37 - THROW(3 txs)
[9921] m.c.manticore:INFO: Results in ~/manticore/mcore_gsncmlgx
Manticore-verifier

Un outil CLI alternatif est fourni qui simplifie les tests de contrats et permet d'écrire des méthodes de propriétés dans le même langage de haut niveau que celui utilisé par le contrat. Consultez la documentation de manticore-verifier. Voir une démo

Native

Cliquez pour développer :
root@kitploit:~
$ manticore examples/linux/basic
[9507] m.n.manticore:INFO: Loading program examples/linux/basic
[9507] m.c.manticore:INFO: Generated testcase No. 0 - Program finished with exit status: 0
[9507] m.c.manticore:INFO: Generated testcase No. 1 - Program finished with exit status: 0
[9507] m.c.manticore:INFO: Results in ~/manticore/mcore_7u7hgfay
[9507] m.n.manticore:INFO: Total time: 2.8029580116271973

API

Manticore fournit une interface de programmation Python qui peut être utilisée pour implémenter des analyses personnalisées puissantes.

EVM

Pour les contrats intelligents Ethereum, l'API peut être utilisée pour une vérification détaillée des propriétés arbitraires des contrats. Les utilisateurs peuvent définir les conditions de départ, exécuter des transactions symboliques, puis examiner les états découverts pour s'assurer que les invariants d'un contrat sont respectés.

Cliquez pour développer :
root@kitploit:~
from manticore.ethereum import ManticoreEVM
contract_src="""
contract Adder {
    function incremented(uint value) public returns (uint){
        if (value == 1)
            revert();
        return value + 1;
    }
}
"""
m = ManticoreEVM()

user_account = m.create_account(balance=10000000)
contract_account = m.solidity_create_contract(contract_src,
                                              owner=user_account,
                                              balance=0)
value = m.make_symbolic_value()

contract_account.incremented(value)

for state in m.ready_states:
    print("can value be 1? {}".format(state.can_be_true(value == 1)))
    print("can value be 200? {}".format(state.can_be_true(value == 200)))

Native

Il est également possible d'utiliser l'API pour créer des outils d'analyse personnalisés pour les binaires Linux. Adapter l'état initial permet d'éviter les problèmes d'explosion d'état qui surviennent couramment lors de l'utilisation de la CLI.

Cliquez pour développer :
root@kitploit:~
# example Manticore script
from manticore.native import Manticore

m = Manticore.linux('./example')

@m.hook(0x400ca0)
def hook(state):
  cpu = state.cpu
  print('eax', cpu.EAX)
  print(cpu.read_int(cpu.ESP))

  m.kill()  # tell Manticore to stop

m.run()

WASM

Manticore peut également évaluer des fonctions WebAssembly sur des entrées symboliques pour la validation de propriétés ou une analyse générale.

Cliquez pour développer :
root@kitploit:~
from manticore.wasm import ManticoreWASM

m = ManticoreWASM("collatz.wasm")

def arg_gen(state):
    # Generate a symbolic argument to pass to the collatz function.
    # Possible values: 4, 6, 8
    arg = state.new_symbolic_value(32, "collatz_arg")
    state.constrain(arg > 3)
    state.constrain(arg < 9)
    state.constrain(arg % 2 == 0)
    return [arg]


# Run the collatz function with the given argument generator.
m.collatz(arg_gen)

# Manually collect return values
# Prints 2, 3, 8
for idx, val_list in enumerate(m.collect_returns()):
    print("State", idx, "::", val_list[0])

Prérequis

  • Manticore nécessite Python 3.7 ou supérieur
  • Manticore supporte officiellement la dernière version LTS d'Ubuntu fournie par Github Actions
    • Manticore a un support expérimental pour EVM et WASM (mais pas les binaires Linux natifs) sur MacOS
  • Nous recommandons d'exécuter avec une taille de pile augmentée. Cela peut être fait en exécutant ulimit -s 100000 ou en passant --ulimit stack=100000000:100000000 à docker run

Compilation des contrats intelligents

  • L'analyse des contrats intelligents Ethereum nécessite le programme solc dans votre $PATH.
  • Manticore utilise crytic-compile pour construire les contrats intelligents. Si vous rencontrez des problèmes de compilation, envisagez d'exécuter crytic-compile directement sur votre code pour faciliter l'identification des problèmes.
  • Nous sommes encore en train d'implémenter le support complet de la sémantique des instructions EVM Istanbul, donc certains opcodes peuvent ne pas être supportés. En dernier recours, vous pouvez essayer de compiler avec Solidity 0.4.x pour éviter de générer ces instructions.

Utilisation d'un solveur différent (Yices, Z3, CVC4)

Manticore repose sur un solveur externe supportant smtlib2. Actuellement, Z3, Yices et CVC4 sont supportés et peuvent être sélectionnés via la ligne de commande ou les paramètres de configuration. Si Yices est disponible, Manticore l'utilisera par défaut. Sinon, il utilisera Z3 ou CVC4. Si vous souhaitez choisir manuellement le solveur à utiliser, vous pouvez le faire comme ceci : manticore --smt.solver Z3

Installation de CVC4

Pour plus de détails, consultez https://cvc4.github.io/. Sinon, récupérez simplement le binaire et utilisez-le.

root@kitploit:~
    sudo wget -O /usr/bin/cvc4 https://github.com/CVC4/CVC4/releases/download/1.7/cvc4-1.7-x86_64-linux-opt
    sudo chmod +x /usr/bin/cvc4

Installation de Yices

Yices est incroyablement rapide. Plus de détails ici https://yices.csl.sri.com/

root@kitploit:~
    sudo add-apt-repository ppa:sri-csl/formal-methods
    sudo apt-get update
    sudo apt-get install yices2

Obtenir de l'aide

N'hésitez pas à passer par notre canal Slack #manticore dans Empire Hacking pour obtenir de l'aide sur l'utilisation ou l'extension de Manticore.

La documentation est disponible à plusieurs endroits :

  • Le wiki contient des informations pour commencer avec Manticore et contribuer

  • La référence de l'API contient une documentation plus complète et approfondie sur notre API

  • Le répertoire examples contient quelques petits exemples qui montrent les fonctionnalités de l'API

  • Le dépôt manticore-examples contient des exemples plus complexes, y compris de vrais problèmes de CTF

Si vous souhaitez soumettre un rapport de bogue ou une demande de fonctionnalité, veuillez utiliser notre page issues.

Pour les questions et clarifications, veuillez visiter la page de discussion.

Licence

Manticore est sous licence et distribué sous la licence AGPLv3. Contactez-nous si vous recherchez une exception aux conditions.

Publications

  • Manticore: A User-Friendly Symbolic Execution Framework for Binaries and Smart Contracts, Mark Mossberg, Felipe Manzano, Eric Hennenfent, Alex Groce, Gustavo Grieco, Josselin Feist, Trent Brunson, Artem Dinaburg - ASE 19

Si vous utilisez Manticore dans un cadre académique, envisagez de postuler au Crytic $10k Research Prize.

Vidéo de démonstration de l'ASE 2019

Brief Manticore demo video

Intégrations d'outils

  • MATE: Merged Analysis To prevent Exploits
    • Mantiserve: Interaction API REST avec Manticore pour démarrer, tuer et vérifier l'instance Manticore
    • Dwarfcore: Plugins et détecteurs à utiliser dans le moteur Mantiserve pendant l'exploration
    • Under-constrained symbolic execution Interface pour explorer symboliquement des fonctions uniques avec Manticore
Télécharger l’outil