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

56 lines
41 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": "142 JUMPDEST fallback\n143 PUSH1 0x00\n145 DUP1\n146 REVERT", "id": "1027", "isExpanded": false, "label": "142 JUMPDEST fallback\n143 PUSH1 0x00\n145 DUP1\n146 REVERT", "size": 150, "truncLabel": "142 JUMPDEST fallback\n143 PUSH1 0x00\n145 DUP1\n146 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "180 JUMPDEST _function_0x01d4277c\n181 STOP", "id": "1033", "isExpanded": false, "label": "180 JUMPDEST _function_0x01d4277c\n181 STOP", "size": 150, "truncLabel": "180 JUMPDEST _function_0x01d4277c\n181 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "430 JUMPDEST _function_0x01d4277c\n431 POP\n432 POP\n433 JUMP", "id": "1032", "isExpanded": false, "label": "430 JUMPDEST _function_0x01d4277c\n431 POP\n432 POP\n433 JUMP", "size": 150, "truncLabel": "430 JUMPDEST _function_0x01d4277c\n431 POP\n432 POP\n433 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "180 JUMPDEST _function_0x01d4277c\n181 STOP", "id": "1036", "isExpanded": false, "label": "180 JUMPDEST _function_0x01d4277c\n181 STOP", "size": 150, "truncLabel": "180 JUMPDEST _function_0x01d4277c\n181 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "425 JUMPDEST _function_0x01d4277c\n426 ADD\n427 SLOAD\n428 SWAP1\n429 POP\n430 JUMPDEST _function_0x01d4277c\n431 POP\n432 POP\n433 JUMP", "id": "1035", "isExpanded": false, "label": "425 JUMPDEST _function_0x01d4277c\n426 ADD\n427 SLOAD\n428 SWAP1\n429 POP\n430 JUMPDEST _function_0x01d4277c\n(click to expand +)", "size": 150, "truncLabel": "425 JUMPDEST _function_0x01d4277c\n426 ADD\n427 SLOAD\n428 SWAP1\n429 POP\n430 JUMPDEST _function_0x01d4277c\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 ASSERT_FAIL", "id": "1037", "isExpanded": false, "label": "424 ASSERT_FAIL", "size": 150, "truncLabel": "424 ASSERT_FAIL"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "411 PUSH1 0x00\n413 DUP3\n414 PUSH1 0x08\n416 DUP2\n417 LT\n418 ISZERO\n419 ISZERO\n420 PUSH2 0x01a9\n423 JUMPI", "id": "1034", "isExpanded": false, "label": "411 PUSH1 0x00\n413 DUP3\n414 PUSH1 0x08\n416 DUP2\n417 LT\n418 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "411 PUSH1 0x00\n413 DUP3\n414 PUSH1 0x08\n416 DUP2\n417 LT\n418 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "399 JUMPDEST _function_0x01d4277c\n400 PUSH1 0x00\n402 PUSH1 0x08\n404 DUP3\n405 LT\n406 ISZERO\n407 PUSH2 0x01ae\n410 JUMPI", "id": "1031", "isExpanded": false, "label": "399 JUMPDEST _function_0x01d4277c\n400 PUSH1 0x00\n402 PUSH1 0x08\n404 DUP3\n405 LT\n406 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "399 JUMPDEST _function_0x01d4277c\n400 PUSH1 0x00\n402 PUSH1 0x08\n404 DUP3\n405 LT\n406 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "158 JUMPDEST _function_0x01d4277c\n159 PUSH2 0x00b4\n162 PUSH1 0x04\n164 DUP1\n165 DUP1\n166 CALLDATALOAD\n167 SWAP1\n168 PUSH1 0x20\n170 ADD\n171 SWAP1\n172 SWAP2\n173 SWAP1\n174 POP\n175 POP\n176 PUSH2 0x018f\n179 JUMP", "id": "1030", "isExpanded": false, "label": "158 JUMPDEST _function_0x01d4277c\n159 PUSH2 0x00b4\n162 PUSH1 0x04\n164 DUP1\n165 DUP1\n166 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "158 JUMPDEST _function_0x01d4277c\n159 PUSH2 0x00b4\n162 PUSH1 0x04\n164 DUP1\n165
var edges = [{"arrows": "to", "from": "1026", "label": "Not(ULE(4, calldatasize_Unknown))", "smooth": {"type": "cubicBezier"}, "to": "1027"}, {"arrows": "to", "from": "1032", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1033"}, {"arrows": "to", "from": "1031", "label": "ULE(8, calldata_Unknown_4)", "smooth": {"type": "cubicBezier"}, "to": "1032"}, {"arrows": "to", "from": "1035", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1036"}, {"arrows": "to", "from": "1034", "label": "Not(ULE(8, calldata_Unknown_4))", "smooth": {"type": "cubicBezier"}, "to": "1035"}, {"arrows": "to", "from": "1034", "label": "ULE(8, calldata_Unknown_4)", "smooth": {"type": "cubicBezier"}, "to": "1037"}, {"arrows": "to", "from": "1031", "label": "Not(ULE(8, calldata_Unknown_4))", "smooth": {"type": "cubicBezier"}, "to": "1034"}, {"arrows": "to", "from": "1030", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1031"}, {"arrows": "to", "from": "1029", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "1030"}, {"arrows": "to", "from": "1029", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "1038"}, {"arrows": "to", "from": "1028", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x1d4277c", "smooth": {"type": "cubicBezier"}, "to": "1029"}, {"arrows": "to", "from": "1043", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1044"}, {"arrows": "to", "from": "1042", "label": "Not(calldata_Unknown_4 == 23)", "smooth": {"type": "cubicBezier"}, "to": "1043"}, {"arrows": "to", "from": "1042", "label": "calldata_Unknown_4 == 23", "smooth": {"type": "cubicBezier"}, "to": "1045"}, {"arrows": "to", "from": "1041", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1042"}, {"arrows": "to", "from": "1040", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "1041"}, {"arrows": "to", "from": "1040", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "1046"}, {"arrows": "to", "from": "1039", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x546455b5", "smooth": {"type": "cubicBezier"}, "to": "1040"}, {"arrows": "to", "from": "1051", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1052"}, {"arrows": "to", "from": "1050", "label": "Not(calldata_Unknown_4 == 23)", "smooth": {"type": "cubicBezier"}, "to": "1051"}, {"arrows": "to", "from": "1050", "label": "calldata_Unknown_4 == 23", "smooth": {"type": "cubicBezier"}, "to": "1053"}, {"arrows": "to", "from": "1049", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1050"}, {"arrows": "to", "from": "1048", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "1049"}, {"arrows": "to", "from": "1048", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "1054"}, {"arrows": "to", "from": "1047", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x78375f14", "smooth": {"type": "cubicBezier"}, "to": "1048"}, {"arrows": "to", "from": "1059", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1060"}, {"arrows": "to", "from": "1058", "label": "Not(ULE(8, calldata_Unknown_4))", "smooth": {"type": "cubicBezier"}, "to": "1059"}, {"arrows": "to", "from": "1058", "label": "ULE(8, calldata_Unknown_4)", "smooth": {"type": "cubicBezier"}, "to": "1061"}, {"arrows": "to", "from": "1057", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1058"}, {"arrows": "to", "from": "1056", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "1057"}, {"arrows": "to", "from": "1056", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "1062"}, {"arrows": "to", "from": "1055", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x92dd38ea", "smooth": {"type": "cubicBezier"}, "to": "1056"}, {"arrows": "to", "from": "1067", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1068"}, {"arrows": "to", "from": "1066", "label": "Not(calldata_Unknown_4 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1067"}, {"arrows": "to", "from": "1066", "label": "calldata_Unknown_4 == 0", "smooth": {"type": "cubicBezier"}, "to": "1069"}, {"arrows":
</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>