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

56 lines
43 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": "128 JUMPDEST fallback\n129 STOP", "id": "965", "isExpanded": false, "label": "128 JUMPDEST fallback\n129 STOP", "size": 150, "truncLabel": "128 JUMPDEST fallback\n129 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "414 JUMPDEST fallback\n415 CALLVALUE\n416 PUSH1 0x00\n418 DUP1\n419 CALLER\n420 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n441 AND\n442 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n463 AND\n464 DUP2\n465 MSTORE\n466 PUSH1 0x20\n468 ADD\n469 SWAP1\n470 DUP2\n471 MSTORE\n472 PUSH1 0x20\n474 ADD\n475 PUSH1 0x00\n477 SHA3\n478 PUSH1 0x00\n480 DUP3\n481 DUP3\n482 SLOAD\n483 ADD\n484 SWAP3\n485 POP\n486 POP\n487 DUP2\n488 SWAP1\n489 SSTORE\n490 POP\n491 JUMP", "id": "964", "isExpanded": false, "label": "414 JUMPDEST fallback\n415 CALLVALUE\n416 PUSH1 0x00\n418 DUP1\n419 CALLER\n420 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n(click to expand +)", "size": 150, "truncLabel": "414 JUMPDEST fallback\n415 CALLVALUE\n416 PUSH1 0x00\n418 DUP1\n419 CALLER\n420 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "410 PUSH1 0x00\n412 DUP1\n413 REVERT", "id": "966", "isExpanded": false, "label": "410 PUSH1 0x00\n412 DUP1\n413 REVERT", "size": 150, "truncLabel": "410 PUSH1 0x00\n412 DUP1\n413 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "403 JUMPDEST fallback\n404 ISZERO\n405 ISZERO\n406 PUSH2 0x019e\n409 JUMPI", "id": "963", "isExpanded": false, "label": "403 JUMPDEST fallback\n404 ISZERO\n405 ISZERO\n406 PUSH2 0x019e\n409 JUMPI", "size": 150, "truncLabel": "403 JUMPDEST fallback\n404 ISZERO\n405 ISZERO\n406 PUSH2 0x019e\n409 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "128 JUMPDEST fallback\n129 STOP", "id": "969", "isExpanded": false, "label": "128 JUMPDEST fallback\n129 STOP", "size": 150, "truncLabel": "128 JUMPDEST fallback\n129 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "414 JUMPDEST fallback\n415 CALLVALUE\n416 PUSH1 0x00\n418 DUP1\n419 CALLER\n420 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n441 AND\n442 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n463 AND\n464 DUP2\n465 MSTORE\n466 PUSH1 0x20\n468 ADD\n469 SWAP1\n470 DUP2\n471 MSTORE\n472 PUSH1 0x20\n474 ADD\n475 PUSH1 0x00\n477 SHA3\n478 PUSH1 0x00\n480 DUP3\n481 DUP3\n482 SLOAD\n483 ADD\n484 SWAP3\n485 POP\n486 POP\n487 DUP2\n488 SWAP1\n489 SSTORE\n490 POP\n491 JUMP", "id": "968", "isExpanded": false, "label": "414 JUMPDEST fallback\n415 CALLVALUE\n416 PUSH1 0x00\n418 DUP1\n419 CALLER\n420 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n(click to expand +)", "size": 150, "truncLabel": "414 JUMPDEST fallback\n415 CALLVALUE\n416 PUSH1 0x00\n418 DUP1\n419 CALLER\n420 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "410 PUSH1 0x00\n412 DUP1\n413 REVERT", "id": "970", "isExpanded": false, "label": "410 PUSH1 0x00\n412 DUP1\n413 REVERT", "size": 150, "truncLabel": "410 PUSH1 0x00\n412 DUP1\n413 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "397 POP\n398 PUSH1 0x03\n400 SLOAD\n401 CALLVALUE\n402 LT\n403 JUMPDEST fallback\n404 ISZERO\n405 ISZERO\n406 PUSH2 0x019e\n409 JUMPI", "id": "967", "isExpanded": false, "label": "397 POP\n398 PUSH1 0x03\n400 SLOAD\n401 CALLVALUE\n402 LT\n403 JUMPDEST fallback\n(click to
var edges = [{"arrows": "to", "from": "964", "label": "", "smooth": {"type": "cubicBezier"}, "to": "965"}, {"arrows": "to", "from": "963", "label": "Not(ULE(callvalue, storage_2))", "smooth": {"type": "cubicBezier"}, "to": "964"}, {"arrows": "to", "from": "963", "label": "ULE(callvalue, storage_2)", "smooth": {"type": "cubicBezier"}, "to": "966"}, {"arrows": "to", "from": "962", "label": "ULE(callvalue, storage_2)", "smooth": {"type": "cubicBezier"}, "to": "963"}, {"arrows": "to", "from": "968", "label": "", "smooth": {"type": "cubicBezier"}, "to": "969"}, {"arrows": "to", "from": "967", "label": "Not(ULE(storage_3, callvalue))", "smooth": {"type": "cubicBezier"}, "to": "968"}, {"arrows": "to", "from": "967", "label": "ULE(storage_3, callvalue)", "smooth": {"type": "cubicBezier"}, "to": "970"}, {"arrows": "to", "from": "962", "label": "Not(ULE(callvalue, storage_2))", "smooth": {"type": "cubicBezier"}, "to": "967"}, {"arrows": "to", "from": "961", "label": "", "smooth": {"type": "cubicBezier"}, "to": "962"}, {"arrows": "to", "from": "960", "label": "Not(ULE(4, calldatasize_Unknown))", "smooth": {"type": "cubicBezier"}, "to": "961"}, {"arrows": "to", "from": "974", "label": "", "smooth": {"type": "cubicBezier"}, "to": "975"}, {"arrows": "to", "from": "973", "label": "", "smooth": {"type": "cubicBezier"}, "to": "974"}, {"arrows": "to", "from": "972", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "973"}, {"arrows": "to", "from": "972", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "976"}, {"arrows": "to", "from": "971", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x12065fe0", "smooth": {"type": "cubicBezier"}, "to": "972"}, {"arrows": "to", "from": "980", "label": "", "smooth": {"type": "cubicBezier"}, "to": "981"}, {"arrows": "to", "from": "979", "label": "", "smooth": {"type": "cubicBezier"}, "to": "980"}, {"arrows": "to", "from": "978", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "979"}, {"arrows": "to", "from": "978", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "982"}, {"arrows": "to", "from": "977", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x27e235e3", "smooth": {"type": "cubicBezier"}, "to": "978"}, {"arrows": "to", "from": "986", "label": "", "smooth": {"type": "cubicBezier"}, "to": "987"}, {"arrows": "to", "from": "985", "label": "", "smooth": {"type": "cubicBezier"}, "to": "986"}, {"arrows": "to", "from": "984", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "985"}, {"arrows": "to", "from": "984", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "988"}, {"arrows": "to", "from": "983", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x56885cd8", "smooth": {"type": "cubicBezier"}, "to": "984"}, {"arrows": "to", "from": "994", "label": "", "smooth": {"type": "cubicBezier"}, "to": "995"}, {"arrows": "to", "from": "993", "label": "Not(retval_816 == 0)", "smooth": {"type": "cubicBezier"}, "to": "994"}, {"arrows": "to", "from": "993", "label": "retval_816 == 0", "smooth": {"type": "cubicBezier"}, "to": "996"}, {"arrows": "to", "from": "992", "label": "Extract(0x9f, 0, caller) == Extract(0xa7, 8, storage_1)", "smooth": {"type": "cubicBezier"}, "to": "993"}, {"arrows": "to", "from": "992", "label": "Not(Extract(0x9f, 0, caller) == Extract(0xa7, 8, storage_1))", "smooth": {"type": "cubicBezier"}, "to": "997"}, {"arrows": "to", "from": "991", "label": "", "smooth": {"type": "cubicBezier"}, "to": "992"}, {"arrows": "to", "from": "990", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "991"}, {"arrows": "to", "from": "990", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "998"}, {"arrows": "to", "from": "989", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x6c343ffe", "smooth": {"type": "cubicBezier"}, "to": "990"}, {"arrows": "to", "from": "1002", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1003"}, {"arrows": "to", "from": "1001", "label": "", "smooth": {"type": "cubicBezier"}, "to": "10
</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>