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/kinds_of_calls.sol.o.graph....

56 lines
25 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": "109 JUMPDEST fallback\n110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "541", "isExpanded": false, "label": "109 JUMPDEST fallback\n110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "109 JUMPDEST fallback\n110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "178 JUMPDEST _function_0x141f32ff\n179 STOP", "id": "546", "isExpanded": false, "label": "178 JUMPDEST _function_0x141f32ff\n179 STOP", "size": 150, "truncLabel": "178 JUMPDEST _function_0x141f32ff\n179 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "438 JUMPDEST _function_0x141f32ff\n439 DUP2\n440 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n461 AND\n462 PUSH1 0x40\n464 MLOAD\n465 DUP1\n466 DUP1\n467 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000\n500 DUP2\n501 MSTORE\n502 POP\n503 PUSH1 0x0d\n505 ADD\n506 SWAP1\n507 POP\n508 PUSH1 0x40\n510 MLOAD\n511 DUP1\n512 SWAP2\n513 SUB\n514 SWAP1\n515 SHA3\n516 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n546 SWAP1\n547 DIV\n548 DUP3\n549 PUSH1 0x40\n551 MLOAD\n552 DUP3\n553 PUSH4 0xffffffff\n558 AND\n559 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n589 MUL\n590 DUP2\n591 MSTORE\n592 PUSH1 0x04\n594 ADD\n595 DUP1\n596 DUP3\n597 DUP2\n598 MSTORE\n599 PUSH1 0x20\n601 ADD\n602 SWAP2\n603 POP\n604 POP\n605 PUSH1 0x00\n607 PUSH1 0x40\n609 MLOAD\n610 DUP1\n611 DUP4\n612 SUB\n613 DUP2\n614 PUSH1 0x00\n616 DUP8\n617 GAS\n618 CALLCODE\n619 SWAP3\n620 POP\n621 POP\n622 POP\n623 POP\n624 POP\n625 POP\n626 JUMP", "id": "545", "isExpanded": false, "label": "438 JUMPDEST _function_0x141f32ff\n439 DUP2\n440 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n461 AND\n462 PUSH1 0x40\n464 MLOAD\n(click to expand +)", "size": 150, "truncLabel": "438 JUMPDEST _function_0x141f32ff\n439 DUP2\n440 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n461 AND\n462 PUSH1 0x40\n464 MLOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "125 JUMPDEST _function_0x141f32ff\n126 PUSH2 0x00b2\n129 PUSH1 0x04\n131 DUP1\n132 DUP1\n133 CALLDATALOAD\n134 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n155 AND\n156 SWAP1\n157 PUSH1 0x20\n159 ADD\n160 SWAP1\n161 SWAP2\n162 SWAP1\n163 DUP1\n164 CALLDATALOAD\n165 SWAP1\n166 PUSH1 0x20\n168 ADD\n169 SWAP1\n170 SWAP2\n171 SWAP1\n172 POP\n173 POP\n174 PUSH2 0x01b6\n177 JUMP", "id": "544", "isExpanded": false, "label": "125 JUMPDEST _function_0x141f32ff\n126 PUSH2 0x00b2\n129 PUSH1 0x04\n131 DUP1\n132 DUP1\n133 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "125 JUMPDEST _function_0x141f32ff\n126 PUSH2 0x00b2\n129 PUSH1 0x04\n131 DUP1\n132 DUP1\n133 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "121 PUSH1 0x00\n123 DUP1\n124 REVERT", "id": "547", "isExpanded": false, "label": "121 PUSH1 0x00\n123 DUP1\n124 REVERT", "size": 150, "truncLabel": "121 PUSH1 0x00\n123 DUP1\n124 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST _function_0x141f32ff\n115 CALLVALUE\n116 ISZERO\n117 PUSH2 0x007d\n120 JUMPI", "id": "543", "isExpanded": false, "label": "114 JUMPDEST _function_0x141f32ff\n115 CALLVALUE\n116 ISZERO\n117 PUSH2 0x007d\n120 JUMPI", "size": 150, "truncLabel": "114 JUMPDEST _function_0x141f32ff\n115 CALLVALUE\n116 ISZERO\n117 PUSH2 0x007d\n120 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "199 JUMPDEST _function_0x2e52d606\n200
var edges = [{"arrows": "to", "from": "540", "label": "Not(ULE(4, calldatasize_Unknown))", "smooth": {"type": "cubicBezier"}, "to": "541"}, {"arrows": "to", "from": "545", "label": "", "smooth": {"type": "cubicBezier"}, "to": "546"}, {"arrows": "to", "from": "544", "label": "", "smooth": {"type": "cubicBezier"}, "to": "545"}, {"arrows": "to", "from": "543", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "544"}, {"arrows": "to", "from": "543", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "547"}, {"arrows": "to", "from": "542", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x141f32ff", "smooth": {"type": "cubicBezier"}, "to": "543"}, {"arrows": "to", "from": "551", "label": "", "smooth": {"type": "cubicBezier"}, "to": "552"}, {"arrows": "to", "from": "550", "label": "", "smooth": {"type": "cubicBezier"}, "to": "551"}, {"arrows": "to", "from": "549", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "550"}, {"arrows": "to", "from": "549", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "553"}, {"arrows": "to", "from": "548", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x2e52d606", "smooth": {"type": "cubicBezier"}, "to": "549"}, {"arrows": "to", "from": "557", "label": "", "smooth": {"type": "cubicBezier"}, "to": "558"}, {"arrows": "to", "from": "556", "label": "", "smooth": {"type": "cubicBezier"}, "to": "557"}, {"arrows": "to", "from": "555", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "556"}, {"arrows": "to", "from": "555", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "559"}, {"arrows": "to", "from": "554", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x67e404ce", "smooth": {"type": "cubicBezier"}, "to": "555"}, {"arrows": "to", "from": "563", "label": "", "smooth": {"type": "cubicBezier"}, "to": "564"}, {"arrows": "to", "from": "562", "label": "", "smooth": {"type": "cubicBezier"}, "to": "563"}, {"arrows": "to", "from": "561", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "562"}, {"arrows": "to", "from": "561", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "565"}, {"arrows": "to", "from": "560", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x9b58bc26", "smooth": {"type": "cubicBezier"}, "to": "561"}, {"arrows": "to", "from": "569", "label": "", "smooth": {"type": "cubicBezier"}, "to": "570"}, {"arrows": "to", "from": "568", "label": "", "smooth": {"type": "cubicBezier"}, "to": "569"}, {"arrows": "to", "from": "567", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "568"}, {"arrows": "to", "from": "567", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "571"}, {"arrows": "to", "from": "566", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0xeea4c864", "smooth": {"type": "cubicBezier"}, "to": "567"}, {"arrows": "to", "from": "566", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown_0) == 0xeea4c864)", "smooth": {"type": "cubicBezier"}, "to": "572"}, {"arrows": "to", "from": "560", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown_0) == 0x9b58bc26)", "smooth": {"type": "cubicBezier"}, "to": "566"}, {"arrows": "to", "from": "554", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown_0) == 0x67e404ce)", "smooth": {"type": "cubicBezier"}, "to": "560"}, {"arrows": "to", "from": "548", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown_0) == 0x2e52d606)", "smooth": {"type": "cubicBezier"}, "to": "554"}, {"arrows": "to", "from": "542", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown_0) == 0x141f32ff)", "smooth": {"type": "cubicBezier"}, "to": "548"}, {"arrows": "to", "from": "540", "label": "ULE(4, calldatasize_Unknown)", "smooth": {"type": "cubicBezier"}, "to": "542"}];
</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>