def setUp(self): code = codecs.decode( "6003600302600f56601b60006000a15b6101a5600060" "00a160019003801515600f57600660006000a1", "hex", ) env = Env(code) self.sm = sm.SymbolicMachine(env)
def setUp(self): self.env = Env(b"", caller=utils.DEFAULT_CALLER, address=utils.DEFAULT_ADDRESS) self.state = State(self.env) self.analyzer = Analyzer( address=self.env.address, caller=self.env.caller, max_wei_to_send=Web3.toWei(10, "ether"), min_wei_to_receive=Web3.toWei(1, "milliether"), )
def test_with_new_env(self): env = Env(b"") state = State(env) storage_0 = claripy.BVS("storage[0]", 256) storage_1 = claripy.BVS("storage[0]", 256) storage_2 = claripy.BVS("storage[0]", 256) state.storage_read[utils.bvv(0)] = storage_0 state.storage_read[utils.bvv(1)] = storage_1 state.storage_read[utils.bvv(2)] = storage_2 state.storage_written[utils.bvv(0)] = utils.bvv(0) state.storage_written[utils.bvv(1)] = utils.bvv(0) state.storage_written[utils.bvv(2)] = utils.bvv(0) state.calls.append([ utils.bvv(1), storage_0 + storage_1 + storage_2, utils.bvv(2), 5 * (storage_0 + storage_1 + storage_2), ]) state.solver.add(storage_0 == 42) state.solver.add(storage_1 == 0) state.solver.add(storage_2 == 0) self.assertEqual(state.solver.eval(state.calls[0][1], 2), (42, )) for i in range(3): new_state = with_new_env(state) self.assertIsNot(state.env.value, new_state.env.value) self.assertIsNot(state.storage_read[utils.bvv(0)], new_state.storage_read[utils.bvv(0)]) self.assertIsNot(state.storage_read[utils.bvv(1)], new_state.storage_read[utils.bvv(1)]) self.assertIsNot(state.storage_read[utils.bvv(2)], new_state.storage_read[utils.bvv(2)]) self.assertNotEqual(new_state.solver.eval(state.calls[0][1], 2), (42, )) self.assertEqual(new_state.solver.eval(new_state.calls[0][1], 2), (42, ))
def setUp(self): self.env = Env(b"", caller=utils.DEFAULT_CALLER, address=utils.DEFAULT_ADDRESS)
def run_code(self, code, env={}): code = bytes(code) self.sm = sm.SymbolicMachine(Env(code, **env)) self.state = self.sm.branch_queue[0][1] return self.sm.exec_branch(self.state)
def outcomes(self, code, env={}): code = bytes(code) self.sm = sm.SymbolicMachine(Env(code, **env)) self.sm.execute(timeout_sec=10) return self.sm.outcomes