|
|
@ -1,6 +1,7 @@ |
|
|
|
from mythril.laser.ethereum.svm import LaserEVM |
|
|
|
from mythril.laser.ethereum.svm import LaserEVM |
|
|
|
from mythril.laser.ethereum.state.account import Account |
|
|
|
from mythril.laser.ethereum.state.account import Account |
|
|
|
from mythril.laser.ethereum.state.world_state import WorldState |
|
|
|
from mythril.laser.ethereum.state.world_state import WorldState |
|
|
|
|
|
|
|
from mythril.laser.ethereum.keccak_function_manager import keccak_function_manager |
|
|
|
from mythril.disassembler.disassembly import Disassembly |
|
|
|
from mythril.disassembler.disassembly import Disassembly |
|
|
|
from mythril.laser.ethereum.transaction.concolic import execute_message_call |
|
|
|
from mythril.laser.ethereum.transaction.concolic import execute_message_call |
|
|
|
from mythril.laser.smt import Expression, BitVec, symbol_factory |
|
|
|
from mythril.laser.smt import Expression, BitVec, symbol_factory |
|
|
@ -176,6 +177,14 @@ def test_vmtest( |
|
|
|
expected = int(value, 16) |
|
|
|
expected = int(value, 16) |
|
|
|
actual = account.storage[symbol_factory.BitVecVal(int(index, 16), 256)] |
|
|
|
actual = account.storage[symbol_factory.BitVecVal(int(index, 16), 256)] |
|
|
|
if isinstance(actual, Expression): |
|
|
|
if isinstance(actual, Expression): |
|
|
|
|
|
|
|
if ( |
|
|
|
|
|
|
|
actual.symbolic |
|
|
|
|
|
|
|
and actual in keccak_function_manager.quick_inverse |
|
|
|
|
|
|
|
): |
|
|
|
|
|
|
|
actual = keccak_function_manager.find_keccak( |
|
|
|
|
|
|
|
keccak_function_manager.quick_inverse[actual] |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
else: |
|
|
|
actual = actual.value |
|
|
|
actual = actual.value |
|
|
|
actual = 1 if actual is True else 0 if actual is False else actual |
|
|
|
actual = 1 if actual is True else 0 if actual is False else actual |
|
|
|
else: |
|
|
|
else: |
|
|
|