Welcome to Terminator
Terminator is an exceptionally powerful hooking framework for Android, written in pure Java & Kotlin. It empowers you to intercept and modify both native (C/C++) functions and JVM (Java/Kotlin) methods without writing a single line of C++ or dealing with the complexities of JNI.
It is designed from the ground up to provide a modern, type-safe, and highly expressive Kotlin-first API, making reverse engineering and dynamic analysis on Android more accessible and efficient than ever before.
Why Terminator?
While other hooking frameworks exist, Terminator offers a unique combination of power and simplicity, setting it apart from traditional solutions like Frida, Xposed, or Substrate.
Pure Java/Kotlin
The entire framework, including its low-level machinery, is built on top of a port of the modern Project Panama (Foreign Function & Memory API). This means:
- No C++ toolchain required: You don't need the NDK or CMake to build complex hooks.
- No JNI boilerplate: Interact with native code directly from Kotlin.
- Seamless integration: Your hooks are part of your standard Android project, not separate scripts.
Unified API for Two Worlds
Terminator provides a single, consistent DSL for hooking both native functions and JVM methods. This elegant API allows you to use the same concepts and coding style whether you are targeting a function in libc.so
or a method in an Android application's code.
Type Safety & Modern Language Features
Leverage the full power of Kotlin to write robust and readable hooks.
- Reduce Errors: Catch potential type mismatches at compile time, a common source of crashes in traditional frameworks.
- Expressive DSL: Use Kotlin's features like
infix
functions and reified generics for a clean and intuitive syntax (myFunction beforeCall { ... }
). - Automatic Memory Management: The framework handles memory allocation and cleanup for native strings, structs, and out-parameters, preventing memory leaks.
No Root Required
Terminator operates entirely within the application's own process and memory space, meaning it does not require root access to function.
Core Features
- Native Function Hooking: Intercept any exported function from loaded native libraries (e.g.,
.so
files). - JVM Method Hooking: Intercept any Java or Kotlin method, including constructors and private methods.
- Elegant Kotlin DSL: A fluent and declarative API for defining hooks.
- Powerful Memory API: A comprehensive set of tools for reading, writing, and manipulating native memory, pointers, and custom C-style structs directly from Kotlin.
- Callable Functions: Wrap any native function pointer into a type-safe, callable Kotlin function.
Ready to get started? Let's proceed to the Installation page.