These 12 commits are when the Protocol Buffers files have changed:
Commit: | ee1897b | |
---|---|---|
Author: | Eric Kilmer | |
Committer: | Eric Kilmer |
[Server] Remove all references to "MUI" Just call this ManticoreServer
The documentation is generated from this commit.
Commit: | a3a50a9 | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Server] Support manual state control (Pause/Kill) (#96) * Add ControlState rpc to protocol buffer, generate Python files * Add server functionality, adding ControlState and modifying GetStateList * Add tests for ControlState functionality
Commit: | 8f73784 | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Server] Add explicit field presence (#88) * modify proto, set fields to optional * parent_id no longer needs arbitrary default * contextfilter bug fix * Revert "contextfilter bug fix" This reverts commit 20fa421c7cd358e77b8b3acd420adf6f7a28dced.
Commit: | 8b4e249 | |
---|---|---|
Author: | lordidiot | |
Committer: | Eric Kilmer |
[Server] Implement native Unicorn emulate until address (#86)
Commit: | 9bdef99 | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Ghidra] Support find/avoid for stateless server Was trailofbits/ManticoreUI-Ghidra#35 PR Description: Ghidra now supports sending Find/Avoid hooks to the stateless server generated by the code in trailofbits/ManticoreUI-Ghidra#34 Additionally, adds a HookListComponent, which is currently only used in the Setup component to display currently-set hooks before Manticore is run. Closes trailofbits/ManticoreUI-Ghidra#26 once trailofbits/ManticoreUI-Ghidra#34 is merged
Commit: | 74c3849 | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Server] Send state program counter Was trailofbits/ManticoreUI-Ghidra#29 PR Description: Tiny PR which updates the protobuf spec and server to send over a state's pc or last_pc if present. This is just a server update - Ghidra plugin doesn't support jumping to address yet as of this PR.
Commit: | 549630f | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Server] Add gRPC Status Code-based error handling Was trailofbits/ManticoreUI-Ghidra#28 PR Description: Fixes trailofbits/ManticoreUI-Ghidra#24. The Manticore server now sends a gRPC status code and details when an error occurs, which allows for more standardised error handling and for the MUI plugins to easily display the errors to the user.
Commit: | 373a870 | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Server] Add StopServer for graceful shutdown Was ManticoreUI-Ghidra#27 PR Description: Inspired by this comment trailofbits/ManticoreUI#61 - adds a StopServer function to the gRPC service that allows a client to call for a graceful gRPC server shutdown, where all Manticore instances are first individually killed before the server is stopped.
Commit: | e446a41 | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Server] Initial EVM Support Was trailofbits/ManticoreUI-Ghidra#19 PR Description: Current implementation mirrors that of the Binja plugin. solc binary is included when running just install, must be <= 0.8.9 since manticore uses the --combined-json compact-format arg removed in ethereum/solidity@d10e668 this is required since we're using the chess branch for now which doesn't currently support crytic-compile 0.2.2 Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
Commit: | 1514440 | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Server] Fix Python package structure Was trailofbits/ManticoreUI-Ghidra#18 PR Description: while working on implementing tests for MUICore I realised the previous package structure of MUICore was pretty janky. This PR restructures muicore such that the files in MUICore/muicore are accessed by muicore.file_name rather than just directly import file_name. This also makes writing tests and interacting with the muicore package easier Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
Commit: | 2133b60 | |
---|---|---|
Author: | kokrui | |
Committer: | Eric Kilmer |
[Server] Create MUI Server, Ghidra plugin uses Server backend Was trailofbits/ManticoreUI-Ghidra#14 PR Description: Updates the Ghidra plugin such that it uses a MUI Server backend implemented as per trailofbits/ManticoreUI#36 Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
Commit: | 5a258f4 | |
---|---|---|
Author: | Eric Hennenfent | |
Committer: | GitHub |
TUI Support Infrastructure (#1620) * Support for TUI (#1605) * Update worker thread for server creation * Add necessary files for TUI connectivity * Add necessary files for TUI connectivity * Update MonitorWorker * Update protocol * Blacken * Update setup.py dependencies * Remove state debugging messages * Update setup.py to build protobuf protocol upon install * Remove previously generated state_pb2.py * Change subprocess.Popen to subprocess.check_output * Remove extraneous output * First attempt at fixing protobuf installation It might work, it might not. We'll let the CI sort it out. * Can't forget the f-string * Error on missing protoc * Disable auto-generation of protobuf file * Ignore pb2_errors * Disable monitor start See if this makes the EVM tests pass Co-authored-by: Eric Hennenfent <ecapstone@gmail.com> * Add log monitoring * Log monitoring via TCP * Swittch to rendering state lists directly * Extraneous line * Switch log buffer to multiprocessing queue * Create state transition events Should make it possible to track movements between state lists * Plug new events into context This will break the state merging plugin (but I'll fix it eventually) * move most enums to their own module * Blacken * Add DaemonThread from TUI branch * Add interface for registering daemon threads * Timestamp StateDescriptor upon updates * Capture return value * Blacken * Add solver wrapper to StateBase * Add `solve` events to all instances of SelectedSolver.instance() * Remove executor constraints from WASM * Add solve events to memory.py * Add intermittent execution event * Be more generous with states whose initialization we missed * Add Native callback for updating state descriptor * Fix state killing * Blacken * codecov: Remove outdated 'yml' entry in CI From these commits https://github.com/codecov/codecov-action/commit/ebea5cacdf7d0b843f66bcb1ae27d8f27b758e81 https://github.com/codecov/codecov-action/commit/49c86d6a5fd072b05c31a42baa67b8fb2e87c8f7 * Add solve event to evm Make warning messages better Debug GH actions Revert "Debug GH actions" This reverts commit f575eea3c3a09dbf2cd2b8e81940fc4297fdf039. Fix some pycharm-detected problems Make symbolic function error message more verbose Add solve to published events Loud errors in callbacks by default Trying to find out what's killing truffle Revert "Trying to find out what's killing truffle" This reverts commit 8bd02245ccc2ce54c9161072eba231880c084874. Revert "Make symbolic function error message more verbose" This reverts commit bd3e90cdb0dfabf0ac874badad723be50998f63b. Debugging Truffle Restore introspector Add try_except on every callback Unconditionally print error message Add traceback Update event.py Debug subscriptions Debug arguments to callbacks Different debug msg 1ast arg Print statement debugging... Pass in `None` as state Revert "Add try_except on every callback" This reverts commit 1c689dd43c619ba322cda5e7283686308c8db4e0. * Drop solve events outside of a state context Forgot did_solve Remove traceback * Fix must/cannot_be_null usage * Fix missing solve event * Partially restore old did_fork_state ABI * Called internally * Clone iterators instead of creating a list * Use isgenerator instead of checking if iterable * Fix snapshot restoration * Slightly improve Unicorn test API usage * Temporarily disable property verifier tests * improper skip arg * Add simple tests for introspection API * Add test for custom introspector, improve base introspection test * Add intermittent update timestamp * Only allow daemon registration and introspection registration at initialization * Add docs to manticore.py * Add docs for plugin, add update_state_descriptor to EVM * Fix renamed will_start_run --> will_run * Docstrings for DaemonThread and EventSolver * Docs for enums * Improve pretty printer, add some mypy fixes * Don't run daemon threads if run is called multiple times * If at first you don't succeed, destroy all the evidence you tried. * Test the pretty printer * Add StateDescriptor to RTD * Add newlines for RTD parsing * Update to work with new state introspection API * Add termination messages * Also capture killed state messages * Make info logs debug logs * Apply suggestions from code review Newlines for doc comments Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com> * Add some type hints to manticore.py * Add some type hints to plugin.py * Fix type hint for get_state * Add termination message from TUI PR * Add example script * Add docstrings to the example script * Pass introspection plugin type as an argument * Unskip property verifier tests * Add mypy-requests type hints * Remove itertools.tee The problem with usign tee is that only the first callback to use the iterator can write to it. In `ready_states`, the `save_state` after the `yield` statement is ignored for all others. * Make generator cloning a little bit more robust Now Manticore will give up and return the original argument instead of blowing up if it can't clone the generator * Clean up invalidated unit tests We now fire `introspect` for the first time before we have any states * Debug missing Truffle & Examples coverage * Merge coverage from XML file * Switch coverage to JSON, ignore debug logging and NotImplemented code * Fix copy commands * Move .coverage files directly * Set examples to append coverage * FLAG_NAME doesn't work the way we'd like * Use plugin dict to store introspector * Appease mypy * Fix missing property on unique name * Grab EVM PC * Blacken * Run black on all files if the git diff command fails * Fix mypy errors * Make plugin logging even less verbose * Move log capture and state monitoring to daemon threads * Use the config module for host & port * Fix worker configuration and add test for TUI API * Fix log messages breaking native tests * Split up base Manticore tests and logging tests The verbosity changes seem to be taking hold when they shouldn't * Merge LogTCPHandler and MonitorTCPHandler * Confirm that logging tests return to base level * Fix mypy * Switch back to using a deque for log buffering in the default case * Fix deque API * Update state_pb2.py * Reformat programatically generated files * Drop max verbosity in logging tests Haven't been able to figure out why, but somehow other loggers get "stuck" at this high verbosity and the integration tests try to print out the values of every single register. * Fix duplicated code from bad merge * Remove is_main from state_monitor * Add comment about log buffer size * Remove vestigial is_main * Blacken Co-authored-by: Philip Wang <powdercheeze@gmail.com> Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>