
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Manticore是一款符号执行工具,主要用于智能合约和二进制文件的分析。它通过符号输入执行程序,探索所有可能的状态,生成具体输入以触发特定状态,并检测崩溃等故障情况,同时提供编程接口支持定制化分析。
bashdocker pull trailofbits/manticore
安装后,manticore命令行工具和Python API将可用。
Manticore提供命令行界面,可对二进制文件或智能合约执行基本符号分析。分析结果将保存在以mcore_开头的工作区目录中。
EVM智能合约分析
当目标文件具有.sol或.vy扩展名时,CLI会自动检测为智能合约分析:
bash$ 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工具,简化合约测试,允许使用合约相同的高级语言编写属性方法,详情参见文档。
原生二进制文件分析
bash$ 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
Manticore提供Python编程接口,可用于实现强大的自定义分析。
EVM智能合约分析
用于详细验证智能合约的任意属性,可设置初始条件、执行符号交易并检查状态:
pythonfrom 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("value能否为1? {}".format(state.can_be_true(value == 1))) print("value能否为200? {}".format(state.can_be_true(value == 200)))
原生二进制文件分析
可创建针对Linux二进制文件的自定义分析工具,通过定制初始状态避免状态爆炸问题:
python# Manticore脚本示例 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()
WASM模块分析
可对WebAssembly函数进行符号输入评估,用于属性验证或常规分析:
pythonfrom manticore.wasm import ManticoreWASM m = ManticoreWASM("collatz.wasm") def arg_gen(state): # 生成传递给collatz函数的符号参数,可能值: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] # 使用给定的参数生成器运行collatz函数 m.collatz(arg_gen) # 手动收集返回值,将打印2, 3, 8 for idx, val_list in enumerate(m.collect_returns()): print("状态", idx, "::", val_list[0])
ulimit -s 100000或docker run时传递--ulimit stack=100000000:100000000实现solc程序在$PATH中Manticore依赖支持smtlib2的外部求解器,目前支持Z3、Yices和CVC4,可通过命令行或配置设置选择。默认优先使用Yices,否则回退到Z3或CVC4。手动选择求解器:
bashmanticore --smt.solver Z3
bashsudo 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
bashsudo add-apt-repository ppa:sri-csl/formal-methods sudo apt-get update sudo apt-get install yices2
Manticore采用AGPLv3许可证授权和分发。如需例外条款,请联系我们。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务