MUI (Manticore User Interface) project, we provide a graphical user interface plugin for Binary Ninja to allow users to easily interact with and view progress of the Manticore symbolic execution engine for analysis of smart contracts and native binaries.
ATTENTION This project is under active development and may be unstable or unusable. Please open an issue if you have any difficulties using the existing features. New feature development will be considered on a case by case basis.
Aside from the Python requirements, we require the following:
git submodule update --init --recursive
for Manticore submoduleMUI requires a copy of Binary Ninja with a GUI. Currently we are testing against the latest dev
release(s) (2.4.2901-dev
at time of writing).
Manticore only operates on native binaries within a Linux environment. EVM support has only been tested on Mac and Linux, and it requires the installation of ethersplay.
Python dependencies are currently managed using requirements.txt
and requirements-dev.txt
. You can run make init
to set up a development environment.
For Mac
ln -s “$(pwd)/mui” “${HOME}/Library/Application Support/Binary Ninja/plugins/mui”
For Linux
ln -s “$(pwd)/mui” “${HOME}/.binaryninja/plugins/mui”
venv/pyvenv.cfg
to find the base path./venv/lib/python3.<minor_version>/site-packages
suffix for the site-packages path.Installing currently listed dependencies:
make init
For Mac (will be similar for Linux)
export PYTHONPATH=”/Applications/Binary Ninja.app/Contents/Resources/python:/Applications/Binary Ninja.app/Contents/Resources/python3″
Activating the python virtual environment (do this before running other make commands):
$ . venv/bin/activate
Code style and linting can be followed by running the following:
$ make format $ make lint
Tests for code without Binary Ninja interaction can be run if you have a headless version of binary ninja available, otherwise only non-Binary Ninja tests will be run:
$ make test
Adding a new dependency can be done by editing requirements.txt
or requirements-dev.txt
and then running the following in the virtual environment:
$ pip install -r requirements-dev.txt -r requirements.txt
Usage (Native)
All MUI features can be accessed through either the right-click context menu or the command palette. Common features include:
And the following widgets are available:
Tab
can be used to expand/collapse the graph and double-clicking any of the state nodes navigates you to the current instruction of that state.Solve with Manticore
command. It allows you to configure the various manticore options, and the changes will be saved to the bndb
file. Some example configs include using a combination of LD_PRELOAD
and LD_LIBRARY_PATH
environment variables to run the binary with custom glibc.Add/Edit Custom Hook
command. It allows you to define a custom manticore hook at the selected address. You also have full access to the Binary Ninja API which allows you to add highlighting, comments, and more. A defined hook can be removed by setting the code input field to blank.Usage (EVM)
EVM support is currently a bit limited. MUI EVM only supports the same feature set as the Manticore CLI tool. Available commands include:
And the following views are implemented:
Solve with Manticore
command. It allows you to configure the various manticore options, and the changes will be saved to the bndb
file.shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…
Extract and execute a PE embedded within a PNG file using an LNK file. The…
Embark on the journey of becoming a certified Red Team professional with our definitive guide.…
This repository contains proof of concept exploits for CVE-2024-5836 and CVE-2024-6778, which are vulnerabilities within…
This took me like 4 days (+2 days for an update), but I got it…
MaLDAPtive is a framework for LDAP SearchFilter parsing, obfuscation, deobfuscation and detection. Its foundation is…