MANIAC is a modern dynamic binary instrumentation engine for Android and Fuchsia.
See maniac_demo. The demo module hijacks the target application's rand() function and makes it return a fixed value of 1337.
maniac_manager: A Flutter-based frontend for managing modules.maniacd: Process-detection watchdog that monitorszygote.maniacj: The library injector module.maniacli: Set of command line tools for developing MANIAC modules.maniacrun: The IPC/bootstrap program.
The aims are similar, but implementation details greatly differ.
- MANIAC modules work further down the stack, as the engine primarily instruments native code as opposed to ART/Dalvik. Without the constraints of the process VM, MANIAC modules are far more capable.
 - MANIAC requires no permanent modification of the host system, as it only needs a single root-privileged process to bootstrap the runtime environment.
 
The project is currently in a pre-alpha stage and no official modules repository exist as of yet. Refer to the maniac_demo project for building your own modules.
Users may install pre-programmed modules via MANIAC manager. maniacrun bootstraps the DBI environment by communicating with various sub-modules of MANIAC.
+----------+             +----------+
| manager  |             | maniacd  |
+----------+             +----------+
     |                         |
     | on user command         | on zygote fork
     |                         |
     V                         V
+-----------------------------------+
|              maniacrun            |
+-----------------------------------+
                  | with contol.json
     +-------------------------+
     |            |            |
     V            V            V
+----------+             +----------+
| maniacj  |     ...     | maniacx  |
+----------+             +----------+
- initial public release
 
- libmaniac_gui
 
- initial Fuchsia support
 
- libmaniac_art
 - libmaniac_mono
 
All of the components are free software released under the GNU General Public License (GPLv3) unless otherwise stated. Refer to the individual repository for more information.
- CydiaSubstrate (@saurik)
 - Liberation (@Razzilient)
 - Frida (frida.re)
 
