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

56 lines
424 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": "461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP", "id": "6", "isExpanded": false, "label": "461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP", "size": 150, "truncLabel": "461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "460 JUMPDEST fallback\n461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP", "id": "8", "isExpanded": false, "label": "460 JUMPDEST fallback\n461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP", "size": 150, "truncLabel": "460 JUMPDEST fallback\n461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "456 PUSH1 0x00\n458 DUP1\n459 REVERT", "id": "9", "isExpanded": false, "label": "456 PUSH1 0x00\n458 DUP1\n459 REVERT", "size": 150, "truncLabel": "456 PUSH1 0x00\n458 DUP1\n459 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "397 CALLER\n398 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n419 AND\n420 PUSH2 0x08fc\n423 DUP4\n424 SWAP1\n425 DUP2\n426 ISZERO\n427 MUL\n428 SWAP1\n429 PUSH1 0x40\n431 MLOAD\n432 PUSH1 0x00\n434 PUSH1 0x40\n436 MLOAD\n437 DUP1\n438 DUP4\n439 SUB\n440 DUP2\n441 DUP6\n442 DUP9\n443 DUP9\n444 CALL\n445 SWAP4\n446 POP\n447 POP\n448 POP\n449 POP\n450 ISZERO\n451 ISZERO\n452 PUSH2 0x01cc\n455 JUMPI", "id": "7", "isExpanded": false, "label": "397 CALLER\n398 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n419 AND\n420 PUSH2 0x08fc\n423 DUP4\n424 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "397 CALLER\n398 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n419 AND\n420 PUSH2 0x08fc\n423 DUP4\n424 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "387 JUMPDEST fallback\n388 PUSH1 0x00\n390 DUP3\n391 GT\n392 ISZERO\n393 PUSH2 0x01cd\n396 JUMPI", "id": "5", "isExpanded": false, "label": "387 JUMPDEST fallback\n388 PUSH1 0x00\n390 DUP3\n391 GT\n392 ISZERO\n393 PUSH2 0x01cd\n(click to expand +)", "size": 150, "truncLabel": "387 JUMPDEST fallback\n388 PUSH1 0x00\n390 DUP3\n391 GT\n392 ISZERO\n393 PUSH2 0x01cd\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP", "id": "17", "isExpanded": false, "label": "461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP", "size": 150, "truncLabel": "461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "460 JUMPDEST fallback\n461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP", "id": "19", "isExpanded": false, "label": "460 JUMPDEST fallback\n461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP", "size": 150, "truncLabel": "460 JUMPDEST fallback\n461 JUMPDEST fallback\n462 POP\n463 POP\n464 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "456 PUSH1 0x00\n458 DUP1\n459 REVERT", "id": "20", "isExpanded": false, "label": "456 PUSH1 0x00\n458 DUP1\n459 REVERT", "size": 150, "truncLabel": "456 PUSH1 0x00\n458 DUP1\n459 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "397 CALLER\n398 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n419 AND\n420 PUSH2 0x08fc\n423 DUP4\n424 SWAP1\n425 DUP2\n426 ISZERO\n427 MUL\n428 SWAP1\n429 PUSH1 0x40\n431 MLOAD\n432 PUSH1 0x00\n434 PUSH1 0x40\n436 MLOAD\n437 DUP1\n438 DUP4\n439 SUB\n440 DUP2\n441 DUP6\n442 DUP9\n443 DUP9\n444 CALL\n445 SW
var edges = [{"arrows": "to", "from": "5", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "6"}, {"arrows": "to", "from": "7", "label": "Not(retval_444 == 0)", "smooth": {"type": "cubicBezier"}, "to": "8"}, {"arrows": "to", "from": "7", "label": "retval_444 == 0", "smooth": {"type": "cubicBezier"}, "to": "9"}, {"arrows": "to", "from": "5", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "7"}, {"arrows": "to", "from": "4", "label": "Not(storage_1 == 50)", "smooth": {"type": "cubicBezier"}, "to": "5"}, {"arrows": "to", "from": "16", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "17"}, {"arrows": "to", "from": "18", "label": "Not(retval_444 == 0)", "smooth": {"type": "cubicBezier"}, "to": "19"}, {"arrows": "to", "from": "18", "label": "retval_444 == 0", "smooth": {"type": "cubicBezier"}, "to": "20"}, {"arrows": "to", "from": "16", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "18"}, {"arrows": "to", "from": "15", "label": "", "smooth": {"type": "cubicBezier"}, "to": "16"}, {"arrows": "to", "from": "14", "label": "Not(retval_10x11d == 0)", "smooth": {"type": "cubicBezier"}, "to": "15"}, {"arrows": "to", "from": "14", "label": "retval_10x11d == 0", "smooth": {"type": "cubicBezier"}, "to": "21"}, {"arrows": "to", "from": "13", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "14"}, {"arrows": "to", "from": "12", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "13"}, {"arrows": "to", "from": "11", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "12"}, {"arrows": "to", "from": "10", "label": "", "smooth": {"type": "cubicBezier"}, "to": "11"}, {"arrows": "to", "from": "4", "label": "storage_1 == 50", "smooth": {"type": "cubicBezier"}, "to": "10"}, {"arrows": "to", "from": "3", "label": "Not(ULE(0xb1a2bc2ec50000, callvalue))", "smooth": {"type": "cubicBezier"}, "to": "4"}, {"arrows": "to", "from": "28", "label": "callvalue == 0xb1a2bc2ec50000", "smooth": {"type": "cubicBezier"}, "to": "29"}, {"arrows": "to", "from": "30", "label": "Not(retval_444 == 0)", "smooth": {"type": "cubicBezier"}, "to": "31"}, {"arrows": "to", "from": "30", "label": "retval_444 == 0", "smooth": {"type": "cubicBezier"}, "to": "32"}, {"arrows": "to", "from": "28", "label": "Not(callvalue == 0xb1a2bc2ec50000)", "smooth": {"type": "cubicBezier"}, "to": "30"}, {"arrows": "to", "from": "27", "label": "Not(storage_1 == 50)", "smooth": {"type": "cubicBezier"}, "to": "28"}, {"arrows": "to", "from": "36", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "37"}, {"arrows": "to", "from": "35", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "36"}, {"arrows": "to", "from": "34", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "35"}, {"arrows": "to", "from": "33", "label": "", "smooth": {"type": "cubicBezier"}, "to": "34"}, {"arrows": "to", "from": "27", "label": "storage_1 == 50", "smooth": {"type": "cubicBezier"}, "to": "33"}, {"arrows": "to", "from": "26", "label": "Not(ULE(0xb1a2bc2ec50000, 0xffffffffffffffffffffffffffffffffffffffffffffffffff4e5d43d13b0000 + callvalue))", "smooth": {"type": "cubicBezier"}, "to": "27"}, {"arrows": "to", "from": "42", "label": "Not(ULE(0xb1a2bc2ec50000, 0xfffffffffffffffffffffffffffffffffffffffffffffffffe9cba87a2760000 + callvalue))", "smooth": {"type": "cubicBezier"}, "to": "43"}, {"arrows": "to", "from": "44", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "45"}, {"arrows": "to", "from": "42", "label": "ULE(0xb1a2bc2ec50000, 0xfffffffffffffffffffffffffffffffffffffffffffffffffe9cba87a2760000 + callvalue)", "smooth": {"type": "cubicBezier"}, "to": "44"}, {"arrows": "to", "from": "41", "label": "Not(ULE(0xb1a2bc2ec50000, 0xfffffffffffffffffffffffffffffffffffffffffffffffffe9cba87a2760000 + callvalue))", "smooth": {"type": "cubicBezier"}, "to": "42"}, {"arrows": "to", "from": "47", "label": "Not(storage_1 == 50)", "smooth": {"type": "cubicBezier"}, "to": "48"}, {"arrows": "to", "from": "49", "label": "", "smooth": {"type":
</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>