Manticore: Manticore 0.3.0

06/06/2019 10:18 pm

Manticore: Manticore 0.3.0

Manticore 0.3.0 – New Features & Fixes

Executor Refactor

They’ve completed a major refactor of the core executor that reorganizes Manticore’s state machine to be more amenable toward use with the multiprocesssing module. This refactor introduces some small API changes:

  • One must explicitly call the finalize method to dump test cases from a run
  • The will_start_run event has been renamed to will_run
  • The solver module requires explicitly accessing the Z3Solver singleton. from manticore.core.smtlib import solver becomes:
from manticore.core.smtlib.solver import Z3Solver solver = Z3Solver.instance()
  • manticore.running_states has been renamed to manticore._busy_states
    For more information about changes to the state machine, see the diagram in core/manticore.py
Blacken

They’ve run the black autoformatter on the master branch of Manticore, and added a check for compliance to our CI. To ensure your code is properly formatted, run black -t py36 -l 100 . in your Manticore directory before committing.

Support for statically-linked AArch64 binaries

Contractor nkaretnikov spent several months adding support for AArch64 on Linux. As this is a brand new architecture, we’ve left in most of the debugging assertions, which may slow it down slightly.
We look forward to getting feedback on this architecture so we can eventually remove the debugging assertions.

Ethereum

  • Added Symbolic EVM Tests for the Frontier fork. Note that we don’t support any other forks (i.e. Constantinople) yet.
  • [fixed API] Fixed relative paths for .sol files
  • [fixed API] Support dynamic parameters in constructors
  • Fixed detector failure when PC is symbolic
  • Transfers from etherless contracts no longer report STOP

Native

  • Added stubs for missing system calls & downgraded most missing calls from exceptions to warnings
  • Fixed DECREE magic pages
  • Store x86 registers in a set instead of a list
  • Fix register boundary check for non-x86 architectures
  • Support movhps on x86

Other

  • Only publish events when there is at least one subscriber
  • Added sandshrew example
  • Updated Unicorn to track latest master
  • [fixed API] Now respects coverage file argument