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": "
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>