Manticore 项目教程
manticore Symbolic execution tool 项目地址: 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 项目地址: https://gitcode.com/gh_mirrors/ma/manticore