Manticore 项目教程

Manticore 项目教程

manticore Symbolic execution tool manticore 项目地址: https://gitcode.com/gh_mirrors/ma/manticore

1. 项目介绍

Manticore 是一个符号执行工具,主要用于智能合约和二进制文件的分析。它能够自动生成程序的输入,探索所有可能的执行路径,并检测程序中的崩溃和其他故障情况。Manticore 提供了细粒度的状态探索控制,支持事件回调和指令钩子,并且通过 Python API 提供了对分析引擎的编程访问。

Manticore 支持以下类型的程序分析:

  • Ethereum 智能合约(EVM 字节码)
  • Linux ELF 二进制文件(x86, x86_64, aarch64, ARMv7)
  • WASM 模块

2. 项目快速启动

安装 Manticore

推荐在虚拟环境中安装 Manticore,以避免与其他项目或包的冲突。以下是几种安装方法:

方法 1: 从 PyPI 安装
pip install manticore
方法 2: 从 PyPI 安装,包含执行本地二进制文件所需的额外依赖
pip install "manticore[native]"
方法 3: 安装 nightly 开发版本
pip install --pre "manticore[native]"
方法 4: 从 master 分支安装
git clone https://github.com/trailofbits/manticore.git
cd manticore
pip install -e ".[native]"
方法 5: 通过 Docker 安装
docker pull trailofbits/manticore

使用 CLI 进行分析

Manticore 提供了一个命令行界面,可以对二进制文件或智能合约进行基本的符号分析。分析结果将放置在一个以 mcore_ 开头的目录中。

分析 EVM 智能合约
manticore examples/evm/umd_example.sol
分析 Linux 二进制文件
manticore examples/linux/basic

3. 应用案例和最佳实践

智能合约分析

Manticore 可以用于详细验证智能合约的任意属性。用户可以设置初始条件,执行符号交易,并审查发现的状态,以确保合约的不变性。

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)))

二进制文件分析

Manticore 也可以用于创建自定义的 Linux 二进制文件分析工具。通过定制初始状态,可以避免在使用 CLI 时常见的状态爆炸问题。

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()  # 告诉 Manticore 停止
m.run()

4. 典型生态项目

Manticore 是 Trail of Bits 开源工具套件的一部分,与其他工具如 Echidna(智能合约模糊测试工具)和 Slither(静态分析工具)一起,构成了一个完整的智能合约和二进制文件分析生态系统。这些工具共同提供了从符号执行到模糊测试再到静态分析的全方位安全保障。

manticore Symbolic execution tool manticore 项目地址: https://gitcode.com/gh_mirrors/ma/manticore

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈昊和

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值