Skip to main content

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.