Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Fix a typo related bug crashing when using virtual_fs (#90) * Map real files into the virtual filesystem (#116) * Add add_real_file() method to FileSystem * Add FileSystem::add_real_file() to python bindings * `EVM` architecture support (#124) * Add minimal EVM sleigh spec files * Add basic classes for Ethereum environment emulation * Minimal integration for executing Ethereum byte-code, test on ADD instruction * Add EVM support for DIV, SDIV, MOD, SMOD * Add more EVM instructions * More EVM instructions * Add more EVM instructions * Add BYTE and POP EVM instructions * Add MSTORE instruction - failing because of memory endianess * Add big endian support to MemConcreteBuffer * Add big endian support for MemSegment * Add big endian support to MemEngine * Add big endian support to SymbolicMemEngine * Support big endian in VarContext and in EVM Memory * Add more EVM instructions * Remove sla files from git * Support PUSH<n> EVM instructions * More EVM instructions * Fix call to MaatEngine::process_store() * Add basic SSTORE and SLOAD support * Add tests for solving symbolic EVM storage read/writes * Add smart contract loading test, need to implement more instructions * Add more EVM operators, add helper class for keccak hashes * Support KECCAK operation * Test deployment of simple contract * More EVM support: * test executing a transaction * support STOP, REVERT, CALLDATALOAD, CALLDATACOPY * minor improvements * Test return status in EVM test * WIP: EVM exploration test * More EVM testing and improvements * Add copy constructors for memory classes * Add serialization for Ethereum environment * Add bindings for Ethereum contracts * Fix EVM python bindings * Expose Value type in python module, support building Cst() with big ints * Python bindings: give 'bin' parameter a default in load(), rename Transaction in EVMTransaction * Add EVM tx result enum in bindings * Allow to pass arbitrary data to event callbacks in both native and python APIs * Support bigints in as_uint() and in VarContext * Expose more things in python bindings * Add UIDs to MaatEngine instances * Allow CmdlineArg to hold a buffer of non-byte abstract values * Various improvements: * Support EXP instruction for concrete values * Support passing constructor arguments when deploying a contract * Handle bignums in logical AND simplification pattern * Include <optional> in serializer.hpp * Bindings: add getter for transaction recipient, expose Info class * Add constructor to duplicate MaatEngine * Make storage a shared_ptr in EVM::Contract * Add helper to create a new EVM runtime from an existing MaatEngine * Expose engine duplication and EVM runtime helpers in python bindings * Add concat simplification pattern * Fix Number signed comparisons implementation * Simplify code in Number::slessequal_than * Add more simplification patterns * Expose Zext and Sext functions in bindings * Fix rounding for signed division and modulo * Add abstract counters for block number & timestamp * Expose PathManager::add() in python bindings * Add bindings helper functions for Ethereum block info * EVM: support TIMESTAMP and NUMBER instructions * Add iterators to EVM::Storage * Expose EVM Storage in python bindings * Support EVM CALL instruction * Support CALLCODE and DELEGATECALL * Use same class for Transaction and InternalTransaction * Expose new transaction fields in bindings, rename EVM enums * Support CALLER instruction * Support specifying contract addr and deployer through env parameter * Make transaction addresses 160 bits * Add VarContext::contained_vars() method * Force addresses to be 160-bits in EVM transactions * Support CREATE and CREATE2 * Expose outgoing_transaction to bindings * EVM loader: allow to pass init bytecode through args, throw exception if the init bytecode doesn't return properly * Fix CREATE handler * Expore transaction sender to bindings * Expose EVM stack to bindings * Support RETURNDATASIZE * EVM loader: add option to not run init bytecode when loading the contract * Expose result_from_last_call in bindings * Support EXTCODESIZE * Improve gas support * Various fixes related to running message calls in EVM * Don't force args to be 1-byte buffers in bindings * Support ADDRESS instruction * Make path manager a shared ptr, allow to share path manager when duplicating an engine * Fix modulo translation to z3 expressions * Expose more EVM stuff to bindings * Fix EVM BYTE instruction * Support large bitvectors in absorbing element simplification * Fix unit test for EVM BYTE * Return bytes in python bindings for VarContext.get_as_str() * Support checking if the solver timed out * Fix bug when adding singleton intervals in symbolic memory * Specify size of variables in MemEngine::make_concolic() * Improve the API for getting path constraints related to given values/constraints * Fix checking check() result in z3 solver * Don't serialize static UID cnt for VarContext * Bindings: support big unsigned values in VarContext.set() * Merge fixes for big endian memory support Co-authored-by: novafacing <[email protected]>
- Loading branch information