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は以下の種類のプログラムを解析できます:

  • イーサリアムスマートコントラクト (EVMバイトコード)
  • Linux ELFバイナリ (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

インストール後、manticore CLIツールとPython APIが利用可能になります。

開発インストールについては、Wikiを参照してください。

使用方法

CLI

Manticoreにはコマンドラインインターフェースがあり、バイナリやスマートコントラクトの基本的なシンボリック解析を実行できます。 解析結果はmcore_で始まるワークスペースディレクトリに配置されます。ワークスペースの詳細については、Wikiを参照してください。

EVM

Manticore CLIは、例えばコントラクトの拡張子が.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

イーサリアムスマートコントラクトの場合、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は、Github Actionsが提供する最新のLTSバージョンのUbuntuを公式にサポートしています
    • Manticoreは、MacOS上でEVMとWASM(ただしネイティブLinuxバイナリは除く)を実験的にサポートしています
  • スタックサイズを増やして実行することをお勧めします。これはulimit -s 100000を実行するか、docker runに--ulimit stack=100000000:100000000を渡すことで行えます。

スマートコントラクトのコンパイル

  • イーサリアムスマートコントラクトの解析には、$PATHにsolcプログラムが必要です。
  • 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

ヘルプの入手

Manticoreの使用や拡張に関するヘルプについては、Empire Hacking の #manticore Slackチャンネルにお立ち寄りください。

ドキュメントはいくつかの場所で入手できます:

  • Wiki には、Manticoreを使い始めたり貢献したりするための情報が含まれています

  • APIリファレンス には、APIに関するより詳細で深いドキュメントがあります

  • examples ディレクトリには、APIの機能を示す小さな例がいくつかあります

  • manticore-examples リポジトリには、実際のCTF問題を含む、より複雑な例があります

バグレポートや機能リクエストを提出する場合は、issues ページをご利用ください。

質問や確認については、discussion ページをご覧ください。

ライセンス

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: Manticoreインスタンスの開始、停止、確認のためのREST APIとの対話
    • Dwarfcore: 探索中にMantiserveエンジン内で使用するプラグインと検出器
    • 制約の緩いシンボリック実行 Manticoreで単一関数をシンボリックに探求するためのインターフェース
ツールをダウンロード