Security analysis tool for EVM bytecode. Supports smart contracts built for Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
mythril/tests/testdata/outputs_expected/environments.sol.o.graph.html

56 lines
16 KiB

<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
<style type="text/css">
#mynetwork {
background-color: #232625;
}
body {
background-color: #232625;
color: #ffffff;
font-size: 10px;
}
</style>
<script>
var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI", "id": "315", "isExpanded": false, "label": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "316", "isExpanded": false, "label": "77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x06661abd\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI", "id": "317", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "82 CALLVALUE\n83 DUP1\n84 ISZERO\n85 PUSH2 0x005d\n88 JUMPI", "id": "318", "isExpanded": false, "label": "82 CALLVALUE\n83 DUP1\n84 ISZERO\n85 PUSH2 0x005d\n88 JUMPI", "size": 150, "truncLabel": "82 CALLVALUE\n83 DUP1\n84 ISZERO\n85 PUSH2 0x005d\n88 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x83f12fec\n71 EQ\n72 PUSH2 0x007c\n75 JUMPI", "id": "319", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x83f12fec\n71 EQ\n72 PUSH2 0x007c\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x83f12fec\n71 EQ\n72 PUSH2 0x007c\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "125 CALLVALUE\n126 DUP1\n127 ISZERO\n128 PUSH2 0x0088\n131 JUMPI", "id": "320", "isExpanded": false, "label": "125 CALLVALUE\n126 DUP1\n127 ISZERO\n128 PUSH2 0x0088\n131 JUMPI", "size": 150, "truncLabel": "125 CALLVALUE\n126 DUP1\n127 ISZERO\n128 PUSH2 0x0088\n131 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "321", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "137 POP\n138 PUSH2 0x00ea\n141 PUSH1 0x04\n143 DUP1\n144 CALLDATASIZE\n145 SUB\n146 DUP2\n147 ADD\n148 SWAP1\n149 DUP1\n150 DUP1\n151 CALLDATALOAD\n152 SWAP1\n153 PUSH1 0x20\n155 ADD\n156 SWAP1\n157 DUP3\n158 ADD\n159 DUP1\n160 CALLDATALOAD\n161 SWAP1\n162 PUSH1 0x20\n164 ADD\n165 SWAP1\n166 DUP1\n167 DUP1\n168 PUSH1 0x20\n170 MUL\n171 PUSH1 0x20\n173 ADD\n174 PUSH1 0x40\n176 MLOAD\n177 SWAP1\n178 DUP2\n179 ADD\n180 PUSH1 0x40\n182 MSTORE\n183 DUP1\n184 SWAP4\n185 SWAP3\n186 SWAP2\n187 SWAP1\n188 DUP2\n189 DUP2\n190 MSTORE\n191 PUSH1 0x20\n193 ADD\n194 DUP4\n195 DUP4\n196 PUSH1 0x20\n198 MUL\n199 DUP1\n200 DUP3\n201 DUP5\n202 CALLDATACOPY\n203 DUP3\n204 ADD\n205 SWAP2\n206 POP\n207 POP\n208 POP\n209 POP\n210 POP\n211 POP\n212 SWAP2\n213 SWAP3\n214 SWAP2\n215 SWAP3\n216 SWAP1\n217 DUP1\n218 CALLDATALOAD\n219 SWAP1\n220 PUSH1 0x20\n222 ADD\n223 SWAP1\n224 SWAP3\n225 SWAP2\n226 SWAP1\n227 POP\n228 POP\n229 POP\n230 PUSH2 0x010a\n233 JUMP", "id": "322", "isExpanded": false, "label": "137 POP\n138 PUSH2 0x00ea\n141 PUSH1 0x04\n143 DUP1\n144 CALLDATASIZE\n145 SUB\n(click to expand +)", "size": 150, "truncLabel": "137 POP\n138 PUSH2 0x00ea\n141 PUSH1 0x04\n143 DUP1\n144 CALLDATASIZE\n145 SUB\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "132 PUSH1 0x00\n134 DUP1\n135 REVERT", "id": "323", "isExpanded": false, "label": "132 PUSH1 0x00\n134 DUP1\n135 REVERT", "size": 150, "truncLabel": "132 PUSH1 0x00\n134 DUP1\n135 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 PUSH1 0x00\n269 DUP1\n270 PUSH1 0x00\n272 DUP5\n273 MLOAD\n274 SWAP2\n275 POP\n276 DUP4\n277 DUP3\n278 MUL\n279 SWAP1\n280 POP\n281 PUSH1 0x00\n283 DUP3\n284 GT\n285 DUP1\n286 ISZERO\n287 PUSH2 0x0129\n290 JUMPI", "id": "324", "isExpanded": false, "label": "267 PUSH1 0x00\n269 DUP1\n270 PUSH1 0x00\n272 DUP5\n273 MLOAD\n274 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "267 PUSH1 0x00\n269 DUP1\n270 PUSH1 0x00\n272 DUP5\n273 MLOAD\n274 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI", "id": "325", "isExpanded": false, "label": "298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI", "size": 150, "truncLabel": "298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "291 POP\n292 PUSH1 0x14\n294 DUP3\n295 GT\n296 ISZERO\n297 JUMPDEST\n298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI", "id": "326", "isExpanded": false, "label": "291 POP\n292 PUSH1 0x14\n294 DUP3\n295 GT\n296 ISZERO\n297 JUMPDEST\n(click to expand +)", "size": 150, "truncLabel": "291 POP\n292 PUSH1 0x14\n294 DUP3\n295 GT\n296 ISZERO\n297 JUMPDEST\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n336 AND\n337 PUSH20 0xffffffff(...)\n358 AND\n359 DUP2\n360 MSTORE\n361 PUSH1 0x20\n363 ADD\n364 SWAP1\n365 DUP2\n366 MSTORE\n367 PUSH1 0x20\n369 ADD\n370 PUSH1 0x00\n372 SHA3\n373 PUSH1 0x00\n375 DUP3\n376 DUP3\n377 SLOAD\n378 SUB\n379 SWAP3\n380 POP\n381 POP\n382 DUP2\n383 SWAP1\n384 SSTORE\n385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n392 SWAP3\n393 SWAP2\n394 POP\n395 POP\n396 JUMP", "id": "327", "isExpanded": false, "label": "309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n336 AND\n(click to expand +)", "size": 150, "truncLabel": "309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n336 AND\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "304 PUSH1 0x00\n306 DUP1\n307 REVERT", "id": "328", "isExpanded": false, "label": "304 PUSH1 0x00\n306 DUP1\n307 REVERT", "size": 150, "truncLabel": "304 PUSH1 0x00\n306 DUP1\n307 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n242 ISZERO\n243 ISZERO\n244 DUP2\n245 MSTORE\n246 PUSH1 0x20\n248 ADD\n249 SWAP2\n250 POP\n251 POP\n252 PUSH1 0x40\n254 MLOAD\n255 DUP1\n256 SWAP2\n257 SUB\n258 SWAP1\n259 RETURN", "id": "329", "isExpanded": false, "label": "235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n336 AND\n337 PUSH20 0xffffffff(...)\n358 AND\n359 DUP2\n360 MSTORE\n361 PUSH1 0x20\n363 ADD\n364 SWAP1\n365 DUP2\n366 MSTORE\n367 PUSH1 0x20\n369 ADD\n370 PUSH1 0x00\n372 SHA3\n373 PUSH1 0x00\n375 DUP3\n376 DUP3\n377 SLOAD\n378 SUB\n379 SWAP3\n380 POP\n381 POP\n382 DUP2\n383 SWAP1\n384 SSTORE\n385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n392 SWAP3\n393 SWAP2\n394 POP\n395 POP\n396 JUMP", "id": "330", "isExpanded": false, "label": "309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n336 AND\n(click to expand +)", "size": 150, "truncLabel": "309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n336 AND\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "304 PUSH1 0x00\n306 DUP1\n307 REVERT", "id": "331", "isExpanded": false, "label": "304 PUSH1 0x00\n306 DUP1\n307 REVERT", "size": 150, "truncLabel": "304 PUSH1 0x00\n306 DUP1\n307 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n242 ISZERO\n243 ISZERO\n244 DUP2\n245 MSTORE\n246 PUSH1 0x20\n248 ADD\n249 SWAP2\n250 POP\n251 POP\n252 PUSH1 0x40\n254 MLOAD\n255 DUP1\n256 SWAP2\n257 SUB\n258 SWAP1\n259 RETURN", "id": "332", "isExpanded": false, "label": "235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "94 POP\n95 PUSH2 0x0066\n98 PUSH2 0x0104\n101 JUMP", "id": "333", "isExpanded": false, "label": "94 POP\n95 PUSH2 0x0066\n98 PUSH2 0x0104\n101 JUMP", "size": 150, "truncLabel": "94 POP\n95 PUSH2 0x0066\n98 PUSH2 0x0104\n101 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "89 PUSH1 0x00\n91 DUP1\n92 REVERT", "id": "334", "isExpanded": false, "label": "89 PUSH1 0x00\n91 DUP1\n92 REVERT", "size": 150, "truncLabel": "89 PUSH1 0x00\n91 DUP1\n92 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "261 PUSH1 0x00\n263 SLOAD\n264 DUP2\n265 JUMP", "id": "335", "isExpanded": false, "label": "261 PUSH1 0x00\n263 SLOAD\n264 DUP2\n265 JUMP", "size": 150, "truncLabel": "261 PUSH1 0x00\n263 SLOAD\n264 DUP2\n265 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 PUSH1 0x40\n105 MLOAD\n106 DUP1\n107 DUP3\n108 DUP2\n109 MSTORE\n110 PUSH1 0x20\n112 ADD\n113 SWAP2\n114 POP\n115 POP\n116 PUSH1 0x40\n118 MLOAD\n119 DUP1\n120 SWAP2\n121 SUB\n122 SWAP1\n123 RETURN", "id": "336", "isExpanded": false, "label": "103 PUSH1 0x40\n105 MLOAD\n106 DUP1\n107 DUP3\n108 DUP2\n109 MSTORE\n(click to expand +)", "size": 150, "truncLabel": "103 PUSH1 0x40\n105 MLOAD\n106 DUP1\n107 DUP3\n108 DUP2\n109 MSTORE\n(click to expand +)"}];
var edges = [{"arrows": "to", "from": "315", "label": "Not(ULE(4, calldatasize_Unknown))", "smooth": {"type": "cubicBezier"}, "to": "316"}, {"arrows": "to", "from": "315", "label": "ULE(4, calldatasize_Unknown)", "smooth": {"type": "cubicBezier"}, "to": "317"}, {"arrows": "to", "from": "317", "label": "Extract(0xff, 0xe0, calldata_Unknown[0]) == 0x6661abd", "smooth": {"type": "cubicBezier"}, "to": "318"}, {"arrows": "to", "from": "317", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown[0]) == 0x6661abd)", "smooth": {"type": "cubicBezier"}, "to": "319"}, {"arrows": "to", "from": "319", "label": "Extract(0xff, 0xe0, calldata_Unknown[0]) == 0x83f12fec", "smooth": {"type": "cubicBezier"}, "to": "320"}, {"arrows": "to", "from": "319", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown[0]) == 0x83f12fec)", "smooth": {"type": "cubicBezier"}, "to": "321"}, {"arrows": "to", "from": "320", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "322"}, {"arrows": "to", "from": "320", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "323"}, {"arrows": "to", "from": "322", "label": "", "smooth": {"type": "cubicBezier"}, "to": "324"}, {"arrows": "to", "from": "324", "label": "calldata_Unknown[4 + calldata_Unknown[4]] == 0", "smooth": {"type": "cubicBezier"}, "to": "325"}, {"arrows": "to", "from": "324", "label": "Not(calldata_Unknown[4 + calldata_Unknown[4]] == 0)", "smooth": {"type": "cubicBezier"}, "to": "326"}, {"arrows": "to", "from": "326", "label": "And(Extract(0xff, 5, calldata_Unknown[4 + calldata_Unknown[4]]) == 0, ULE(Extract(4, 0, calldata_Unknown[4 + calldata_Unknown[4]]), 20))", "smooth": {"type": "cubicBezier"}, "to": "327"}, {"arrows": "to", "from": "326", "label": "Not(And(Extract(0xff, 5, calldata_Unknown[4 + calldata_Unknown[4]]) == 0, ULE(Extract(4, 0, calldata_Unknown[4 + calldata_Unknown[4]]), 20)))", "smooth": {"type": "cubicBezier"}, "to": "328"}, {"arrows": "to", "from": "327", "label": "", "smooth": {"type": "cubicBezier"}, "to": "329"}, {"arrows": "to", "from": "325", "label": "Not(calldata_Unknown[4 + calldata_Unknown[4]] == 0)", "smooth": {"type": "cubicBezier"}, "to": "330"}, {"arrows": "to", "from": "325", "label": "calldata_Unknown[4 + calldata_Unknown[4]] == 0", "smooth": {"type": "cubicBezier"}, "to": "331"}, {"arrows": "to", "from": "330", "label": "", "smooth": {"type": "cubicBezier"}, "to": "332"}, {"arrows": "to", "from": "318", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "333"}, {"arrows": "to", "from": "318", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "334"}, {"arrows": "to", "from": "333", "label": "", "smooth": {"type": "cubicBezier"}, "to": "335"}, {"arrows": "to", "from": "335", "label": "", "smooth": {"type": "cubicBezier"}, "to": "336"}];
</script>
</head>
<body>
<p>Mythril / Ethereum LASER Symbolic VM</p>
<p><div id="mynetwork"></div><br/></p>
<script type="text/javascript">
var container = document.getElementById('mynetwork');
var nodesSet = new vis.DataSet(nodes);
var edgesSet = new vis.DataSet(edges);
var data = {'nodes': nodesSet, 'edges': edgesSet}
var gph = new vis.Network(container, data, options);
gph.on("click", function (params) {
// parse node id
var nodeID = params['nodes']['0'];
if (nodeID) {
var clickedNode = nodesSet.get(nodeID);
if(clickedNode.isExpanded) {
clickedNode.label = clickedNode.truncLabel;
}
else {
clickedNode.label = clickedNode.fullLabel;
}
clickedNode.isExpanded = !clickedNode.isExpanded;
nodesSet.update(clickedNode);
}
});
</script>
</body>
</html>