Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
manticore — Инструмент символьного исполнения | Kitploit
Инструменты/GitHubGitHub/trailofbits/manticore
Статический анализДинамический анализ (песочница)Обратная инженерияФаззингАнализ Бинарных ФайловОбучение и ОбразованиеArchived
GitHubtrailofbits/manticore

manticore

Инструмент символьного исполнения

Репозиторий
3.9k4971 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

⚠️ Проект заархивирован ⚠️

Этот проект больше не разрабатывается и не поддерживается.

Manticore


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

Manticore — это инструмент символьного выполнения для анализа смарт-контрактов и бинарных файлов.

Возможности

  • Исследование программ: Manticore может выполнять программу с символьными входными данными и исследовать все возможные состояния, которых она может достичь
  • Генерация входных данных: Manticore может автоматически создавать конкретные входные данные, приводящие к заданному состоянию программы
  • Обнаружение ошибок: Manticore может обнаруживать сбои и другие случаи отказа в бинарных файлах и смарт-контрактах
  • Инструментирование: Manticore предоставляет точный контроль над исследованием состояний с помощью обратных вызовов событий и перехватчиков инструкций
  • Программный интерфейс: Manticore предоставляет программный доступ к своему механизму анализа через Python API

Manticore может анализировать следующие типы программ:

  • Смарт-контракты Ethereum (байт-код EVM)
  • ELF-бинарные файлы Linux (x86, x86_64, aarch64 и ARMv7)
  • Модули WASM

Установка

Примечание: Мы рекомендуем устанавливать Manticore в виртуальное окружение, чтобы избежать конфликтов с другими проектами или пакетами.

Вариант 1: Установка из PyPI:

root@kitploit:~
pip install manticore

Вариант 2: Установка из PyPI с дополнительными зависимостями, необходимыми для выполнения нативных бинарных файлов:

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

Вариант 3: Установка ежевечерней разработочной сборки:

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

Вариант 4: Установка из ветки master:

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

Вариант 5: Установка через Docker:

root@kitploit:~
docker pull trailofbits/manticore

После установки будут доступны CLI-инструмент manticore и Python API.

Для разработочной установки обратитесь к нашей вики.

Использование

CLI

Manticore имеет интерфейс командной строки, который может выполнять базовый символьный анализ бинарного файла или смарт-контракта. Результаты анализа будут помещены в рабочую директорию, начинающуюся с mcore_. Для информации о рабочей директории см. вики.

EVM

CLI Manticore автоматически определяет, что вы пытаетесь протестировать контракт, если (например) у контракта есть расширение .sol или .vy. Смотрите демо.

Нажмите, чтобы раскрыть:
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

Предоставляется альтернативный CLI-инструмент, который упрощает тестирование контрактов и позволяет писать методы свойств на том же высокоуровневом языке, который использует контракт. Ознакомьтесь с документацией manticore-verifier. Смотрите демо

Native

Нажмите, чтобы раскрыть:
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 предоставляет программный интерфейс Python, который можно использовать для реализации мощных пользовательских анализов.

EVM

Для смарт-контрактов Ethereum API может использоваться для детальной проверки произвольных свойств контракта. Пользователи могут задать начальные условия, выполнять символьные транзакции, а затем просматривать обнаруженные состояния, чтобы убедиться, что инварианты контракта выполняются.

Нажмите, чтобы раскрыть:
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

Также возможно использовать API для создания пользовательских инструментов анализа для бинарных файлов Linux. Настройка начального состояния помогает избежать проблем взрыва состояний, которые часто возникают при использовании CLI.

Нажмите, чтобы раскрыть:
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 также может выполнять функции WebAssembly над символьными входными данными для проверки свойств или общего анализа.

Нажмите, чтобы раскрыть:
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])

Требования

  • Manticore требует Python 3.7 или новее
  • Manticore официально поддерживает последнюю версию LTS Ubuntu, предоставляемую Github Actions
    • Manticore имеет экспериментальную поддержку EVM и WASM (но не нативных бинарных файлов Linux) на MacOS
  • Мы рекомендуем запускать с увеличенным размером стека. Это можно сделать, выполнив ulimit -s 100000 или передав --ulimit stack=100000000:100000000 в docker run

Компиляция смарт-контрактов

  • Для анализа смарт-контрактов Ethereum требуется программа solc в $PATH.
  • Manticore использует crytic-compile для сборки смарт-контрактов. Если у вас возникли проблемы с компиляцией, попробуйте запустить crytic-compile непосредственно на вашем коде — это упростит выявление любых проблем.
  • Мы всё ещё в процессе реализации полной поддержки семантики инструкций EVM Istanbul, поэтому некоторые опкоды могут не поддерживаться. В крайнем случае можно попробовать скомпилировать с Solidity 0.4.x, чтобы избежать генерации этих инструкций.

Использование другого решателя (Yices, Z3, CVC4)

Manticore полагается на внешний решатель, поддерживающий smtlib2. В настоящее время поддерживаются Z3, Yices и CVC4, и их можно выбрать через командную строку или настройки конфигурации. Если Yices доступен, Manticore будет использовать его по умолчанию. Если нет, он вернётся к Z3 или CVC4. Если вы хотите вручную выбрать, какой решатель использовать, вы можете сделать это следующим образом: manticore --smt.solver Z3

Установка CVC4

Для получения более подробной информации перейдите на https://cvc4.github.io/. В противном случае просто получите бинарник и используйте его.

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

Установка Yices

Yices невероятно быстр. Подробнее здесь 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

Получение помощи

Не стесняйтесь зайти в наш канал Slack #manticore в Empire Hacking для получения помощи по использованию или расширению Manticore.

Документация доступна в нескольких местах:

  • Вики содержит информацию о начале работы с Manticore и внесении вклада.

  • Справочник API содержит более полную и углубленную документацию по нашему API.

  • Директория examples содержит несколько небольших примеров, демонстрирующих возможности API.

  • Репозиторий manticore-examples содержит более сложные примеры, включая несколько реальных задач CTF.

Если вы хотите сообщить об ошибке или запросить новую функцию, пожалуйста, используйте нашу страницу issues.

Для вопросов и разъяснений, пожалуйста, посетите страницу обсуждений.

Лицензия

Manticore лицензирован и распространяется под лицензией AGPLv3. Свяжитесь с нами, если вы ищете исключение из условий.

Публикации

  • 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

Если вы используете Manticore в академической работе, рассмотрите возможность подачи заявки на Crytic $10k Research Prize.

Демонстрационное видео с ASE 2019

Brief Manticore demo video

Интеграции инструментов

  • MATE: Merged Analysis To prevent Exploits
    • Mantiserve: REST API взаимодействие с Manticore для запуска, остановки и проверки экземпляра Manticore
    • Dwarfcore: Плагины и детекторы для использования в движке Mantiserve во время исследования
    • Under-constrained symbolic execution Интерфейс для символьного исследования отдельных функций с помощью Manticore
Скачать инструмент