环境:ubuntu 20.04
提前创建一个干净的文件夹
利用pip创建虚拟环境,以防止包依赖冲突
python3 -m pip install --user --upgrade pip # 安装或者更新pip
python3 -m pip install --user virtualenv # 安装virtualenv
python3 -m venv manticore #第二个参数是创建虚拟环境的位置。通常,您可以在项目中创建它并调用它env。venv将在该env文件夹中创建虚拟Python安装。
source manticore/bin/activate # 启动该虚拟环境
pip install "manticore[native]" # 安装
pip install "manticorep[native] == 0.3.5.dev201126" # 随便挑一个版本安装(先执行0.x.x.devYYMMDD以查看哪些版本)
cd manticore # 到manticore文件夹下克隆项目
git clone https://github.com/trailofbits/manticore.git # 克隆项目
pip install -e ".[nativce]" #
docker pull trailofbits./manticore # 从镜像仓库中拉取镜像
cd examples/evm
manticore umd_example.sol
---
报错:缺少SOL编译器
---
sudo npm install solc #安装solc编译器
manticore umd_example.sol
执行结果:
2020-11-29 15:56:57,839: [70336] m.main:INFO: Beginning analysis
2020-11-29 15:56:57,841: [70336] m.e.manticore:INFO: Starting symbolic create contract
2020-11-29 15:56:58,554: [70336] m.e.manticore:INFO: Starting symbolic transaction: 0
2020-11-29 15:56:59,638: [70336] m.e.detectors:WARNING: INVALID instruction
2020-11-29 15:56:59,643: [70336] m.e.manticore:INFO: 4 alive states, 4 terminated states
2020-11-29 15:56:59,743: [70336] m.e.manticore:INFO: Starting symbolic transaction: 1
2020-11-29 15:57:03,308: [70336] m.e.detectors:WARNING: INVALID instruction
2020-11-29 15:57:05,537: [70336] m.e.detectors:WARNING: INVALID instruction
2020-11-29 15:57:05,840: [70336] m.e.detectors:WARNING: INVALID instruction
2020-11-29 15:57:05,925: [70336] m.e.detectors:WARNING: INVALID instruction
2020-11-29 15:57:05,935: [70336] m.e.manticore:INFO: 16 alive states, 16 terminated states
2020-11-29 15:57:06,243: [70623] m.c.manticore:INFO: Generated testcase No. 0 - STOP(3 txs)
2020-11-29 15:57:06,252: [70623] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,321: [70622] m.c.manticore:INFO: Generated testcase No. 1 - STOP(3 txs)
2020-11-29 15:57:06,326: [70622] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,341: [70624] m.c.manticore:INFO: Generated testcase No. 2 - STOP(3 txs)
2020-11-29 15:57:06,357: [70624] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,502: [70637] m.c.manticore:INFO: Generated testcase No. 3 - STOP(3 txs)
2020-11-29 15:57:06,504: [70637] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,556: [70626] m.c.manticore:INFO: Generated testcase No. 4 - STOP(3 txs)
2020-11-29 15:57:06,557: [70626] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,565: [70634] m.c.manticore:INFO: Generated testcase No. 5 - STOP(3 txs)
2020-11-29 15:57:06,566: [70634] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,582: [70628] m.c.manticore:INFO: Generated testcase No. 6 - STOP(3 txs)
2020-11-29 15:57:06,582: [70628] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,593: [70633] m.c.manticore:INFO: Generated testcase No. 8 - STOP(3 txs)
2020-11-29 15:57:06,594: [70633] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,594: [70635] m.c.manticore:INFO: Generated testcase No. 7 - STOP(3 txs)
2020-11-29 15:57:06,595: [70635] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:06,626: [70630] m.c.manticore:INFO: Generated testcase No. 9 - STOP(3 txs)
2020-11-29 15:57:06,627: [70630] m.c.plugin:WARNING: Caught will_solve in state None, but failed to capture its initialization
2020-11-29 15:57:08,891: [70623] m.c.manticore:INFO: Generated testcase No. 10 - STOP(3 txs)
2020-11-29 15:57:09,169: [70628] m.c.manticore:INFO: Generated testcase No. 11 - STOP(3 txs)
2020-11-29 15:57:09,218: [70633] m.c.manticore:INFO: Generated testcase No. 12 - STOP(3 txs)
2020-11-29 15:57:09,252: [70634] m.c.manticore:INFO: Generated testcase No. 13 - STOP(3 txs)
2020-11-29 15:57:09,255: [70637] m.c.manticore:INFO: Generated testcase No. 14 - STOP(3 txs)
2020-11-29 15:57:09,270: [70630] m.c.manticore:INFO: Generated testcase No. 15 - REVERT(1 txs)
2020-11-29 15:57:09,354: [70626] m.c.manticore:INFO: Generated testcase No. 16 - STOP(3 txs)
2020-11-29 15:57:09,557: [70622] m.c.manticore:INFO: Generated testcase No. 17 - REVERT(2 txs)
2020-11-29 15:57:09,625: [70630] m.c.manticore:INFO: Generated testcase No. 18 - REVERT(2 txs)
2020-11-29 15:57:09,940: [70635] m.c.manticore:INFO: Generated testcase No. 19 - THROW(2 txs)
2020-11-29 15:57:10,002: [70624] m.c.manticore:INFO: Generated testcase No. 20 - REVERT(3 txs)
2020-11-29 15:57:11,493: [70623] m.c.manticore:INFO: Generated testcase No. 21 - REVERT(3 txs)
2020-11-29 15:57:11,521: [70630] m.c.manticore:INFO: Generated testcase No. 22 - REVERT(3 txs)
2020-11-29 15:57:11,583: [70622] m.c.manticore:INFO: Generated testcase No. 23 - REVERT(3 txs)
2020-11-29 15:57:11,591: [70634] m.c.manticore:INFO: Generated testcase No. 24 - REVERT(3 txs)
2020-11-29 15:57:11,976: [70637] m.c.manticore:INFO: Generated testcase No. 25 - REVERT(3 txs)
2020-11-29 15:57:12,000: [70628] m.c.manticore:INFO: Generated testcase No. 26 - REVERT(3 txs)
2020-11-29 15:57:12,211: [70635] m.c.manticore:INFO: Generated testcase No. 27 - REVERT(3 txs)
2020-11-29 15:57:12,384: [70624] m.c.manticore:INFO: Generated testcase No. 28 - THROW(3 txs)
2020-11-29 15:57:12,395: [70633] m.c.manticore:INFO: Generated testcase No. 29 - THROW(3 txs)
2020-11-29 15:57:12,399: [70626] m.c.manticore:INFO: Generated testcase No. 30 - THROW(3 txs)
2020-11-29 15:57:14,049: [70623] m.c.manticore:INFO: Generated testcase No. 31 - THROW(3 txs)
2020-11-29 15:57:16,606: [70336] m.c.manticore:INFO: Results in /manticore/manticore/examples/evm/mcore_wc3fvtxo
看一下生成结果文件内容
> ls mcore_wc3fvtxo
command.sh user_00000003.trace user_00000008.summary user_0000000d.pkl user_00000012.logs user_00000016.tx.json user_0000001b.tx
global.findings user_00000003.tx user_00000008.trace user_0000000d.summary user_00000012.pkl user_00000017.constraints user_0000001b.tx.json
global.summary user_00000003.tx.json user_00000008.tx user_0000000d.trace user_00000012.summary user_00000017.logs user_0000001c.constraints
global_SymExExample.init_asm user_00000004.constraints user_00000008.tx.json user_0000000d.tx user_00000012.trace user_00000017.pkl user_0000001c.findings
global_SymExExample.init_visited user_00000004.logs user_00000009.constraints user_0000000d.tx.json user_00000012.tx user_00000017.summary user_0000001c.logs
global_SymExExample.runtime_asm user_00000004.pkl user_00000009.logs user_0000000e.constraints user_00000012.tx.json user_00000017.trace user_0000001c.pkl
global_SymExExample.runtime_visited user_00000004.summary user_00000009.pkl user_0000000e.logs user_00000013.constraints user_00000017.tx user_0000001c.summary
global_SymExExample.sol user_00000004.trace user_00000009.summary user_0000000e.pkl user_00000013.findings user_00000017.tx.json user_0000001c.trace
manticore.yml user_00000004.tx user_00000009.trace user_0000000e.summary user_00000013.logs user_00000018.constraints user_0000001c.tx
user_00000000.constraints user_00000004.tx.json user_00000009.tx user_0000000e.trace user_00000013.pkl user_00000018.logs user_0000001c.tx.json
user_00000000.logs user_00000005.constraints user_00000009.tx.json user_0000000e.tx user_00000013.summary user_00000018.pkl user_0000001d.constraints
user_00000000.pkl user_00000005.logs user_0000000a.constraints user_0000000e.tx.json user_00000013.trace user_00000018.summary user_0000001d.findings
user_00000000.summary user_00000005.pkl user_0000000a.logs user_0000000f.constraints user_00000013.tx user_00000018.trace user_0000001d.logs
user_00000000.trace user_00000005.summary user_0000000a.pkl user_0000000f.logs user_00000013.tx.json user_00000018.tx user_0000001d.pkl
user_00000000.tx user_00000005.trace user_0000000a.summary user_0000000f.pkl user_00000014.constraints user_00000018.tx.json user_0000001d.summary
user_00000000.tx.json user_00000005.tx user_0000000a.trace user_0000000f.summary user_00000014.logs user_00000019.constraints user_0000001d.trace
user_00000001.constraints user_00000005.tx.json user_0000000a.tx user_0000000f.trace user_00000014.pkl user_00000019.logs user_0000001d.tx
user_00000001.logs user_00000006.constraints user_0000000a.tx.json user_0000000f.tx user_00000014.summary user_00000019.pkl user_0000001d.tx.json
user_00000001.pkl user_00000006.logs user_0000000b.constraints user_0000000f.tx.json user_00000014.trace user_00000019.summary user_0000001e.constraints
user_00000001.summary user_00000006.pkl user_0000000b.logs user_00000010.constraints user_00000014.tx user_00000019.trace user_0000001e.findings
user_00000001.trace user_00000006.summary user_0000000b.pkl user_00000010.logs user_00000014.tx.json user_00000019.tx user_0000001e.logs
user_00000001.tx user_00000006.trace user_0000000b.summary user_00000010.pkl user_00000015.constraints user_00000019.tx.json user_0000001e.pkl
user_00000001.tx.json user_00000006.tx user_0000000b.trace user_00000010.summary user_00000015.logs user_0000001a.constraints user_0000001e.summary
user_00000002.constraints user_00000006.tx.json user_0000000b.tx user_00000010.trace user_00000015.pkl user_0000001a.logs user_0000001e.trace
user_00000002.logs user_00000007.constraints user_0000000b.tx.json user_00000010.tx user_00000015.summary user_0000001a.pkl user_0000001e.tx
user_00000002.pkl user_00000007.logs user_0000000c.constraints user_00000010.tx.json user_00000015.trace user_0000001a.summary user_0000001e.tx.json
user_00000002.summary user_00000007.pkl user_0000000c.logs user_00000011.constraints user_00000015.tx user_0000001a.trace user_0000001f.constraints
user_00000002.trace user_00000007.summary user_0000000c.pkl user_00000011.logs user_00000015.tx.json user_0000001a.tx user_0000001f.findings
user_00000002.tx user_00000007.trace user_0000000c.summary user_00000011.pkl user_00000016.constraints user_0000001a.tx.json user_0000001f.logs
user_00000002.tx.json user_00000007.tx user_0000000c.trace user_00000011.summary user_00000016.logs user_0000001b.constraints user_0000001f.pkl
user_00000003.constraints user_00000007.tx.json user_0000000c.tx user_00000011.trace user_00000016.pkl user_0000001b.logs user_0000001f.summary
user_00000003.logs user_00000008.constraints user_0000000c.tx.json user_00000011.tx user_00000016.summary user_0000001b.pkl user_0000001f.trace
user_00000003.pkl user_00000008.logs user_0000000d.constraints user_00000011.tx.json user_00000016.trace user_0000001b.summary user_0000001f.tx
user_00000003.summary user_00000008.pkl user_0000000d.logs user_00000012.constraints user_00000016.tx user_0000001b.trace user_0000001f.tx.json