diff --git a/examples/evm/complete.py b/examples/evm/complete.py new file mode 100644 index 0000000..71c01e9 --- /dev/null +++ b/examples/evm/complete.py @@ -0,0 +1,46 @@ +from manticore.ethereum import ManticoreEVM +################ Script ####################### + +m = ManticoreEVM() +#And now make the contract account to analyze +source_code = ''' +contract C { + uint n; + function C(uint x) { + n = x; + } + function f(uint x) payable returns (bool) { + if (x == n) { + return true; + } + else{ + return false; + } + } +} +''' + +user_account = m.create_account(balance=1000) +print "[+] Creating a user account", user_account + +contract_account = m.solidity_create_contract(source_code, owner=user_account, args=[42]) +print "[+] Creating a contract account", contract_account +print "[+] Source code:" +print source_code + +print "[+] Now the symbolic values" +symbolic_data = m.make_symbolic_buffer(320) +symbolic_value = None +m.transaction(caller=user_account, + address=contract_account, + data=symbolic_data, + value=symbolic_value ) + + +print "[+] Resulting balances are:" +for state in m.running_states: + balance = state.platform.get_balance(user_account) + print state.solve_one(balance) + +m.finalize() +print "[+] Look for results in %s"% m.workspace