nveloso / conkas Goto Github PK
View Code? Open in Web Editor NEWEthereum Virtual Machine (EVM) Bytecode or Solidity Smart Contract static analysis tool based on symbolic execution
License: GNU Affero General Public License v3.0
Ethereum Virtual Machine (EVM) Bytecode or Solidity Smart Contract static analysis tool based on symbolic execution
License: GNU Affero General Public License v3.0
$ cat demo.hex
608060405234801561001057600080fd5b506004361061007d5760003560e01c8063875bdc6c1161005b578063875bdc6c146104635780638da5cb5b1461049b578063e74f3fbb146104bf578063fc0c546a146104c75761007d565b80630b6d621c146100825780634d08719f146100ed5780636973955d1461041a575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166104cf565b604080516001600160401b039788168152958716602087015293861685850152919094166060840152608083019390935260a082019290925290519081900360c00190f35b610418600480360360c081101561010357600080fd5b810190602081018135600160201b81111561011d57600080fd5b82018360208201111561012f57600080fd5b803590602001918460208302840111600160201b8311171561015057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561019f57600080fd5b8201836020820111156101b157600080fd5b803590602001918460208302840111600160201b831117156101d257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561022157600080fd5b82018360208201111561023357600080fd5b803590602001918460208302840111600160201b8311171561025457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102a357600080fd5b8201836020820111156102b557600080fd5b803590602001918460208302840111600160201b831117156102d657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561032557600080fd5b82018360208201111561033757600080fd5b803590602001918460208302840111600160201b8311171561035857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460208302840111600160201b831117156103da57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061051c945050505050565b005b6104406004803603602081101561043057600080fd5b50356001600160a01b0316610cce565b604080516001600160401b03909316835260208301919091528051918290030190f35b6104896004803603602081101561047957600080fd5b50356001600160a01b0316610eb7565b60408051918252519081900360200190f35b6104a3610ef0565b604080516001600160a01b039092168252519081900360200190f35b610418610eff565b6104a36111bd565b60026020819052600091825260409091208054600182015491909201546001600160401b0380841693600160401b8104821693600160801b8204831693600160c01b909204909216919086565b6001546001600160a01b0316331461057e5760408051600160e51b62461bcd02815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b84518651146105c55760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b835186511461060c5760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b82518651146106535760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b815186511461069a5760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b80518651146106e15760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b60005b8651811015610cc557600260008883815181106106fd57fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002054600160c01b90046001600160401b0316156107865760408051600160e51b62461bcd02815260206004820152601760248201527f746f6b656e2d757365722d6772616e742d657869737473000000000000000000604482015290519081900360640190fd5b85818151811061079257fe5b60200260200101516001600160401b0316600014156107fb5760408051600160e51b62461bcd02815260206004820152601260248201527f73686f756c6420626520706f7369746976650000000000000000000000000000604482015290519081900360640190fd5b600061083f85838151811061080c57fe5b60200260200101516001600160401b031687848151811061082957fe5b60200260200101516111cc90919063ffffffff16565b9050600081116108995760408051600160e51b62461bcd02815260206004820152601a60248201527f302d616d6f756e742d7665737465642d7065722d706572696f64000000000000604482015290519081900360640190fd5b60005460015484516001600160a01b03928316926323b872dd92169030906108f1908890889081106108c757fe5b60200260200101518b88815181106108db57fe5b602002602001015161123990919063ffffffff16565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b15801561094257600080fd5b505af1158015610956573d6000803e3d6000fd5b505050506040513d602081101561096c57600080fd5b50610977905061152a565b6040518060c0016040528087858151811061098e57fe5b60200260200101516001600160401b0316815260200160006001600160401b031681526020018685815181106109c057fe5b60200260200101516001600160401b031681526020018985815181106109e257fe5b60200260200101516001600160401b03168152602001888581518110610a0457fe5b602002602001015181526020016000815250905080600260008b8681518110610a2957fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000908120845181549486015193860151606087015167ffffffffffffffff199096166001600160401b03928316176fffffffffffffffff00000000000000001916600160401b958316959095029490941777ffffffffffffffff000000000000000000000000000000001916600160801b94821694909402939093176001600160c01b0316600160c01b93909416929092029290921781556080830151600182015560a0909201516002909201919091558451859085908110610b0c57fe5b60200260200101511115610bd55760005489516001600160a01b039091169063a9059cbb908b9086908110610b3d57fe5b6020026020010151868681518110610b5157fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610ba857600080fd5b505af1158015610bbc573d6000803e3d6000fd5b505050506040513d6020811015610bd257600080fd5b50505b7f7615a186972eabc0f60985a3bb87fa8d09605913ad595b02eb6e7f11285cf53c898481518110610c0257fe5b6020026020010151898581518110610c1657fe5b6020026020010151898681518110610c2a57fe5b6020026020010151898781518110610c3e57fe5b6020026020010151898881518110610c5257fe5b6020026020010151898981518110610c6657fe5b602090810291909101810151604080516001600160a01b0390981688526001600160401b0396871692880192909252868201949094529184166060860152909216608084015260a0830152519081900360c00190a150506001016106e4565b50505050505050565b600080610cd961152a565b506001600160a01b038316600090815260026020818152604092839020835160c08101855281546001600160401b038082168352600160401b8204811694830194909452600160801b8104841695820195909552600160c01b909404909116606084018190526001820154608085015291015460a0830152421015610d65575060009150819050610eb2565b6000610d8782606001516001600160401b03164261129d90919063ffffffff16565b6040830151835191925062015180830491610db3916001600160401b039091169063ffffffff6112fd16565b6001600160401b0316816001600160401b031610610e18576000610de88460a00151856080015161129d90919063ffffffff16565b60208501518551919250610e0b916001600160401b03169063ffffffff61137a16565b95509350610eb292505050565b6000610e3a8460400151836001600160401b03166113e690919063ffffffff16565b90506000610e5e8560200151836001600160401b031661137a90919063ffffffff16565b85516080870151919250600091610e83916001600160401b031663ffffffff6111cc16565b90506000610ea06001600160401b0384168363ffffffff61146516565b929850919650610eb295505050505050565b915091565b6001600160a01b0381166000908152600260208190526040822090810154600190910154610eea9163ffffffff61129d16565b92915050565b6001546001600160a01b031681565b60005460408051600160e01b63f8023eb302815233600482015290516001600160a01b039092169163f8023eb391602480820192602092909190829003018186803b158015610f4d57600080fd5b505afa158015610f61573d6000803e3d6000fd5b505050506040513d6020811015610f7757600080fd5b505115610fce5760408051600160e51b62461bcd02815260206004820152601260248201527f4c6f636b656420666f7220475620766f74650000000000000000000000000000604482015290519081900360640190fd5b600080610fda33610cce565b9092509050806110345760408051600160e51b62461bcd02815260206004820152601860248201527f746f6b656e2d7a65726f2d616d6f756e742d7665737465640000000000000000604482015290519081900360640190fd5b336000908152600260205260409020805461105f90600160401b90046001600160401b0316846114c1565b81546001600160401b0391909116600160401b026fffffffffffffffff00000000000000001990911617815560028101546110a0908363ffffffff61123916565b60028201556000805460408051600160e01b63a9059cbb0281523360048201526024810186905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b1580156110fd57600080fd5b505af1158015611111573d6000803e3d6000fd5b505050506040513d602081101561112757600080fd5b505161117d5760408051600160e51b62461bcd02815260206004820152601c60248201527f746f6b656e2d73656e6465722d7472616e736665722d6661696c656400000000604482015290519081900360640190fd5b604080513381526020810184905281517f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430929181900390910190a1505050565b6000546001600160a01b031681565b60008082116112255760408051600160e51b62461bcd02815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161123057fe5b04949350505050565b6000828201838110156112965760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156112f75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006001600160401b03831661131557506000610eea565b8282026001600160401b03808416908086169083168161133157fe5b046001600160401b03161461129657604051600160e51b62461bcd0281526004018080602001828103825260218152602001806115606021913960400191505060405180910390fd5b6000826001600160401b0316826001600160401b031611156112f75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b600080826001600160401b0316116114485760408051600160e51b62461bcd02815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000826001600160401b0316846001600160401b03168161123057fe5b60008261147457506000610eea565b8282028284828161148157fe5b041461129657604051600160e51b62461bcd0281526004018080602001828103825260218152602001806115606021913960400191505060405180910390fd5b60008282016001600160401b0380851690821610156112965760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091529056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77446966666572656e74206172726179206c656e67746800000000000000000000a165627a7a723058200b84218a4082d98371b0875b78f51aae51a58c0585ebbfe0fa305fa3fff1f0580029
$ python conkas.py demo.hex
Analysing demo.hex...
Traceback (most recent call last):
File "conkas.py", line 105, in main
ssa = Recover(bytecode, edges=[], optimize=True)
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 768, in __init__
self.internal = InternalRecover(filedata, edges, optimize, split_functions)
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 37, in __init__
self.guarenteed_optimizations()
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 674, in guarenteed_optimizations
if reader.insn.is_push and reader.replace_uses_with(item):
File "/data-hdd/ethereum/tools/conkas/rattle/ssa.py", line 397, in replace_uses_with
reader.replace_argument(self.return_value, sv)
File "/data-hdd/ethereum/tools/conkas/rattle/ssa.py", line 289, in replace_argument
assert (self.insn.pops == len(self.arguments) or
AssertionError
$ cat demo.hex
608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100f0578063c9c6539614610118578063e6a4390514610146578063f46901ed1461017457610088565b8063017e7e581461008d578063094b7415146100b15780631e3dd18b146100b9578063574f2ba3146100d6575b600080fd5b61009561019a565b604080516001600160a01b039092168252519081900360200190f35b6100956101a9565b610095600480360360208110156100cf57600080fd5b50356101b8565b6100de6101df565b60408051918252519081900360200190f35b6101166004803603602081101561010657600080fd5b50356001600160a01b03166101e5565b005b6100956004803603604081101561012e57600080fd5b506001600160a01b0381358116916020013516610259565b6100956004803603604081101561015c57600080fd5b506001600160a01b038135811691602001351661057c565b6101166004803603602081101561018a57600080fd5b50356001600160a01b03166105a2565b6000546001600160a01b031681565b6001546001600160a01b031681565b600381815481106101c557fe5b6000918252602090912001546001600160a01b0316905081565b60035490565b6001546001600160a01b03163314610237576040805162461bcd60e51b815260206004820152601060248201526f2a39bbb0b81d102327a92124a22222a760811b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000816001600160a01b0316836001600160a01b031614156102c2576040805162461bcd60e51b815260206004820152601a60248201527f54737761703a204944454e544943414c5f414444524553534553000000000000604482015290519081900360640190fd5b600080836001600160a01b0316856001600160a01b0316106102e55783856102e8565b84845b90925090506001600160a01b03821661033e576040805162461bcd60e51b815260206004820152601360248201527254737761703a205a45524f5f4144445245535360681b604482015290519081900360640190fd5b6001600160a01b038281166000908152600260209081526040808320858516845290915290205416156103ad576040805162461bcd60e51b815260206004820152601260248201527154737761703a20504149525f45584953545360701b604482015290519081900360640190fd5b6060604051806020016103bf90610616565b6020820181038252601f19601f8201166040525090506000838360405160200180836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f56040805163485cc95560e01b81526001600160a01b038781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561049257600080fd5b505af11580156104a6573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526002602081815260408084208987168086529083528185208054978d166001600160a01b031998891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b60026020908152600092835260408084209091529082529020546001600160a01b031681565b6001546001600160a01b031633146105f4576040805162461bcd60e51b815260206004820152601060248201526f2a39bbb0b81d102327a92124a22222a760811b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b612374806106248339019056fe60806040526001600c5534801561001557600080fd5b5060405146908060526123228239604080519182900360520182208282018252600580845264054737761760dc1b6020948501528251808401845260018152603160f81b908501528251808501929092527f710881667ac01568e8c9a03d222090417a825c289be3c830e65f654093570ecf828401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201959095523060a0808301919091528251808303909101815260c090910190915280519101206003555080546001600160a01b03191633179055612225806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610b1e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b3f565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b69565b604080519115158252519081900360200190f35b610339610b80565b604080516001600160a01b039092168252519081900360200190f35b61035d610b8f565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b95565b61035d610c2f565b6103b5610c53565b6040805160ff9092168252519081900360200190f35b61035d610c58565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c5e565b61035d610cde565b61035d610ce4565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cea565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610fe6565b61035d610ff8565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610ffe565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611010565b6040805192835260208301919091528051918290030190f35b6102446113b2565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113d1565b61035d6113de565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113e4565b61033961154b565b61033961155a565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611569565b61035d600480360360408110156105a357600080fd5b506001600160a01b0381358116916020013516611767565b61023a611784565b600c5460011461060a576040805162461bcd60e51b815260206004820152600d60248201526c151cddd85c0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c558415158061061d5750600084115b6106585760405162461bcd60e51b81526004018080602001828103825260218152602001806121ac6021913960400191505060405180910390fd5b600080610663610b3f565b5091509150816001600160701b0316871080156106885750806001600160701b031686105b6106d9576040805162461bcd60e51b815260206004820152601d60248201527f54737761703a20494e53554646494349454e545f4c4951554944495459000000604482015290519081900360640190fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107175750806001600160a01b0316896001600160a01b031614155b61075c576040805162461bcd60e51b815260206004820152601160248201527054737761703a20494e56414c49445f544f60781b604482015290519081900360640190fd5b8a1561076d5761076d828a8d6118e2565b891561077e5761077e818a8c6118e2565b861561083957886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561082057600080fd5b505af1158015610834573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d60208110156108a957600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f557600080fd5b505afa158015610909573d6000803e3d6000fd5b505050506040513d602081101561091f57600080fd5b5051925060009150506001600160701b0385168a90038311610942576000610951565b89856001600160701b03160383035b9050600089856001600160701b031603831161096e57600061097d565b89856001600160701b03160383035b9050600082118061098e5750600081115b6109df576040805162461bcd60e51b815260206004820181905260248201527f54737761703a20494e53554646494349454e545f494e5055545f414d4f554e54604482015290519081900360640190fd5b6000610a136109f584600363ffffffff611a7516565b610a07876103e863ffffffff611a7516565b9063ffffffff611ad816565b90506000610a2b6109f584600363ffffffff611a7516565b9050610a5c620f4240610a506001600160701b038b8116908b1663ffffffff611a7516565b9063ffffffff611a7516565b610a6c838363ffffffff611a7516565b1015610aaa576040805162461bcd60e51b815260206004820152600860248201526754737761703a204b60c01b604482015290519081900360640190fd5b5050610ab884848888611b28565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b60405180604001604052806005815260200164054737761760dc1b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b76338484611ce9565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c1a576001600160a01b0384166000908152600260209081526040808320338452909152902054610bf5908363ffffffff611ad816565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c25848484611d4b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610cb0576040805162461bcd60e51b815260206004820152601060248201526f2a39bbb0b81d102327a92124a22222a760811b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d33576040805162461bcd60e51b815260206004820152600d60248201526c151cddd85c0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c81905580610d43610b3f565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d9757600080fd5b505afa158015610dab573d6000803e3d6000fd5b505050506040513d6020811015610dc157600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e1457600080fd5b505afa158015610e28573d6000803e3d6000fd5b505050506040513d6020811015610e3e57600080fd5b505190506000610e5d836001600160701b03871663ffffffff611ad816565b90506000610e7a836001600160701b03871663ffffffff611ad816565b90506000610e888787611e05565b60005490915080610ec557610eb16103e8610a07610eac878763ffffffff611a7516565b611f63565b9850610ec060006103e8611fb5565b610f14565b610f116001600160701b038916610ee2868463ffffffff611a7516565b81610ee957fe5b046001600160701b038916610f04868563ffffffff611a7516565b81610f0b57fe5b0461204b565b98505b60008911610f535760405162461bcd60e51b81526004018080602001828103825260248152602001806121cd6024913960400191505060405180910390fd5b610f5d8a8a611fb5565b610f6986868a8a611b28565b8115610f9957600854610f95906001600160701b0380821691600160701b90041663ffffffff611a7516565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461105a576040805162461bcd60e51b815260206004820152600d60248201526c151cddd85c0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c8190558061106a610b3f565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561113e57600080fd5b505afa158015611152573d6000803e3d6000fd5b505050506040513d602081101561116857600080fd5b5051306000908152600160205260408120549192506111878888611e05565b6000549091508061119e848763ffffffff611a7516565b816111a557fe5b049a50806111b9848663ffffffff611a7516565b816111c057fe5b04995060008b1180156111d3575060008a115b61120e5760405162461bcd60e51b81526004018080602001828103825260248152602001806121886024913960400191505060405180910390fd5b6112183084612063565b611223878d8d6118e2565b61122e868d8c6118e2565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561127457600080fd5b505afa158015611288573d6000803e3d6000fd5b505050506040513d602081101561129e57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112ea57600080fd5b505afa1580156112fe573d6000803e3d6000fd5b505050506040513d602081101561131457600080fd5b5051935061132485858b8b611b28565b811561135457600854611350906001600160701b0380821691600160701b90041663ffffffff611a7516565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b60405180604001604052806003815260200162544e4960e81b81525081565b6000610b76338484611d4b565b6103e881565b600c5460011461142b576040805162461bcd60e51b815260206004820152600d60248201526c151cddd85c0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114da92859287926114d5926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561149d57600080fd5b505afa1580156114b1573d6000803e3d6000fd5b505050506040513d60208110156114c757600080fd5b50519063ffffffff611ad816565b6118e2565b600854604080516370a0823160e01b8152306004820152905161154192849287926114d592600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561149d57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115af576040805162461bcd60e51b815260206004820152600e60248201526d151cddd85c0e881156141254915160921b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116ca573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117005750886001600160a01b0316816001600160a01b0316145b611751576040805162461bcd60e51b815260206004820152601860248201527f54737761703a20494e56414c49445f5349474e41545552450000000000000000604482015290519081900360640190fd5b61175c898989611ce9565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117cb576040805162461bcd60e51b815260206004820152600d60248201526c151cddd85c0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118db926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561181c57600080fd5b505afa158015611830573d6000803e3d6000fd5b505050506040513d602081101561184657600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561189357600080fd5b505afa1580156118a7573d6000803e3d6000fd5b505050506040513d60208110156118bd57600080fd5b50516008546001600160701b0380821691600160701b900416611b28565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b6020831061198f5780518252601f199092019160209182019101611970565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119f1576040519150601f19603f3d011682016040523d82523d6000602084013e6119f6565b606091505b5091509150818015611a24575080511580611a245750808060200190516020811015611a2157600080fd5b50515b611a6e576040805162461bcd60e51b8152602060048201526016602482015275151cddd85c0e881514905394d1915497d1905253115160521b604482015290519081900360640190fd5b5050505050565b6000811580611a9057505080820282828281611a8d57fe5b04145b610b7a576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b7a576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b4657506001600160701b038311155b611b89576040805162461bcd60e51b815260206004820152600f60248201526e54737761703a204f564552464c4f5760881b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611bb957506001600160701b03841615155b8015611bcd57506001600160701b03831615155b15611c3e578063ffffffff16611bfb85611be686612101565b6001600160e01b03169063ffffffff61211316565b600980546001600160e01b03929092169290920201905563ffffffff8116611c2684611be687612101565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d74908263ffffffff611ad816565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611da9908263ffffffff61213816565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e5657600080fd5b505afa158015611e6a573d6000803e3d6000fd5b505050506040513d6020811015611e8057600080fd5b5051600b546001600160a01b038216158015945091925090611f4f578015611f4a576000611ec3610eac6001600160701b0388811690881663ffffffff611a7516565b90506000611ed083611f63565b905080821115611f47576000611efe611eef848463ffffffff611ad816565b6000549063ffffffff611a7516565b90506000611f2383611f1786600563ffffffff611a7516565b9063ffffffff61213816565b90506000818381611f3057fe5b0490508015611f4357611f438782611fb5565b5050505b50505b611f5b565b8015611f5b576000600b555b505092915050565b60006003821115611fa6575080600160028204015b81811015611fa057809150600281828581611f8f57fe5b040181611f9857fe5b049050611f78565b50611fb0565b8115611fb0575060015b919050565b600054611fc8908263ffffffff61213816565b60009081556001600160a01b038316815260016020526040902054611ff3908263ffffffff61213816565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061205a578161205c565b825b9392505050565b6001600160a01b03821660009081526001602052604090205461208c908263ffffffff611ad816565b6001600160a01b038316600090815260016020526040812091909155546120b9908263ffffffff611ad816565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161213057fe5b049392505050565b80820182811015610b7a576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe54737761703a20494e53554646494349454e545f4c49515549444954595f4255524e454454737761703a20494e53554646494349454e545f4f55545055545f414d4f554e5454737761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820afb916f170bffd8001b3da0542a3d7f0e2b29ac7779782d95444f26703e57ad564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a72315820bf439e0b2a40dd745e322c0eaf91b3b0147172fddb010105a3e4632cc891384d64736f6c63430005100032
$ python conkas.py demo.hex
Analysing demo.hex...
CREATE2 instruction needs 4 arguments but 3 was given
Traceback (most recent call last):
File "conkas.py", line 108, in main
traces = sym_exec.execute()
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 51, in execute
new_traces = self.__sym_exec_traces(traces_to_execute)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 64, in __sym_exec_traces
new_blocks = self.__sym_exec_block(block_to_analyse, trace.state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 93, in __sym_exec_block
new_blocks = self.__sym_exec_instruction(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 116, in __sym_exec_instruction
return func(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/instructions/closures.py", line 124, in inst_create2
raise Exception
Exception
$ cat demo.hex
6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630562b9f7146100eb578063115e58491461011857806311ee26cf1461020e578063464cd1c6146102ac57806353427fe91461032a578063726a3c6c1461039e578063853828b6146103c95780639619367d146103e05780639c4d780b1461040b578063b2db919b146104f5578063bcf8ca4114610520578063d87aa6431461054b578063e30bc79a14610575578063e8eb2284146105c0578063ea78160b14610601578063eb576fa914610638575b600080fd5b3480156100f757600080fd5b506101166004803603810190808035906020019092919050505061080c565b005b61020c600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506108d2565b005b34801561021a57600080fd5b50610239600480360381019080803590602001909291905050506109a4565b6040518086815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610294578082015181840152602081019050610279565b50505050905001965050505050505060405180910390f35b3480156102b857600080fd5b506102e16004803603810190808035906020019092919080359060200190929190505050610ab6565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b34801561033657600080fd5b5061035560048036038101908080359060200190929190505050610ceb565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b3480156103aa57600080fd5b506103b3610d84565b6040518082815260200191505060405180910390f35b3480156103d557600080fd5b506103de610d8a565b005b3480156103ec57600080fd5b506103f5610e66565b6040518082815260200191505060405180910390f35b34801561041757600080fd5b5061045660048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e6c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561049d578082015181840152602081019050610482565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156104df5780820151818401526020810190506104c4565b5050505090500194505050505060405180910390f35b34801561050157600080fd5b5061050a611114565b6040518082815260200191505060405180910390f35b34801561052c57600080fd5b5061053561111a565b6040518082815260200191505060405180910390f35b6105736004803603810190808035906020019092919080359060200190929190505050611127565b005b6105be600480360381019080803590602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291905050506113cf565b005b3480156105cc57600080fd5b506105eb600480360381019080803590602001909291905050506117b7565b6040518082815260200191505060405180910390f35b34801561060d57600080fd5b5061063660048036038101908080359060200190929190803590602001909291905050506117d4565b005b34801561064457600080fd5b5061064d611de2565b6040518080602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b838110156106a4578082015181840152602081019050610689565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b838110156106e65780820151818401526020810190506106cb565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b8381101561072857808201518184015260208101905061070d565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b8381101561076a57808201518184015260208101905061074f565b50505050905001878103835289818151815260200191508051906020019060200280838360005b838110156107ac578082015181840152602081019050610791565b50505050905001878103825288818151815260200191508051906020019060200280838360005b838110156107ee5780820151818401526020810190506107d3565b505050509050019c5050505050505050505050505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156108ce573d6000803e3d6000fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561092f57600080fd5b600090505b855181101561099c5761098f868281518110151561094e57fe5b90602001906020020151868381518110151561096657fe5b90602001906020020151868481518110151561097e57fe5b9060200190602002015186866113cf565b8080600101915050610934565b505050505050565b600080600080606060008060606000806000600560008d815260200190815260200160002060000154141515156109da57600080fd5b600560008c815260200190815260200160002094508460050154935083604051908082528060200260200182016040528015610a255781602001602082028038833980820191505090505b509250600091505b83821015610a7e57610a3f8b836120f7565b905060096000828152602001908152602001600020548383815181101515610a6357fe5b90602001906020020181815250508180600101925050610a2d565b8a610a888c612109565b6003811115610a9357fe5b866002015487600401548699509950995099509950505050505091939590929450565b6000806000806000806000600560008a81526020019081526020016000206000015414151515610ae557600080fd5b600560008981526020019081526020016000206005015487101515610b0957600080fd5b6000935060009250610b1b88886120f7565b9150600090505b600a600083815260200190815260200160002080549050811015610cda5782600b60008481526020019081526020016000206000600a600086815260200190815260200160002084815481101515610b7657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610ccd57600a600083815260200190815260200160002081815481101515610c0257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350600b60008381526020019081526020016000206000600a600085815260200190815260200160002083815481101515610c6457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492505b8080600101915050610b22565b838395509550505050509250929050565b600080600080600080600080600560008a81526020019081526020016000206000015414151515610d1b57600080fd5b6000945060009350600092505b6005600089815260200190815260200160002060050154831015610d7457610d508884610ab6565b809250819350505083811115610d67578194508093505b8280600101935050610d28565b8484965096505050505050915091565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610de557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610e63573d6000803e3d6000fd5b50565b60025481565b606080600080600080606080600080600560008d81526020019081526020016000206000015414151515610e9f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515610edb57600080fd5b600560008c8152602001908152602001600020965060009550600094505b8660050154851015610f8157610f0f8b866120f7565b93506000600b600086815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610f745785806001019650505b8480600101955050610ef9565b85604051908082528060200260200182016040528015610fb05781602001602082028038833980820191505090505b50925085604051908082528060200260200182016040528015610fe25781602001602082028038833980820191505090505b50915060009050600094505b8660050154851015611100576110048b866120f7565b93506000600b600086815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415156110f35784838281518110151561106f57fe5b9060200190602002018181525050600b600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482828151811015156110dc57fe5b906020019060200201818152505080806001019150505b8480600101955050610fee565b828298509850505050505050509250929050565b60015481565b6000600480549050905090565b600080600254341015151561113b57600080fd5b600060056000868152602001908152602001600020600001541415151561116157600080fd5b6001600381111561116e57fe5b6005600086815260200190815260200160002060030160019054906101000a900460ff16600381111561119d57fe5b1415156111a957600080fd5b6005600085815260200190815260200160002091508160020154421015156111d057600080fd5b6111da84846120f7565b90506000600b600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156112ad57600a60008281526020019081526020016000203390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b34600b600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550346009600083815260200190815260200160002060008282540192505081905550346008600086815260200190815260200160002060008282540192505081905550837f12995386173390662279e0a9cdfe4bb82618f51426dcaaeae62d088a9ced5bd633348642604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a250505050565b60006113d96121fd565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143657600080fd5b6000881415151561144657600080fd5b6000600560008a81526020019081526020016000206000015414151561146b57600080fd5b6002841015151561147b57600080fd5b600154341015151561148c57600080fd5b6114a16001543461218e90919063ffffffff16565b92503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156114e9573d6000803e3d6000fd5b506101006040519081016040528089815260200188815260200187815260200186600281111561151557fe5b81526020016001600381111561152757fe5b81526020013373ffffffffffffffffffffffffffffffffffffffff1681526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001858152509150338260a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060016004899080600181540180825580915050906001820390600052602060002001600090919290919091505503905081600560008a815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083600281111561163257fe5b021790555060808201518160030160016101000a81548160ff0219169083600381111561165b57fe5b021790555060a08201518160030160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004015560e08201518160050155905050336006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055503373ffffffffffffffffffffffffffffffffffffffff167f4cd45c96623d78c3cf650a5797744c0968a0ab2d4c36707bb89228572ba95fc9896040518082815260200191505060405180910390a25050505050505050565b600060086000838152602001908152602001600020549050919050565b6000806000806000606060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561184157600080fd5b6000600560008f8152602001908152602001600020600001541415151561186757600080fd5b6001600381111561187457fe5b600560008f815260200190815260200160002060030160019054906101000a900460ff1660038111156118a357fe5b1415156118af57600080fd5b600560008e8152602001908152602001600020600501548c1015156118d357600080fd5b6003600560008f815260200190815260200160002060030160016101000a81548160ff0219169083600381111561190657fe5b02179055508b600560008f815260200190815260200160002060040181905550600860008e8152602001908152602001600020549a5061196460646119566003548e6121a790919063ffffffff16565b6121e290919063ffffffff16565b995061197b6152083a6121a790919063ffffffff16565b98506000975061198b8d8d6120f7565b9650600a6000888152602001908152602001600020805490506040519080825280602002602001820160405280156119d25781602001602082028038833980820191505090505b509550600094505b600a600088815260200190815260200160002080549050851015611ca457600a600088815260200190815260200160002085815481101515611a1857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350611a588a8c61218e90919063ffffffff16565b9250611ae26009600089815260200190815260200160002054611ad4600b60008b815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866121a790919063ffffffff16565b6121e290919063ffffffff16565b915088821115611bf357611aff898361218e90919063ffffffff16565b9050808686815181101515611b1057fe5b906020019060200201818152505080880197508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b69573d6000803e3d6000fd5b508c7feef2e5777ea4550ca431e3df84d5178d959b8fa09e42c18624753014a1afa02285848c8542604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a2611c97565b60008686815181101515611c0357fe5b90602001906020020181815250508c7feef2e5777ea4550ca431e3df84d5178d959b8fa09e42c18624753014a1afa02285848c600042604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a25b84806001019550506119da565b8c7f97c35723c934844683507b99278e3c29261b014c757efca7debf40db8069538c8d8d8d8c600a60008e81526020019081526020016000208c426040518088815260200187815260200186815260200185815260200180602001806020018481526020018381038352868181548152602001915080548015611d7c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d32575b5050838103825285818151815260200191508051906020019060200280838360005b83811015611db9578082015181840152602081019050611d9e565b50505050905001995050505050505050505060405180910390a250505050505050505050505050565b6060806060806060806000606080606080606080600080600480549050985088604051908082528060200260200182016040528015611e305781602001602082028038833980820191505090505b50975088604051908082528060200260200182016040528015611e625781602001602082028038833980820191505090505b50965088604051908082528060200260200182016040528015611e945781602001602082028038833980820191505090505b50955088604051908082528060200260200182016040528015611ec65781602001602082028038833980820191505090505b50945088604051908082528060200260200182016040528015611ef85781602001602082028038833980820191505090505b50935088604051908082528060200260200182016040528015611f2a5781602001602082028038833980820191505090505b509250600091505b888210156120d457600482815481101515611f4957fe5b90600052602060002001548883815181101515611f6257fe5b9060200190602002018181525050600560008984815181101515611f8257fe5b9060200190602002015181526020019081526020016000209050611fbc8883815181101515611fad57fe5b90602001906020020151612109565b6003811115611fc757fe5b8783815181101515611fd557fe5b906020019060200201818152505080600201548683815181101515611ff657fe5b90602001906020020181815250508060040154858381518110151561201757fe5b90602001906020020181815250506009600061204b8a8581518110151561203a57fe5b9060200190602002015160006120f7565b815260200190815260200160002054848381518110151561206857fe5b90602001906020020181815250506009600061209c8a8581518110151561208b57fe5b9060200190602002015160016120f7565b81526020019081526020016000205483838151811015156120b957fe5b90602001906020020181815250508180600101925050611f32565b8787878787879e509e509e509e509e509e50505050505050505050909192939495565b600081620f4240840201905092915050565b6000806005600084815260200190815260200160002090508060030160019054906101000a900460ff16600381111561213e57fe5b60038081111561214a57fe5b14156121595760039150612188565b806001015442101561216e5760009150612188565b80600201544210156121835760019150612188565b600291505b50919050565b600082821115151561219c57fe5b818303905092915050565b60008060008414156121bc57600091506121db565b82840290508284828115156121cd57fe5b041415156121d757fe5b8091505b5092915050565b60008082848115156121f057fe5b0490508091505092915050565b610100604051908101604052806000815260200160008152602001600081526020016000600281111561222c57fe5b81526020016000600381111561223e57fe5b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815250905600a165627a7a72305820e509de12a99f138010d7486e4994052b81af6412c1fcd3b61f5b580770cb0f8c0029
$ python conkas.py demo.hex
Analysing demo.hex...
pop from empty list
Traceback (most recent call last):
File "conkas.py", line 105, in main
ssa = Recover(bytecode, edges=[], optimize=True)
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 768, in __init__
self.internal = InternalRecover(filedata, edges, optimize, split_functions)
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 32, in __init__
self.recover(dispatch)
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 107, in recover
self.recover_loop(function)
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 150, in recover_loop
insn.append_argument(block.stack_pop())
File "/data-hdd/ethereum/tools/conkas/rattle/ssa.py", line 474, in stack_pop
return self.stack.pop()
IndexError: pop from empty list
$ cat demo.hex
600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a0526357de26a460005114156101c15734156100ac57600080fd5b600061014052610140805160200180610180828460006004600a8704601201f16100d557600080fd5b505060206101e0610180516101a060006000545af16100f357600080fd5b60206101c0526101c080600160c052602060c020602082510161012060006002818352015b8261012051602002111561012b5761014d565b61012051602002850151610120518501555b8151600101808352811415610118575b50505050505060018060c052602060c0206001015460008260c052602060c0205480602090131561017d57600080fd5b809190121561018b57600080fd5b606051816020036101000a8304806040519013156101a857600080fd5b80919012156101b657600080fd5b905090509050600255005b6337a7b7d860005114156102925734156101da57600080fd5b60018060c052602060c020610180602082540161012060006002818352015b8261012051602002111561020c5761022e565b61012051850154610120516020028501525b81516001018083528114156101f9575b5050505050506101e0610180516020818352015b60206101e05111156102535761026f565b60006101e0516101a001535b8151600101808352811415610242575b50506020610160526040610180510160206001820306601f8201039050610160f3005b639753198660005114156102b85734156102ab57600080fd5b60025460005260206000f3005b60006000fd
$ python conkas.py demo.hex
Analysing demo.hex...
JUMPDEST instruction should not be reached
Traceback (most recent call last):
File "conkas.py", line 108, in main
traces = sym_exec.execute()
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 51, in execute
new_traces = self.__sym_exec_traces(traces_to_execute)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 64, in __sym_exec_traces
new_blocks = self.__sym_exec_block(block_to_analyse, trace.state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 93, in __sym_exec_block
new_blocks = self.__sym_exec_instruction(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 116, in __sym_exec_instruction
return func(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/instructions/storage_execution.py", line 225, in inst_jumpdest
raise Exception
Exception
Docker fails with error: Exception: Could not deserialize ATN with version (expected 4).
docker build -t conkas:6aee098 .
Sending build context to Docker daemon 11.77MB
Step 1/14 : FROM ubuntu:20.04
---> 2b4cba85892a
Step 2/14 : RUN apt-get update && apt-get install -y python3-pip
---> Using cache
---> 9af4ed5228bf
Step 3/14 : RUN apt-get autoremove -y
---> Using cache
---> c8e917b7a911
Step 4/14 : RUN apt-get clean
---> Using cache
---> 4e282c0baae4
Step 5/14 : ENV LC_ALL C.UTF-8
---> Using cache
---> bbc0c0223171
Step 6/14 : RUN pip3 --no-cache-dir install --upgrade setuptools pip
---> Using cache
---> ac3ff96a720d
Step 7/14 : COPY . /conkas/
---> 4d02377b7211
Step 8/14 : WORKDIR /conkas
---> Running in a2572033033e
Removing intermediate container a2572033033e
---> f234c9ead0b2
Step 9/14 : RUN pip3 install -r requirements.txt
---> Running in 86cf4643d8a0
Collecting pyevmasm==0.2.3
Downloading pyevmasm-0.2.3-py3-none-any.whl (15 kB)
Collecting cbor2==5.1.2
Downloading cbor2-5.1.2.tar.gz (73 kB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 73.2/73.2 KB 1.5 MB/s eta 0:00:00
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting z3-solver==4.8.8.0
Downloading z3_solver-4.8.8.0-py2.py3-none-manylinux1_x86_64.whl (29.6 MB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 29.6/29.6 MB 9.3 MB/s eta 0:00:00
Collecting pycryptodome==3.9.8
Downloading pycryptodome-3.9.8-cp38-cp38-manylinux1_x86_64.whl (13.7 MB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 13.7/13.7 MB 10.1 MB/s eta 0:00:00
Collecting py-solc-x==0.10.1
Downloading py_solc_x-0.10.1-py3-none-any.whl (15 kB)
Collecting solidity_parser==0.0.7
Downloading solidity-parser-0.0.7.tar.gz (58 kB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 58.4/58.4 KB 4.3 MB/s eta 0:00:00
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting future
Downloading future-0.18.2.tar.gz (829 kB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 829.2/829.2 KB 9.1 MB/s eta 0:00:00
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting requests<3,>=2.19.0
Downloading requests-2.27.1-py2.py3-none-any.whl (63 kB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 63.1/63.1 KB 5.4 MB/s eta 0:00:00
Collecting semantic-version<3,>=2.8.1
Downloading semantic_version-2.9.0-py2.py3-none-any.whl (15 kB)
Collecting antlr4-python3-runtime
Downloading antlr4-python3-runtime-4.10.tar.gz (116 kB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 116.6/116.6 KB 8.0 MB/s eta 0:00:00
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting idna<4,>=2.5
Downloading idna-3.3-py3-none-any.whl (61 kB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 61.2/61.2 KB 5.8 MB/s eta 0:00:00
Collecting urllib3<1.27,>=1.21.1
Downloading urllib3-1.26.9-py2.py3-none-any.whl (138 kB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 139.0/139.0 KB 7.6 MB/s eta 0:00:00
Collecting certifi>=2017.4.17
Downloading certifi-2021.10.8-py2.py3-none-any.whl (149 kB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 149.2/149.2 KB 7.6 MB/s eta 0:00:00
Collecting charset-normalizer~=2.0.0
Downloading charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Building wheels for collected packages: cbor2, solidity_parser, antlr4-python3-runtime, future
Building wheel for cbor2 (setup.py): started
Building wheel for cbor2 (setup.py): finished with status 'done'
Created wheel for cbor2: filename=cbor2-5.1.2-cp38-cp38-linux_x86_64.whl size=172592 sha256=f99f7795c9499faffea9662a0f039c84523d75cc771ebbdfd7ba3fa9d1297256
Stored in directory: /root/.cache/pip/wheels/ee/62/04/40cf369149e4f154952feb7c9a64f00ffa35b64cd2bfa5c3dd
Building wheel for solidity_parser (setup.py): started
Building wheel for solidity_parser (setup.py): finished with status 'done'
Created wheel for solidity_parser: filename=solidity_parser-0.0.7-py3-none-any.whl size=59431 sha256=5b2ccbbd74fe29b2e2607fb1073962f59d624ce168d7251e24b11575c30b6e31
Stored in directory: /root/.cache/pip/wheels/66/c8/8e/950d868762471f076ae5eff4c337a78ccacfe655d64a8b9021
Building wheel for antlr4-python3-runtime (setup.py): started
Building wheel for antlr4-python3-runtime (setup.py): finished with status 'done'
Created wheel for antlr4-python3-runtime: filename=antlr4_python3_runtime-4.10-py3-none-any.whl size=144169 sha256=79556d4e4e9869397a3be6153f7054a118f138cd437bb707b514e574e36d5de9
Stored in directory: /root/.cache/pip/wheels/b6/ad/fa/3b3f55bd8f984116397a4da5b33a4f9be7df18c2be0ba972e4
Building wheel for future (setup.py): started
Building wheel for future (setup.py): finished with status 'done'
Created wheel for future: filename=future-0.18.2-py3-none-any.whl size=491070 sha256=58c5a580b8e9e77f40dd7bb9c413143dca73a910bb4ce4dc79372d26b34b1b2d
Stored in directory: /root/.cache/pip/wheels/8e/70/28/3d6ccd6e315f65f245da085482a2e1c7d14b90b30f239e2cf4
Successfully built cbor2 solidity_parser antlr4-python3-runtime future
Installing collected packages: z3-solver, certifi, cbor2, antlr4-python3-runtime, urllib3, solidity_parser, semantic-version, pycryptodome, idna, future, charset-normalizer, requests, pyevmasm, py-solc-x
Successfully installed antlr4-python3-runtime-4.10 cbor2-5.1.2 certifi-2021.10.8 charset-normalizer-2.0.12 future-0.18.2 idna-3.3 py-solc-x-0.10.1 pycryptodome-3.9.8 pyevmasm-0.2.3 requests-2.27.1 semantic-version-2.9.0 solidity_parser-0.0.7 urllib3-1.26.9 z3-solver-4.8.8.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Removing intermediate container 86cf4643d8a0
---> efa2d93b2c35
Step 10/14 : RUN python3 -m solcx.install v0.4.25
---> Running in 40bce25bb3c5
solc, the solidity compiler commandline interface
Version: 0.4.25+commit.59dbf8f1.Linux.g++
/usr/lib/python3.8/runpy.py:127: RuntimeWarning: 'solcx.install' found in sys.modules after import of package 'solcx', but prior to execution of 'solcx.install'; this may result in unpredictable behaviour
warn(RuntimeWarning(msg))
Removing intermediate container 40bce25bb3c5
---> 2ccb7af636cb
Step 11/14 : RUN python3 -m solcx.install v0.4.26
---> Running in cd6fc37d4aff
solc, the solidity compiler commandline interface
Version: 0.4.26+commit.4563c3fc.Linux.g++
/usr/lib/python3.8/runpy.py:127: RuntimeWarning: 'solcx.install' found in sys.modules after import of package 'solcx', but prior to execution of 'solcx.install'; this may result in unpredictable behaviour
warn(RuntimeWarning(msg))
Removing intermediate container cd6fc37d4aff
---> 0036db74c61e
Step 12/14 : RUN python3 -m solcx.install v0.5.17
---> Running in f52f6fda5c71
solc, the solidity compiler commandline interface
Version: 0.5.17+commit.d19bba13.Linux.g++
/usr/lib/python3.8/runpy.py:127: RuntimeWarning: 'solcx.install' found in sys.modules after import of package 'solcx', but prior to execution of 'solcx.install'; this may result in unpredictable behaviour
warn(RuntimeWarning(msg))
Removing intermediate container f52f6fda5c71
---> 79b7713a74c7
Step 13/14 : RUN python3 -m solcx.install v0.6.11
---> Running in f9b298c0954b
solc, the solidity compiler commandline interface
Version: 0.6.11+commit.5ef660b1.Linux.g++
/usr/lib/python3.8/runpy.py:127: RuntimeWarning: 'solcx.install' found in sys.modules after import of package 'solcx', but prior to execution of 'solcx.install'; this may result in unpredictable behaviour
warn(RuntimeWarning(msg))
Removing intermediate container f9b298c0954b
---> a91014faf059
Step 14/14 : ENTRYPOINT ["python3", "conkas.py"]
---> Running in 9239a1c9a329
Removing intermediate container 9239a1c9a329
---> 33f74e98a7bc
Successfully built 33f74e98a7bc
Successfully tagged conkas:6aee098
โ conkas git:(master) docker run -it conkas:6aee098 -vt reentrancy example.sol
Traceback (most recent call last):
File "conkas.py", line 7, in <module>
from solidity_parser.parser import parse
File "/usr/local/lib/python3.8/dist-packages/solidity_parser/__init__.py", line 1, in <module>
from .parser import parse_file, parse, objectify, visit
File "/usr/local/lib/python3.8/dist-packages/solidity_parser/parser.py", line 10, in <module>
from solidity_parser.solidity_antlr4.SolidityLexer import SolidityLexer
File "/usr/local/lib/python3.8/dist-packages/solidity_parser/solidity_antlr4/SolidityLexer.py", line 783, in <module>
class SolidityLexer(Lexer):
File "/usr/local/lib/python3.8/dist-packages/solidity_parser/solidity_antlr4/SolidityLexer.py", line 785, in SolidityLexer
atn = ATNDeserializer().deserialize(serializedATN())
File "/usr/local/lib/python3.8/dist-packages/antlr4/atn/ATNDeserializer.py", line 28, in deserialize
self.checkVersion()
File "/usr/local/lib/python3.8/dist-packages/antlr4/atn/ATNDeserializer.py", line 50, in checkVersion
raise Exception("Could not deserialize ATN with version " + str(version) + " (expected " + str(SERIALIZED_VERSION) + ").")
Exception: Could not deserialize ATN with version (expected 4).
$ cat demo.hex
341561000a57600080fd5b600436101561001857610ecc565b600035601c5274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a0526000156100ce575b6101805261014052610160526101405161016051808202821582848304141761008b57600080fd5b80905090509050604e600454106100a157600080fd5b600454600a0a80806100b257600080fd5b8204905090506101a0526101a051600052600051610180515650005b639006e50460005114156101995760043560a01c156100ec57600080fd5b60243560a01c156100fc57600080fd5b60443560a01c1561010c57600080fd5b60643560a01c1561011c57600080fd5b60843560a01c1561012c57600080fd5b60a43560a01c1561013c57600080fd5b60c43560a01c1561014c57600080fd5b60e43560a01c1561015c57600080fd5b600435600255602435600755604435600855606435600955608435600a5560a435600b5560c435600c5560e435600d55600160005260206000f350005b634ef04f5060005114156101ba57600435600e55600160005260206000f350005b63f8fe1ffd60005114156101dc5760043560055560055460005260206000f350005b6373d5ba8e60005114156103835760206101e0604463095ea7b361014052600754610160527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101805261015c60006003545af161023957600080fd5b601f3d1161024657600080fd5b6000506101e05060206101e0604463095ea7b361014052600754610160527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101805261015c6000600b545af161029c57600080fd5b601f3d116102a957600080fd5b6000506101e05060206101e0604463095ea7b361014052600754610160527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101805261015c6000600c545af16102ff57600080fd5b601f3d1161030c57600080fd5b6000506101e05060206101e0604463095ea7b361014052600754610160527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101805261015c6000600d545af161036257600080fd5b601f3d1161036f57600080fd5b6000506101e050600160005260206000f350005b63be2d0686600051141561052a5760206101e0604463095ea7b361014052600154610160527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101805261015c60006003545af16103e057600080fd5b601f3d116103ed57600080fd5b6000506101e05060206101e0604463095ea7b361014052600154610160527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101805261015c6000600b545af161044357600080fd5b601f3d1161045057600080fd5b6000506101e05060206101e0604463095ea7b361014052600154610160527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101805261015c6000600c545af16104a657600080fd5b601f3d116104b357600080fd5b6000506101e05060206101e0604463095ea7b361014052600154610160527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101805261015c6000600d545af161050957600080fd5b601f3d1161051657600080fd5b6000506101e050600160005260206000f350005b63d6d21dfd60005114156105495733600f55600160005260206000f350005b63ab3ae4a060005114156108535760206101e060246370a08231610160526002546101805261017c6003545afa61057f57600080fd5b601f3d1161058c57600080fd5b6000506101e0516101405260206101e060046318160ddd6101805261019c6003545afa6105b857600080fd5b601f3d116105c557600080fd5b6000506101e05161016052610140516101605161018051610160516101a0526005546101c0526101c0516101a05160065801610063565b6102205261018052610160526101405261022051610180526101805161014051101515610845576101405161016051610180516101a051610140516101c052600654605f808202821582848304141761065457600080fd5b809050905090506101e0526101e0516101c05160065801610063565b610240526101a052610180526101605261014052610240516101a05260206102a0606463bd5f68b06101e0526101a0516102005260035461022052600b54610240526101fc6007545afa6106c357600080fd5b601f3d116106d057600080fd5b6000506102a0516101c0526101405161016051610180516101a0516101c0516101e0516101c05161020052600654600e54808202821582848304141761071557600080fd5b8090509050905061022052610220516102005160065801610063565b610280526101e0526101c0526101a052610180526101605261014052610280516101e0526101c0516101e0518082101561076a57600080fd5b808203905090506102005260206102c0604463095ea7b361022052600754610240526101a0516102605261023c60006003545af16107a757600080fd5b601f3d116107b457600080fd5b6000506102c050602061034060c463ff502bb5610220526101a05161024052610200516102605260035461028052600b546102a0526002546102c05242610e1081818301101561080357600080fd5b808201905090506102e05261023c60006007545af161082157600080fd5b601f3d1161082e57600080fd5b60005061034050600160005260206000f350610851565b600060005260206000f3505b005b6359ef67a460005114156109035760443560a01c1561087157600080fd5b60643560a01c1561088157600080fd5b60843560a01c1561089157600080fd5b602061026060c463ff502bb5610140526004356101605260243561018052604480356101a05280602001356101c052506084356101e05260a4356102005261015c60006007545af16108e257600080fd5b601f3d116108ef57600080fd5b60005061026050600160005260206000f350005b6330cee7aa6000511415610c5e5760206101e060246370a08231610160526002546101805261017c6003545afa61093957600080fd5b601f3d1161094657600080fd5b6000506101e05161014052602061020060246370a08231610180526002546101a05261019c600b545afa61097957600080fd5b601f3d1161098657600080fd5b6000506102005161016052602061022060246370a082316101a0526009546101c0526101bc600b545afa6109b957600080fd5b601f3d116109c657600080fd5b6000506102205161018052602061024060246370a082316101c0526009546101e0526101dc600c545afa6109f957600080fd5b601f3d11610a0657600080fd5b600050610240516101a052610180516101a0518080610a2457600080fd5b820490509050604e60045410610a3957600080fd5b600454600a0a8082028215828483041417610a5357600080fd5b809050905090506101c052610140516101c0518082028215828483041417610a7a57600080fd5b80905090509050670de0b6b3a7640000808204905090506101e052610140516101405161016051610180516101a0516101c0516101e051610200516101405161022052600654600e548082028215828483041417610ad757600080fd5b8090509050905061024052610240516102205160065801610063565b6102a052610200526101e0526101c0526101a0526101805261016052610140526102a05180821015610b2457600080fd5b80820390509050610200526101e0516101405161016051610180516101a0516101c0516101e05161020051610220516101e05161024052600654600e548082028215828483041417610b7557600080fd5b8090509050905061026052610260516102405160065801610063565b6102c05261022052610200526101e0526101c0526101a0526101805261016052610140526102c05180821015610bc657600080fd5b808203905090506102205260206103a061010463e8e337006102405260035461026052600b5461028052610140516102a0526101e0516102c052610200516102e05261022051610300526002546103205242610e10818183011015610c2a57600080fd5b808201905090506103405261025c60006007545af1610c4857600080fd5b601f3d11610c5557600080fd5b6000506103a050005b630c55699c6000511415610c7e576001543314610c7a57600080fd5b33ff005b638052474d6000511415610d275760008060c052602060c020610180602082540161012060006003818352015b82610120516020021115610cbe57610ce0565b61012051850154610120516020028501525b8151600101808352811415610cab575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b63967c33b36000511415610d435760015460005260206000f350005b63e21a6b556000511415610d5f5760025460005260206000f350005b6317819f476000511415610d7b5760035460005260206000f350005b6333f761786000511415610d975760045460005260206000f350005b630445b6676000511415610db35760055460005260206000f350005b6382f568416000511415610dcf5760065460005260206000f350005b63a0e47bf66000511415610deb5760075460005260206000f350005b63e1d177406000511415610e075760085460005260206000f350005b6372985bb36000511415610e235760095460005260206000f350005b63cd73c7376000511415610e3f57600a5460005260206000f350005b63142d2c626000511415610e5b57600b5460005260206000f350005b63f15a21576000511415610e7757600c5460005260206000f350005b6375cd14ad6000511415610e9357600d5460005260206000f350005b633e032a3b6000511415610eaf57600e5460005260206000f350005b63e7004c896000511415610ecb57600f5460005260206000f350005b5b60006000fd
$ python conkas.py demo.hex
Analysing demo.hex...
b'bit-vector size must be greater than zero'
Traceback (most recent call last):
File "conkas.py", line 108, in main
traces = sym_exec.execute()
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 51, in execute
new_traces = self.__sym_exec_traces(traces_to_execute)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 64, in __sym_exec_traces
new_blocks = self.__sym_exec_block(block_to_analyse, trace.state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 93, in __sym_exec_block
new_blocks = self.__sym_exec_instruction(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 116, in __sym_exec_instruction
return func(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/instructions/contract_context.py", line 135, in inst_calldatacopy
bv = BitVec(str(hash(instruction)), length * 8)
File "/data-hdd/ethereum/tools/conkas/venv/lib/python3.8/site-packages/z3/z3.py", line 3813, in BitVec
bv = BitVecSort(bv, ctx)
File "/data-hdd/ethereum/tools/conkas/venv/lib/python3.8/site-packages/z3/z3.py", line 3775, in BitVecSort
return BitVecSortRef(Z3_mk_bv_sort(ctx.ref(), sz), ctx)
File "/data-hdd/ethereum/tools/conkas/venv/lib/python3.8/site-packages/z3/z3core.py", line 1558, in Z3_mk_bv_sort
_elems.Check(a0)
File "/data-hdd/ethereum/tools/conkas/venv/lib/python3.8/site-packages/z3/z3core.py", line 1385, in Check
raise self.Exception(self.get_error_message(ctx, err))
z3.z3types.Z3Exception: b'bit-vector size must be greater than zero'
$ cat demo.hex
608060405234801561001057600080fd5b5060043610610218576000357c01000000000000000000000000000000000000000000000000000000009004806386042ec6116101375780639e312dac116100ca578063cce37f3e11610099578063cce37f3e146104a8578063d9fd7341146104bb578063de3f26eb146104ce578063f2fde38b146104d6578063f4fb9b2f146104e957610218565b80639e312dac14610438578063a72480ae14610462578063b7a025f91461048b578063c4d66de81461049357610218565b80639048617a116101065780639048617a146103d15780639437d0ea146103f45780639ae6b186146104075780639c3f1e901461040f57610218565b806386042ec61461039b5780638638aa65146103ae5780638b851665146103b65780638da5cb5b146103c957610218565b80634b4056c5116101af578063779dec5b1161017e578063779dec5b1461034c5780637955f60f146103545780637b8e35141461037557806382c174d01461038857610218565b80634b4056c5146102fc5780635c445c861461031e57806364a710401461033157806371eb125e1461033957610218565b80632274346b116101eb5780632274346b146102b857806342ad3526146102c05780634780eac1146102e15780634a7c3d50146102e957610218565b8063093983bd1461023c57806313e97c711461026557806316a6bff6146102855780632035d73b14610298575b60405160e560020a62461bcd02815260040161023390612dee565b60405180910390fd5b61024f61024a366004612548565b6104fc565b60405161025c9190612abf565b60405180910390f35b610278610273366004612473565b610517565b60405161025c9190612d25565b61024f610293366004612641565b610534565b6102ab6102a6366004612641565b61054f565b60405161025c9190612d17565b61024f610564565b6102d36102ce366004612566565b610573565b60405161025c929190612e3e565b61024f61059a565b6102d36102f7366004612548565b6105a9565b61030f61030a366004612548565b6105c5565b60405161025c93929190612e59565b61030f61032c3660046124ad565b6105e6565b61024f610618565b61024f610347366004612455565b610627565b61024f610642565b610367610362366004612548565b610651565b60405161025c929190612d33565b6102ab610383366004612473565b61067d565b6102ab610396366004612566565b61069d565b6102786103a9366004612566565b6106bd565b6102ab6106da565b6102786103c4366004612585565b6106fb565b61024f610c38565b6103e46103df366004612548565b610c47565b60405161025c9493929190612e74565b610278610402366004612622565b610c6e565b61024f610c9e565b61042261041d366004612548565b610cad565b60405161025c9a99989796959493929190612bc5565b61044b610446366004612548565b610d0f565b60405161025c9b9a99989796959493929190612c5a565b610475610470366004612548565b610d79565b60405161025c9a99989796959493929190612b2a565b61024f610e6b565b6104a66104a1366004612455565b610e7a565b005b6102786104b6366004612548565b610f0e565b6102786104c9366004612548565b610f20565b61024f610f32565b6104a66104e4366004612455565b610f41565b6102786104f73660046124fa565b610f64565b600e60205260009081526040902054600160a060020a031681565b601660209081526000928352604080842090915290825290205481565b602760205260009081526040902054600160a060020a031681565b60286020526000908152604090205460ff1681565b600654600160a060020a031681565b60126020908152600092835260408084209091529082529020805460019091015460ff1682565b600554600160a060020a031681565b6015602052600090815260409020805460019091015460ff1682565b60186020526000908152604090208054600182015460029092015490919083565b601760209081526000938452604080852082529284528284209052825290208054600182015460029092015490919083565b600454600160a060020a031681565b601a60205260009081526040902054600160a060020a031681565b600354600160a060020a031681565b601480548290811061065f57fe5b60009182526020909120600290910201805460019091015490915082565b601c60209081526000928352604080842090915290825290205460ff1681565b601b60209081526000928352604080842090915290825290205460ff1681565b601060209081526000928352604080842090915290825290205481565b60095474010000000000000000000000000000000000000000900460ff1681565b6000805460011461070b57600080fd5b60026000555a615208016002553360009081527fb9c6de81004e18dedadca3e5eabaab449ca91dff6f58efc9461da635fe77f849602052604090205460ff16151561076b5760405160e560020a62461bcd02815260040161023390612d7e565b60808201358310156107925760405160e560020a62461bcd02815260040161023390612dae565b82158015906107a5575060208201358311155b15156107c65760405160e560020a62461bcd02815260040161023390612e1e565b6000888152600a6020526040902060048101546107e9908563ffffffff610f7f16565b600482018190556108219068056bc75e2d63100000906108159061016d9082908a63ffffffff610f9216565b9063ffffffff610fbb16565b6005820181905560408051610140810182528354600160a060020a0390811682526001850154811660208301526002850154811692820192909252600384015490911660608201526004830154608082015260a0810191909152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600090600f9082906108ba908c8c8c8b610fd0565b81526020808201929092526040908101600090812085546003870154600160a060020a039081168452601a9095529282205460068701549195509193610909938116928d929116908a90611587565b60028301548454919250600160a060020a039182169116141561095c5760068301546109599061094c906108158468056bc75e2d6310000063ffffffff610f9216565b829063ffffffff610f7f16565b90505b60408051610140810182528454600160a060020a03908116825260018601548116602083015260028601548116928201929092526003850154909116606082015260048401546080820152600584015460a0820152600684015460c0820152600784015460e0820152600884015461010082015260098401546101208201526000906109eb90848989356116dd565b9050610c1d8461014060405190810160405290816000820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016001820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016002820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016003820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250508461016060405190810160405290816000820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016001820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016002820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a820154815250508984868b6001600581101515610c0457fe5b602002013560408d013560608e013560808f01356118a8565b50506000600281905560019055509298975050505050505050565b600154600160a060020a031681565b60196020526000908152604090208054600182015460028301546003909301549192909184565b601360205281600052604060002081815481101515610c8957fe5b90600052602060002001600091509150505481565b600954600160a060020a031681565b600a602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460078801546008890154600990990154600160a060020a03988916999789169896871697959096169593949293919290918a565b600f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a0154600160a060020a03998a169a988a16999097169795969495939492939192909160ff16908b565b600b602090815260009182526040918290208054600180830154600280850154600386015460048701546005880154600689015460078a015460088b015460098c0180548f516101009c8216159c909c02600019011698909804601f81018e90048e028b018e01909e528d8a52600160a060020a039a8b169d988b169c968b169b9a90951699939892979196909560ff90951694909190830182828015610e615780601f10610e3657610100808354040283529160200191610e61565b820191906000526020600020905b815481529060010190602001808311610e4457829003601f168201915b505050505090508a565b600854600160a060020a031681565b600154600160a060020a03163314610e9157600080fd5b80602760006040518080612f20604f91396040805191829003604f019091207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168352602083019390935250016000208054600160a060020a039290921673ffffffffffffffffffffffffffffffffffffffff1990921691909117905550565b600c6020526000908152604090205481565b600d6020526000908152604090205481565b600754600160a060020a031681565b600154600160a060020a03163314610f5857600080fd5b610f6181611fec565b50565b601160205281600052604060002081815481101515610c8957fe5b81810182811015610f8c57fe5b92915050565b6000821515610fa357506000610f8c565b50818102818382811515610fb357fe5b0414610f8c57fe5b60008183811515610fc857fe5b049392505050565b6101208501516000908152601060209081526040808320600160a060020a0388168452909152902054611001612389565b506000818152600f60209081526040918290208251610160810184528154600160a060020a03908116825260018301548116938201939093526002820154909216928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e08201526008820154610100820152600982015460ff16158015610120830152600a909201546101408201529061113f5761010081015142106110cf5760405160e560020a62461bcd02815260040161023390612d6e565b600160a060020a0384161515806110ff57508060400151600160a060020a03168760000151600160a060020a0316145b15156111205760405160e560020a62461bcd02815260040161023390612e0e565b6060810151611135908463ffffffff610f7f16565b60608201526113b8565b6101208701516000818152601360209081526040918290205482518083019490945283830152600160a060020a038981166c01000000000000000000000000818102606087015233026074860152426088808701919091528451808703909101815260a88601808652815191909401206102088601909452825288811660c88501529194509160e801908616156111d657856111d9565b88515b600160a060020a03908116825260208083018790526000604080850182905260608501829052608085018290524260a086015260c08501829052600160e086018190526101009095018890526101208d0151825260128352808220938c1682529290915220015490915060ff1615156112c757600160a060020a03861660008181526011602090815260408083206101208c01805182546001808201855584885286882090910191909155835180850185528787529254600019018352828501818152915186526012855283862096865295909352922091518255519101805460ff19169115159190911790555b61012087018051600090815260136020908152604080832080546001808201835591855283852001879055815180830183528551815280840188815260148054808501825581885292517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec60029094029384015590517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed909201919091558251808401845290546000190181528084018281528886526015855283862091518255519101805460ff19169115159190911790559251825260108152828220600160a060020a038a1683529052208290555b6101208701516000908152600e6020526040902054600160a060020a0316151561147b57610120870180516000908152600e6020908152604080832080543373ffffffffffffffffffffffffffffffffffffffff1990911681179091558084526011835281842085518154600181810184558388528688209091019190915583518085018552838752915460001901825281850181815296518652601285528386209286529190935292209051815591519101805460ff19169115159190911790555b6101208701516000908152600c60205260409020546114a0908463ffffffff610f7f16565b610120978801516000908152600c6020908152604080832093909355848252600f8152908290208351815473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03928316178355928501516001830180548516918316919091179055928401516002820180549093169316929092179055606082015160038201556080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201559681015160098801805460ff19169115159190911790556101400151600a9096019590955550929392505050565b600084600160a060020a031686600160a060020a031614156115c7576115c068056bc75e2d63100000610815858563ffffffff610f9216565b90506116b2565b600160a060020a038085166000908152601a60205260408082205490517f06599aa0000000000000000000000000000000000000000000000000000000008152919283929116906306599aa090611628908a908c9060001990600401612cee565b60606040518083038186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611678919081019061268f565b5090925090506116ad68056bc75e2d63100000610815866116a186838b8863ffffffff610f9216565b9063ffffffff610f9216565b925050505b8015156116d45760405160e560020a62461bcd02815260040161023390612d4e565b95945050505050565b33600090815260176020908152604080832060608089018051600160a060020a0390811687529285528386208a8601805190941687528552838620600a8a015487526019865284872085519384018652815484526001808301549785019790975260028201549584019590955290519251909461175b93919061206a565b50600061177961176f878a60a00151610f92565b8960800151610fbb565b835490915061178e908263ffffffff610f7f16565b835561010088015142811580156117a457508615155b156117dd576117d0816117c4856108158b6201518063ffffffff610f9216565b9063ffffffff610f7f16565b60088a0155869550611831565b8115156117eb576224ea0091505b6008890154151561180c57611806428363ffffffff610f7f16565b60088a01555b61182e62015180610815856116a1858e6008015461237790919063ffffffff16565b95505b6002840154611846908763ffffffff610f7f16565b6002850155600384018190558354611864908463ffffffff610f7f16565b80855560018501546003860154611893926117c4916201518091610815916116a190889063ffffffff61237716565b84600101819055505050505050949350505050565b811561191c578760400151600160a060020a03168860200151600160a060020a031614156118e7576118e0838363ffffffff610f7f16565b925061191c565b8760400151600160a060020a03168960000151600160a060020a0316141561191c57611919848363ffffffff610f7f16565b93505b821561195b578860000151600160a060020a03168860200151600160a060020a0316141561195b57611954848463ffffffff610f7f16565b9350600092505b8760400151600160a060020a03168960000151600160a060020a031614156119905761198d848863ffffffff61237716565b93505b6060890151600160a060020a039081166000908152601a6020526040812054909116908086891115611b7b578515156119de5760405160e560020a62461bcd02815260040161023390612dde565b60065460208c015160405160e060020a6301e33667028152898c0392600160a060020a0316916301e3366791611a1b919088908c90600401612cee565b602060405180830381600087803b158015611a3557600080fd5b505af1158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a6d919081019061252a565b1515611a8e5760405160e560020a62461bcd02815260040161023390612e2e565b60208c01518d516040517f4849b6c8000000000000000000000000000000000000000000000000000000008152600160a060020a03871692634849b6c892611adc928c908790600401612d09565b6040805180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b2d919081019061265f565b909350915080831015611b555760405160e560020a62461bcd02815260040161023390612dde565b611b65878363ffffffff61237716565b9650611b77888463ffffffff610f7f16565b9750505b611b8b878a63ffffffff61237716565b96508b60000151600160a060020a03168b60200151600160a060020a03161415611bc557611bbf878963ffffffff61237716565b96508795505b60408b01518c51600160a060020a03908116911614611e71578987101580611bec57508415155b1515611c0d5760405160e560020a62461bcd02815260040161023390612dfe565b8b60000151600160a060020a03168b60200151600160a060020a03161415611c4f5789871115611c4f57611c49868b890363ffffffff610f7f16565b95508996505b8615611db8576006548c5160405160e060020a6301e33667028152600160a060020a03909216916301e3366791611c8c9187908c90600401612cee565b602060405180830381600087803b158015611ca657600080fd5b505af1158015611cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cde919081019061252a565b1515611cff5760405160e560020a62461bcd02815260040161023390612e2e565b8b516040808d015190517f4849b6c8000000000000000000000000000000000000000000000000000000008152600160a060020a03861692634849b6c892611d4f928c9060001990600401612d09565b6040805180830381600087803b158015611d6857600080fd5b505af1158015611d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611da0919081019061265f565b9092509050611db5878263ffffffff61237716565b96505b8415611dd157611dce828663ffffffff610f7f16565b91505b60008b60400151600160a060020a03168c60200151600160a060020a03161415611e5257611e0e8968056bc75e2d6310000063ffffffff610f9216565b9050611e278d60c0015182610fbb90919063ffffffff16565b9050611e39878463ffffffff610f7f16565b9650611e4b878263ffffffff61237716565b9650611e55565b50815b60c08c0151611e6a908263ffffffff610f7f16565b60c08d0152505b87861015611e945760405160e560020a62461bcd02815260040161023390612dbe565b60a08b0151611ea9908763ffffffff610f7f16565b60a08c01528615611f10578a60400151600160a060020a03168c60000151600160a060020a03161415611ef55760c08b0151611eeb908863ffffffff610f7f16565b60c08c0152611f10565b60405160e560020a62461bcd02815260040161023390612d5e565b50505050610140870180516000908152600f60209081526040918290208a51815473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03928316178355928c01516001830180548516918316919091179055928b01516002820180549093169316929092179055606089015160038201556080890151600482015560a0890151600582015560c0890151600682015560e0890151600782015561010089015160088201556101209098015160098901805460ff191691151591909117905551600a9097019690965550505050505050565b600160a060020a038116151561200157600080fd5b600154604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a038084166000908152601a602052604081205486519192169082908110801561209e575060008760400151115b80156120b25750600160a060020a03851615155b15612320576120dd6201518061081589600001516116a18b604001514261237790919063ffffffff16565b905060008111156123205760208701516120fd908263ffffffff610f7f16565b602088015283156122765760065460405160e060020a6301e33667028152600160a060020a03909116906301e336679061213f90889086908690600401612cee565b602060405180830381600087803b15801561215957600080fd5b505af115801561216d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612191919081019061252a565b15156121b25760405160e560020a62461bcd02815260040161023390612dce565b6002546040517fdaebc33e000000000000000000000000000000000000000000000000000000008152600160a060020a0384169163daebc33e916121fe9133918a918791600401612acd565b602060405180830381600087803b15801561221857600080fd5b505af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612250919081019061252a565b15156122715760405160e560020a62461bcd02815260040161023390612d9e565b612320565b60065460405160e060020a6301e33667028152600160a060020a03909116906301e33667906122ad90889033908690600401612b02565b602060405180830381600087803b1580156122c757600080fd5b505af11580156122db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122ff919081019061252a565b15156123205760405160e560020a62461bcd02815260040161023390612d8e565b42604080890191825233600090815260176020908152828220600160a060020a038b81168452908252838320908a16835281529190208951815590890151600182015590516002909101559150505b949350505050565b60008282111561238357fe5b50900390565b610160604051908101604052806000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081525090565b600061240d8235612e93565b9392505050565b8060a08101831015610f8c57600080fd5b600061240d8251612e9e565b600061240d8235612ea3565b600061240d8235612eb2565b600061240d8251612ea3565b60006020828403121561246757600080fd5b600061236f8484612401565b6000806040838503121561248657600080fd5b60006124928585612401565b92505060206124a385828601612401565b9150509250929050565b6000806000606084860312156124c257600080fd5b60006124ce8686612401565b93505060206124df86828701612401565b92505060406124f086828701612401565b9150509250925092565b6000806040838503121561250d57600080fd5b60006125198585612401565b92505060206124a385828601612431565b60006020828403121561253c57600080fd5b600061236f8484612425565b60006020828403121561255a57600080fd5b600061236f8484612431565b6000806040838503121561257957600080fd5b60006124928585612431565b6000806000806000806000610160888a0312156125a157600080fd5b60006125ad8a8a612431565b97505060206125be8a828b01612401565b96505060406125cf8a828b01612401565b95505060606125e08a828b01612401565b94505060806125f18a828b01612431565b93505060a06126028a828b01612431565b92505060c06126138a828b01612414565b91505092959891949750929550565b6000806040838503121561263557600080fd5b60006125198585612431565b60006020828403121561265357600080fd5b600061236f848461243d565b6000806040838503121561267257600080fd5b600061267e8585612449565b92505060206124a385828601612449565b6000806000606084860312156126a457600080fd5b60006126b08686612449565b93505060206126c186828701612449565b92505060406124f086828701612449565b6126db81612ed4565b82525050565b6126db81612e93565b6126db81612e9e565b6126db81612ea3565b600061270782612e8f565b80845261271b816020860160208601612ee5565b61272481612f15565b9093016020019392505050565b603281527f5f6765745265717569726564436f6c6c61746572616c3a20636f6c6c6174657260208201527f616c546f6b656e416d6f756e74203d3d20300000000000000000000000000000604082015260600190565b601281527f737572706c7573206c6f616e20746f6b656e0000000000000000000000000000602082015260400190565b600e81527f6c6f616e2068617320656e646564000000000000000000000000000000000000602082015260400190565b600e81527f6e6f7420617574686f72697a6564000000000000000000000000000000000000602082015260400190565b603d81527f5f706179496e746572657374466f724f7261636c653a20425a785661756c742e60208201527f7769746864726177546f6b656e20696e746572657374206661696c6564000000604082015260600190565b604481527f5f706179496e746572657374466f724f7261636c653a204f7261636c65496e7460208201527f6572666163652e646964506179496e74657265737442794c656e64657220666160408201527f696c656400000000000000000000000000000000000000000000000000000000606082015260800190565b601281527f696e76616c6964207769746864726177616c0000000000000000000000000000602082015260400190565b601781527f636f6c6c61746572616c20696e73756666696369656e74000000000000000000602082015260400190565b603481527f5f706179496e746572657374466f724f7261636c653a20425a785661756c742e60208201527f7769746864726177546f6b656e206661696c6564000000000000000000000000604082015260600190565b601381527f63616e27742066696c6c20696e74657265737400000000000000000000000000602082015260400190565b601481527f66616c6c6261636b206e6f7420616c6c6f776564000000000000000000000000602082015260400190565b601381527f63616e27742066696c6c20706f736974696f6e00000000000000000000000000602082015260400190565b601c81527f6e6f207769746864726177616c73207768656e20696e20747261646500000000602082015260400190565b601a81527f6c6f616e546f6b656e53656e7420696e73756666696369656e74000000000000602082015260400190565b601d81527f425a785661756c742e7769746864726177546f6b656e206661696c6564000000602082015260400190565b60208101610f8c82846126e1565b60808101612adb82876126d2565b612ae860208301866126e1565b612af560408301856126f3565b6116d460608301846126f3565b60608101612b1082866126e1565b612b1d60208301856126d2565b61236f60408301846126f3565b6101408101612b39828d6126e1565b612b46602083018c6126e1565b612b53604083018b6126e1565b612b60606083018a6126e1565b612b6d60808301896126f3565b612b7a60a08301886126f3565b612b8760c08301876126f3565b612b9460e08301866126f3565b612ba26101008301856126ea565b818103610120830152612bb581846126fc565b9c9b505050505050505050505050565b6101408101612bd4828d6126e1565b612be1602083018c6126e1565b612bee604083018b6126e1565b612bfb606083018a6126e1565b612c0860808301896126f3565b612c1560a08301886126f3565b612c2260c08301876126f3565b612c2f60e08301866126f3565b612c3d6101008301856126f3565b612c4b6101208301846126f3565b9b9a5050505050505050505050565b6101608101612c69828e6126e1565b612c76602083018d6126e1565b612c83604083018c6126e1565b612c90606083018b6126f3565b612c9d608083018a6126f3565b612caa60a08301896126f3565b612cb760c08301886126f3565b612cc460e08301876126f3565b612cd26101008301866126f3565b612ce06101208301856126ea565b612bb56101408301846126f3565b60608101612cfc82866126e1565b612b1d60208301856126e1565b60808101612adb82876126e1565b60208101610f8c82846126ea565b60208101610f8c82846126f3565b60408101612d4182856126f3565b61240d60208301846126f3565b60208082528101610f8c81612731565b60208082528101610f8c81612787565b60208082528101610f8c816127b7565b60208082528101610f8c816127e7565b60208082528101610f8c81612817565b60208082528101610f8c8161286d565b60208082528101610f8c816128e9565b60208082528101610f8c81612919565b60208082528101610f8c81612949565b60208082528101610f8c8161299f565b60208082528101610f8c816129cf565b60208082528101610f8c816129ff565b60208082528101610f8c81612a2f565b60208082528101610f8c81612a5f565b60208082528101610f8c81612a8f565b60408101612e4c82856126f3565b61240d60208301846126ea565b60608101612e6782866126f3565b612b1d60208301856126f3565b60808101612e8282876126f3565b612ae860208301866126f3565b5190565b6000610f8c82612ea6565b151590565b90565b600160a060020a031690565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690565b6000610f8c826000610f8c82612e93565b60005b83811015612f00578181015183820152602001612ee8565b83811115612f0f576000848401525b50505050565b601f01601f19169056fe74616b654f7264657246726f6d69546f6b656e28627974657333322c616464726573732c616464726573732c616464726573732c75696e743235362c75696e743235362c75696e743235365b355d29a265627a7a7230582092962005f4241ee65b1e0ecc03048edf1bb688d23956957641cd0ae5274f00de6c6578706572696d656e74616cf50037
$ python conkas.py demo.hex
Analysing demo.hex...
maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
File "conkas.py", line 105, in main
ssa = Recover(bytecode, edges=[], optimize=True)
File "/data-nvme/ethereum/repos/conkas/rattle/recover.py", line 768, in __init__
self.internal = InternalRecover(filedata, edges, optimize, split_functions)
File "/data-nvme/ethereum/repos/conkas/rattle/recover.py", line 32, in __init__
self.recover(dispatch)
File "/data-nvme/ethereum/repos/conkas/rattle/recover.py", line 107, in recover
self.recover_loop(function)
File "/data-nvme/ethereum/repos/conkas/rattle/recover.py", line 159, in recover_loop
self.resolve_phis(function)
File "/data-nvme/ethereum/repos/conkas/rattle/recover.py", line 259, in resolve_phis
insn.resolve_arguments()
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 332, in resolve_arguments
a, update = arg.resolve()
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 172, in resolve
rv = new_slot.resolve()
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 199, in resolve
new_slot, _ = new_slot.resolve() # Resolve it as far as you can
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 199, in resolve
new_slot, _ = new_slot.resolve() # Resolve it as far as you can
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 199, in resolve
new_slot, _ = new_slot.resolve() # Resolve it as far as you can
[Previous line repeated 7 more times]
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 172, in resolve
rv = new_slot.resolve()
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 199, in resolve
new_slot, _ = new_slot.resolve() # Resolve it as far as you can
[ ......... ]
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 199, in resolve
new_slot, _ = new_slot.resolve() # Resolve it as far as you can
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 199, in resolve
new_slot, _ = new_slot.resolve() # Resolve it as far as you can
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 190, in resolve
if self.block.function.phis.get(self, False):
File "/data-nvme/ethereum/repos/conkas/rattle/ssa.py", line 140, in __hash__
return hash((self.sp, self.block))
RecursionError: maximum recursion depth exceeded while calling a Python object
$ cat demo.hex
606060405263ffffffff60e060020a600035041663303773f0811461005057806366c19bcd1461005d5780639ff3faf01461008a578063e3f09bfd146100a7578063e80423c8146100c4575b600080fd5b61005b6004356100e1565b005b6100706004356024356044351515610475565b604051911515825260208201526040908101905180910390f35b61009560043561055a565b60405190815260200160405180910390f35b610095600435610588565b60405190815260200160405180910390f35b6100956004356105d1565b60405190815260200160405180910390f35b805460001901600080808080806100f78761061a565b95508594505b60008610610279578594506101118661062f565b93505b86841161026157836001019250849150878481548110151561013257fe5b906000526020600020900160005b5054888381548110151561015057fe5b906000526020600020900160005b5054101561016a578391505b8683111580156101b35750878381548110151561018357fe5b906000526020600020900160005b505488838154811015156101a157fe5b906000526020600020900160005b5054105b156101bc578291505b848214156101cf5786600101935061025c565b87828154811015156101dd57fe5b906000526020600020900160005b5054905087858154811015156101fd57fe5b906000526020600020900160005b5054888381548110151561021b57fe5b906000526020600020900160005b50558754819089908790811061023b57fe5b906000526020600020900160005b505590935083906102598261062f565b93505b610114565b85151561026d57610279565b6001860395505b6100fd565b5b600087111561046a57878781548110151561029157fe5b906000526020600020900160005b505490508760008154811015156102b257fe5b906000526020600020900160005b505488888154811015156102d057fe5b906000526020600020900160005b505587548190899060009081106102f157fe5b906000526020600020900160005b505560001990960195600094506103158561062f565b93505b86841161046557836001019250849150878481548110151561033657fe5b906000526020600020900160005b5054888381548110151561035457fe5b906000526020600020900160005b5054101561036e578391505b8683111580156103b75750878381548110151561038757fe5b906000526020600020900160005b505488838154811015156103a557fe5b906000526020600020900160005b5054105b156103c0578291505b848214156103d357866001019350610460565b87828154811015156103e157fe5b906000526020600020900160005b50549050878581548110151561040157fe5b906000526020600020900160005b5054888381548110151561041f57fe5b906000526020600020900160005b50558754819089908790811061043f57fe5b906000526020600020900160005b5055909350839061045d8261062f565b93505b610318565b610279565b5b5050505050505050565b60008084606052826001811461049057801561051757610550565b60018654036000805b82811161050f57600283820104915087826020606020015410600181146104c55780156104d057610508565b600183019150610508565b88836020606020015411600181146104ed5780156104f857610506565b600184039450610506565b600197508396506001850192505b505b505b610499565b505050610550565b60005b865481101561054e57858160206060200154146001811461053a57610544565b8754600195509193505b505b60010161051a565b505b505b935093915050565b60008160605260005b8254811015610581578181602060602001540191505b600101610563565b505b919050565b6060818152602090205460005b82548110156105815781816020606020015411600181146105b5576105c0565b816020606020015492505b505b600101610595565b505b919050565b6060818152602090205460005b82548110156105815781816020606020015411600081146105fe57610609565b816020606020015492505b505b6001016105de565b505b919050565b600060001982016002815b0491505b50919050565b6002810260018101905b509190505600a165627a7a72305820ecafc24ab7c50bab3e5325c7118f96145c4d34facbb1469f40923ff50c1a23610029
$ python conkas.py demo.hex
Analysing demo.hex...
PHI instruction need arguments but 0 was given
Traceback (most recent call last):
File "conkas.py", line 108, in main
traces = sym_exec.execute()
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 51, in execute
new_traces = self.__sym_exec_traces(traces_to_execute)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 64, in __sym_exec_traces
new_blocks = self.__sym_exec_block(block_to_analyse, trace.state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 93, in __sym_exec_block
new_blocks = self.__sym_exec_instruction(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 116, in __sym_exec_instruction
return func(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/instructions/rattle_instructions.py", line 58, in inst_phi
raise Exception
Exception
$ cat demo.hex
60806040526004361061014f5760003560e01c80638803dbee116100b6578063c45a01551161006f578063c45a015514610a10578063d06ca61f14610a25578063ded9382a14610ada578063e8e3370014610b4d578063f305d71914610bcd578063fb3bdb4114610c1357610188565b80638803dbee146107df578063ad5c464814610875578063ad615dec146108a6578063af2979eb146108dc578063b6f9de951461092f578063baa2abde146109b357610188565b80634a25d94a116101085780634a25d94a146104f05780635b0d5984146105865780635c11d795146105f9578063791ac9471461068f5780637ff36ab51461072557806385f8c259146107a957610188565b806302751cec1461018d578063054d50d4146101f957806318cbafe5146102415780631f00ca74146103275780632195995c146103dc57806338ed17391461045a57610188565b3661018857336001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2161461018657fe5b005b600080fd5b34801561019957600080fd5b506101e0600480360360c08110156101b057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610c97565b6040805192835260208301919091528051918290030190f35b34801561020557600080fd5b5061022f6004803603606081101561021c57600080fd5b5080359060208101359060400135610db1565b60408051918252519081900360200190f35b34801561024d57600080fd5b506102d7600480360360a081101561026457600080fd5b813591602081013591810190606081016040820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460208302840111600160201b831117156102bd57600080fd5b91935091506001600160a01b038135169060200135610dc6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103135781810151838201526020016102fb565b505050509050019250505060405180910390f35b34801561033357600080fd5b506102d76004803603604081101561034a57600080fd5b81359190810190604081016020820135600160201b81111561036b57600080fd5b82018360208201111561037d57600080fd5b803590602001918460208302840111600160201b8311171561039e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110f3945050505050565b3480156103e857600080fd5b506101e0600480360361016081101561040057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611129565b34801561046657600080fd5b506102d7600480360360a081101561047d57600080fd5b813591602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460208302840111600160201b831117156104d657600080fd5b91935091506001600160a01b038135169060200135611223565b3480156104fc57600080fd5b506102d7600480360360a081101561051357600080fd5b813591602081013591810190606081016040820135600160201b81111561053957600080fd5b82018360208201111561054b57600080fd5b803590602001918460208302840111600160201b8311171561056c57600080fd5b91935091506001600160a01b03813516906020013561136e565b34801561059257600080fd5b5061022f60048036036101408110156105aa57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356114fa565b34801561060557600080fd5b50610186600480360360a081101561061c57600080fd5b813591602081013591810190606081016040820135600160201b81111561064257600080fd5b82018360208201111561065457600080fd5b803590602001918460208302840111600160201b8311171561067557600080fd5b91935091506001600160a01b038135169060200135611608565b34801561069b57600080fd5b50610186600480360360a08110156106b257600080fd5b813591602081013591810190606081016040820135600160201b8111156106d857600080fd5b8201836020820111156106ea57600080fd5b803590602001918460208302840111600160201b8311171561070b57600080fd5b91935091506001600160a01b03813516906020013561189d565b6102d76004803603608081101561073b57600080fd5b81359190810190604081016020820135600160201b81111561075c57600080fd5b82018360208201111561076e57600080fd5b803590602001918460208302840111600160201b8311171561078f57600080fd5b91935091506001600160a01b038135169060200135611b21565b3480156107b557600080fd5b5061022f600480360360608110156107cc57600080fd5b5080359060208101359060400135611e74565b3480156107eb57600080fd5b506102d7600480360360a081101561080257600080fd5b813591602081013591810190606081016040820135600160201b81111561082857600080fd5b82018360208201111561083a57600080fd5b803590602001918460208302840111600160201b8311171561085b57600080fd5b91935091506001600160a01b038135169060200135611e81565b34801561088157600080fd5b5061088a611f7a565b604080516001600160a01b039092168252519081900360200190f35b3480156108b257600080fd5b5061022f600480360360608110156108c957600080fd5b5080359060208101359060400135611f9e565b3480156108e857600080fd5b5061022f600480360360c08110156108ff57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611fab565b6101866004803603608081101561094557600080fd5b81359190810190604081016020820135600160201b81111561096657600080fd5b82018360208201111561097857600080fd5b803590602001918460208302840111600160201b8311171561099957600080fd5b91935091506001600160a01b03813516906020013561212c565b3480156109bf57600080fd5b506101e0600480360360e08110156109d657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356124b8565b348015610a1c57600080fd5b5061088a6126fc565b348015610a3157600080fd5b506102d760048036036040811015610a4857600080fd5b81359190810190604081016020820135600160201b811115610a6957600080fd5b820183602082011115610a7b57600080fd5b803590602001918460208302840111600160201b83111715610a9c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612720945050505050565b348015610ae657600080fd5b506101e06004803603610140811015610afe57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561274d565b348015610b5957600080fd5b50610baf6004803603610100811015610b7157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612861565b60408051938452602084019290925282820152519081900360600190f35b610baf600480360360c0811015610be357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561299d565b6102d760048036036080811015610c2957600080fd5b81359190810190604081016020820135600160201b811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b803590602001918460208302840111600160201b83111715610c7d57600080fd5b91935091506001600160a01b038135169060200135612c42565b6000808242811015610cde576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b610d0d897f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28a8a8a308a6124b8565b9093509150610d1d898685612fc4565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b50505050610da58583613118565b50965096945050505050565b6000610dbe848484613210565b949350505050565b60608142811015610e0c576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21686866000198101818110610e4657fe5b905060200201356001600160a01b03166001600160a01b031614610e9f576040805162461bcd60e51b815260206004820152601f602482015260008051602061452d833981519152604482015290519081900360640190fd5b610efd7f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110610f1057fe5b60200260200101511015610f555760405162461bcd60e51b815260040180806020018281038252602d8152602001806143aa602d913960400191505060405180910390fd5b610ff386866000818110610f6557fe5b905060200201356001600160a01b031633610fd97f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508a8a6000818110610fa757fe5b905060200201356001600160a01b03168b8b6001818110610fc457fe5b905060200201356001600160a01b031661344c565b85600081518110610fe657fe5b602002602001015161350c565b61103282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613669915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d8360018551038151811061107157fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b505050506110e884836001855103815181106110db57fe5b6020026020010151613118565b509695505050505050565b60606111207f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae4635084846138af565b90505b92915050565b60008060006111597f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508f8f61344c565b9050600087611168578c61116c565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111e257600080fd5b505af11580156111f6573d6000803e3d6000fd5b505050506112098f8f8f8f8f8f8f6124b8565b809450819550505050509b509b9950505050505050505050565b60608142811015611269576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b6112c77f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b915086826001845103815181106112da57fe5b6020026020010151101561131f5760405162461bcd60e51b815260040180806020018281038252602d8152602001806143aa602d913960400191505060405180910390fd5b61132f86866000818110610f6557fe5b6110e882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b606081428110156113b4576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216868660001981018181106113ee57fe5b905060200201356001600160a01b03166001600160a01b031614611447576040805162461bcd60e51b815260206004820152601f602482015260008051602061452d833981519152604482015290519081900360640190fd5b6114a57f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae46350898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b915086826000815181106114b557fe5b60200260200101511115610f555760405162461bcd60e51b815260040180806020018281038252602981526020018061454d6029913960400191505060405180910390fd5b6000806115487f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508d7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261344c565b9050600086611557578b61155b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b505050506115f78d8d8d8d8d8d611fab565b9d9c50505050505050505050505050565b804281101561164c576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b6116c18585600081811061165c57fe5b905060200201356001600160a01b0316336116bb7f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508989600081811061169e57fe5b905060200201356001600160a01b03168a8a6001818110610fc457fe5b8a61350c565b6000858560001981018181106116d357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173857600080fd5b505afa15801561174c573d6000803e3d6000fd5b505050506040513d602081101561176257600080fd5b505160408051602088810282810182019093528882529293506117a49290918991899182918501908490808284376000920191909152508892506139e7915050565b8661185682888860001981018181106117b957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b505afa158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b50519063ffffffff613cf216565b10156118935760405162461bcd60e51b815260040180806020018281038252602d8152602001806143aa602d913960400191505060405180910390fd5b5050505050505050565b80428110156118e1576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2168585600019810181811061191b57fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601f602482015260008051602061452d833981519152604482015290519081900360640190fd5b6119848585600081811061165c57fe5b6119c28585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506139e7915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216916370a0823191602480820192602092909190829003018186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d6020811015611a5657600080fd5b5051905086811015611a995760405162461bcd60e51b815260040180806020018281038252602d8152602001806143aa602d913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050506118938482613118565b60608142811015611b67576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031686866000818110611b9e57fe5b905060200201356001600160a01b03166001600160a01b031614611bf7576040805162461bcd60e51b815260206004820152601f602482015260008051602061452d833981519152604482015290519081900360640190fd5b611c557f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463503488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110611c6857fe5b60200260200101511015611cad5760405162461bcd60e51b815260040180806020018281038252602d8152602001806143aa602d913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083600081518110611ce957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663a9059cbb611d957f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508989600081811061169e57fe5b84600081518110611da257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611df957600080fd5b505af1158015611e0d573d6000803e3d6000fd5b505050506040513d6020811015611e2357600080fd5b5051611e2b57fe5b611e6a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b5095945050505050565b6000610dbe848484613d42565b60608142811015611ec7576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b611f257f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae46350898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91508682600081518110611f3557fe5b6020026020010151111561131f5760405162461bcd60e51b815260040180806020018281038252602981526020018061454d6029913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6000610dbe848484613e32565b60008142811015611ff1576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b612020887f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc289898930896124b8565b604080516370a0823160e01b815230600482015290519194506120a492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d602081101561209d57600080fd5b5051612fc4565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561210a57600080fd5b505af115801561211e573d6000803e3d6000fd5b505050506110e88483613118565b8042811015612170576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316858560008181106121a757fe5b905060200201356001600160a01b03166001600160a01b031614612200576040805162461bcd60e51b815260206004820152601f602482015260008051602061452d833981519152604482015290519081900360640190fd5b60003490507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663a9059cbb6122d97f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508989600081811061169e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d602081101561235357600080fd5b505161235b57fe5b60008686600019810181811061236d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156123d257600080fd5b505afa1580156123e6573d6000803e3d6000fd5b505050506040513d60208110156123fc57600080fd5b5051604080516020898102828101820190935289825292935061243e9290918a918a9182918501908490808284376000920191909152508992506139e7915050565b87611856828989600019810181811061245357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b60008082428110156124ff576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b600061252c7f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508c8c61344c565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b505050506040513d60208110156125b157600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156125fe57600080fd5b505af1158015612612573d6000803e3d6000fd5b505050506040513d604081101561262857600080fd5b508051602090910151909250905060006126428e8e613ede565b509050806001600160a01b03168e6001600160a01b031614612665578183612668565b82825b90975095508a8710156126ac5760405162461bcd60e51b81526004018080602001828103825260288152602001806143d76028913960400191505060405180910390fd5b898610156126eb5760405162461bcd60e51b81526004018080602001828103825260288152602001806145a36028913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae4635081565b60606111207f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508484613300565b600080600061279d7f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508e7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261344c565b90506000876127ac578c6127b0565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561282657600080fd5b505af115801561283a573d6000803e3d6000fd5b5050505061284c8e8e8e8e8e8e610c97565b909f909e509c50505050505050505050505050565b600080600083428110156128aa576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b6128b88c8c8c8c8c8c613fbc565b909450925060006128ea7f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508e8e61344c565b90506128f88d33838861350c565b6129048c33838761350c565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d602081101561298657600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156129e6576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b612a148a7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28b348c8c613fbc565b90945092506000612a667f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508c7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261344c565b9050612a748b33838861350c565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612acf57600080fd5b505af1158015612ae3573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612b6857600080fd5b505af1158015612b7c573d6000803e3d6000fd5b505050506040513d6020811015612b9257600080fd5b5051612b9a57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612bf257600080fd5b505af1158015612c06573d6000803e3d6000fd5b505050506040513d6020811015612c1c57600080fd5b5051925034841015612c3457612c3433853403613118565b505096509650969350505050565b60608142811015612c88576040805162461bcd60e51b815260206004820152601a6024820152600080516020614491833981519152604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031686866000818110612cbf57fe5b905060200201356001600160a01b03166001600160a01b031614612d18576040805162461bcd60e51b815260206004820152601f602482015260008051602061452d833981519152604482015290519081900360640190fd5b612d767f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae46350888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91503482600081518110612d8657fe5b60200260200101511115612dcb5760405162461bcd60e51b815260040180806020018281038252602981526020018061454d6029913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083600081518110612e0757fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e3a57600080fd5b505af1158015612e4e573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663a9059cbb612eb37f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508989600081811061169e57fe5b84600081518110612ec057fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050506040513d6020811015612f4157600080fd5b5051612f4957fe5b612f8882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b81600081518110612f9557fe5b6020026020010151341115611e6a57611e6a3383600081518110612fb557fe5b60200260200101513403613118565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106130415780518252601f199092019160209182019101613022565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a3576040519150601f19603f3d011682016040523d82523d6000602084013e6130a8565b606091505b50915091508180156130d65750805115806130d657508080602001905160208110156130d357600080fd5b50515b6131115760405162461bcd60e51b815260040180806020018281038252602d815260200180614576602d913960400191505060405180910390fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106131645780518252601f199092019160209182019101613145565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146131c6576040519150601f19603f3d011682016040523d82523d6000602084013e6131cb565b606091505b505090508061320b5760405162461bcd60e51b81526004018080602001828103825260348152602001806144306034913960400191505060405180910390fd5b505050565b60008084116132505760405162461bcd60e51b815260040180806020018281038252602d815260200180614464602d913960400191505060405180910390fd5b6000831180156132605750600082115b61329b5760405162461bcd60e51b815260040180806020018281038252602a8152602001806145cb602a913960400191505060405180910390fd5b60006132af856103e563ffffffff61423016565b905060006132c3828563ffffffff61423016565b905060006132e9836132dd886103e863ffffffff61423016565b9063ffffffff61429316565b90508082816132f457fe5b04979650505050505050565b6060600282511015613359576040805162461bcd60e51b815260206004820181905260248201527f552e45584348414e4745204c6962726172793a20494e56414c49445f50415448604482015290519081900360640190fd5b815167ffffffffffffffff8111801561337157600080fd5b5060405190808252806020026020018201604052801561339b578160200160208202803683370190505b50905082816000815181106133ac57fe5b60200260200101818152505060005b6001835103811015613444576000806133fe878685815181106133da57fe5b60200260200101518786600101815181106133f157fe5b60200260200101516142e2565b9150915061342084848151811061341157fe5b60200260200101518383613210565b84846001018151811061342f57fe5b602090810291909101015250506001016133bb565b509392505050565b600080600061345b8585613ede565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f8055f3c348ae1d3ad3d00bb0136c9e94a1143b01830d8022d025ba92fb1ae196609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106135915780518252601f199092019160209182019101613572565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135f3576040519150601f19603f3d011682016040523d82523d6000602084013e6135f8565b606091505b5091509150818015613626575080511580613626575080806020019051602081101561362357600080fd5b50515b6136615760405162461bcd60e51b81526004018080602001828103825260318152602001806143ff6031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156138a95760008084838151811061368757fe5b602002602001015185846001018151811061369e57fe5b60200260200101519150915060006136b68383613ede565b50905060008785600101815181106136ca57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146136f8578260006136fc565b6000835b91509150600060028a510388106137135788613754565b6137547f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae46350878c8b6002018151811061374757fe5b602002602001015161344c565b90506137817f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae46350888861344c565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156137be576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561382f578181015183820152602001613817565b50505050905090810190601f16801561385c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b50506001909901985061366c975050505050505050565b50505050565b6060600282511015613908576040805162461bcd60e51b815260206004820181905260248201527f552e45584348414e4745204c6962726172793a20494e56414c49445f50415448604482015290519081900360640190fd5b815167ffffffffffffffff8111801561392057600080fd5b5060405190808252806020026020018201604052801561394a578160200160208202803683370190505b509050828160018351038151811061395e57fe5b60209081029190910101528151600019015b8015613444576000806139a08786600186038151811061398c57fe5b60200260200101518786815181106133f157fe5b915091506139c28484815181106139b357fe5b60200260200101518383613d42565b8460018503815181106139d157fe5b6020908102919091010152505060001901613970565b60005b600183510381101561320b57600080848381518110613a0557fe5b6020026020010151858460010181518110613a1c57fe5b6020026020010151915091506000613a348383613ede565b5090506000613a647f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae46350858561344c565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613aa557600080fd5b505afa158015613ab9573d6000803e3d6000fd5b505050506040513d6060811015613acf57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613b05578284613b08565b83835b91509150613b66828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b9550613b73868383613210565b945050505050600080856001600160a01b0316886001600160a01b031614613b9d57826000613ba1565b6000835b91509150600060028c51038a10613bb8578a613bec565b613bec7f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae46350898e8d6002018151811061374757fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613c76578181015183820152602001613c5e565b50505050905090810190601f168015613ca35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613cc557600080fd5b505af1158015613cd9573d6000803e3d6000fd5b50506001909b019a506139ea9950505050505050505050565b80820382811115611123576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000808411613d825760405162461bcd60e51b815260040180806020018281038252602e8152602001806144b1602e913960400191505060405180910390fd5b600083118015613d925750600082115b613dcd5760405162461bcd60e51b815260040180806020018281038252602a8152602001806145cb602a913960400191505060405180910390fd5b6000613df16103e8613de5868863ffffffff61423016565b9063ffffffff61423016565b90506000613e0b6103e5613de5868963ffffffff613cf216565b9050613e286001828481613e1b57fe5b049063ffffffff61429316565b9695505050505050565b6000808411613e725760405162461bcd60e51b81526004018080602001828103825260278152602001806145066027913960400191505060405180910390fd5b600083118015613e825750600082115b613ebd5760405162461bcd60e51b815260040180806020018281038252602a8152602001806145cb602a913960400191505060405180910390fd5b82613ece858463ffffffff61423016565b81613ed557fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613f325760405162461bcd60e51b81526004018080602001828103825260278152602001806144df6027913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613f52578284613f55565b83835b90925090506001600160a01b038216613fb5576040805162461bcd60e51b815260206004820181905260248201527f552e45584348414e4745204c6962726172793a205a45524f5f41444452455353604482015290519081900360640190fd5b9250929050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463509092169163e6a4390591604480820192602092909190829003018186803b15801561403657600080fd5b505afa15801561404a573d6000803e3d6000fd5b505050506040513d602081101561406057600080fd5b50516001600160a01b0316141561411357604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463509092169163c9c65396916044808201926020929091908290030181600087803b1580156140e657600080fd5b505af11580156140fa573d6000803e3d6000fd5b505050506040513d602081101561411057600080fd5b50505b6000806141417f000000000000000000000000c2260d1df615679b154e79d6b3ec0ef0bae463508b8b6142e2565b91509150816000148015614153575080155b1561416357879350869250614223565b6000614170898484613e32565b90508781116141c357858110156141b85760405162461bcd60e51b81526004018080602001828103825260288152602001806145a36028913960400191505060405180910390fd5b889450925082614221565b60006141d0898486613e32565b9050898111156141dc57fe5b8781101561421b5760405162461bcd60e51b81526004018080602001828103825260288152602001806143d76028913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061424b5750508082028282828161424857fe5b04145b611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006142f18585613ede565b50905060008061430288888861344c565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561433a57600080fd5b505afa15801561434e573d6000803e3d6000fd5b505050506040513d606081101561436457600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b038781169084161461439757808261439a565b81815b9099909850965050505050505056fe552e45584348414e474520526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54552e45584348414e474520526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c6564552e45584348414e4745204c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54552e45584348414e474520526f757465723a2045585049524544000000000000552e45584348414e4745204c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54552e45584348414e4745204c6962726172793a204944454e544943414c5f414444524553534553552e45584348414e4745204c6962726172793a20494e53554646494349454e545f414d4f554e54552e45584348414e474520526f757465723a20494e56414c49445f5041544800552e45584348414e474520526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564552e45584348414e474520526f757465723a20494e53554646494349454e545f425f414d4f554e54552e45584348414e4745204c6962726172793a20494e53554646494349454e545f4c4951554944495459a26469706673582212209288f5401c4fa2fdbe5fa1f5a8423b203e4e570ed1ae691a4ab8275ff2088e6d64736f6c63430006060033
$ python conkas.py demo.hex
Analysing demo.hex...
unsupported operand type(s) for &: 'int' and 'NoneType'
Traceback (most recent call last):
File "conkas.py", line 108, in main
traces = sym_exec.execute()
File "/data-nvme/ethereum/repos/conkas/sym_exec/symbolic_executor.py", line 51, in execute
new_traces = self.__sym_exec_traces(traces_to_execute)
File "/data-nvme/ethereum/repos/conkas/sym_exec/symbolic_executor.py", line 64, in __sym_exec_traces
new_blocks = self.__sym_exec_block(block_to_analyse, trace.state)
File "/data-nvme/ethereum/repos/conkas/sym_exec/symbolic_executor.py", line 93, in __sym_exec_block
new_blocks = self.__sym_exec_instruction(instruction, state)
File "/data-nvme/ethereum/repos/conkas/sym_exec/symbolic_executor.py", line 116, in __sym_exec_instruction
return func(instruction, state)
File "/data-nvme/ethereum/repos/conkas/sym_exec/instructions/comparison.py", line 183, in inst_and
expr = a & b
TypeError: unsupported operand type(s) for &: 'int' and 'NoneType'
$ cat demo.hex
606060405260e060020a6000350463516aa178811461003c57806377dd0dd6146101aa578063dd62ed3e146101c1578063e1f21c67146101f2575b005b6102fe6004356024356044356000805460e160020a630b4c415702606090815233600160a060020a0390811660645260ff6201000084041660848190529266010000000000009004169063169882ae9060a49060209060448188876161da5a03f1156100025750506040515115905061031b57600160a060020a038086168352600160209081526040808520928716855291905282205483901061031257826001600050600087600160a060020a03168152602001908152602001600020600050600086600160a060020a03168152602001908152602001600020600082828250540392505081905550600260009054906101000a9004600160a060020a0316600160a060020a0316635687f2b88686866040518460e060020a0281526004018084600160a060020a0316815260200183600160a060020a0316815260200182815260200193505050506000604051808303816000876161da5a03f115610002575050506001915050610314565b600254600160a060020a03165b6060908152602090f35b600160a060020a036004358116600090815260016020908152604080832060243594909416835292905220546101b7565b6102fe6004356024356044356000805460e160020a630b4c415702606090815233600160a060020a0390811660645260ff6201000084041660848190529266010000000000009004169063169882ae9060a49060209060448188876161da5a03f1156100025750506040515115905061031b5760408051600160a060020a0380881680865260016020908152848720838a1680895291528487208890556002547f5687f2b800000000000000000000000000000000000000000000000000000000855260048501929092526024840152604483018790529251921691635687f2b8916064818101928792909190829003018183876161da5a03f115610002575050506001915050610314565b604080519115158252519081900360200190f35b505b9392505050565b61000256
$ python conkas.py demo.hex
Analysing demo.hex...
PUSH instruction needs 1 arguments but 0 was given
Traceback (most recent call last):
File "conkas.py", line 108, in main
traces = sym_exec.execute()
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 51, in execute
new_traces = self.__sym_exec_traces(traces_to_execute)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 64, in __sym_exec_traces
new_blocks = self.__sym_exec_block(block_to_analyse, trace.state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 93, in __sym_exec_block
new_blocks = self.__sym_exec_instruction(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/symbolic_executor.py", line 116, in __sym_exec_instruction
return func(instruction, state)
File "/data-hdd/ethereum/tools/conkas/sym_exec/instructions/pushes.py", line 16, in inst_push
raise Exception
Exception
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.