Runtime Application Self-Protection (RASP) for Java, Kotlin and Android applications.
Monitor provides real-time threat detection and response, protecting your applications against debuggers, emulators, code injection, tampering and other runtime attacks without requiring code changes.
| Module | Description |
|---|---|
| Debugger Detection | Detects attached debuggers via platform APIs and process inspection |
| Emulator Detection | Identifies emulated environments (QEMU, Genymotion, BlueStacks, etc.) |
| Virtual Machine Detection | Detects VM environments (VMware, VirtualBox, Hyper-V, etc.) |
| Jailbreak / Root Detection | Identifies rooted Android devices and jailbroken iOS environments |
| Tampering Detection | Validates APK signature integrity and detects code modifications |
| Clock Tampering | Detects system time manipulation attempts |
| Process Injection | Identifies unauthorized libraries and code injection |
| Network Tampering | Detects proxy, VPN and MITM interception |
| Memory Dump Detection | Identifies memory dump and instrumentation tools (Frida, Xposed, etc.) |
| License Binding | Binds license to device hardware for anti-piracy |
| Container Detection | Detects Docker, Kubernetes and container environments |
| Remote Desktop Detection | Identifies remote desktop and screen sharing sessions |
| Cloud Metadata Detection | Detects cloud provider metadata service access |
In your settings.gradle.kts, add Maven Central to plugin repositories:
pluginManagement {
repositories {
mavenCentral()
google()
gradlePluginPortal()
}
}In your app's build.gradle.kts:
plugins {
id("com.android.application")
id("com.bytehide.monitor") version "1.0.1"
}
monitor {
projectToken = "your-project-token"
}That's it. The plugin automatically:
- Embeds an encrypted, server-signed license
- Generates a
ContentProviderfor zero-code auto-initialization - Registers the provider in
AndroidManifest.xml - Adds the
monitor-coredependency
Note: The Gradle plugin is required — it signs and embeds the license at build time. The SDK will not initialize without it.
monitor {
projectToken = "your-project-token"
// Presets: "mobile", "desktop", or "custom"
preset = "mobile"
// Or configure individually
enableDebuggerDetection = true
enableJailbreakDetection = true
enableTamperingDetection = true
enableEmulatorDetection = true
// Default action: "log", "close", "erase", or custom
defaultAction = "log"
defaultIntervalMs = 30000
}For additional runtime control beyond the DSL, use the Java API in your Application or Activity:
import com.bytehide.monitor.Monitor;
import com.bytehide.monitor.core.action.ActionType;
import com.bytehide.monitor.core.protection.ProtectionModuleType;
import com.bytehide.monitor.core.logging.LogLevel;
Monitor.configure(config -> {
config.useToken("your-project-token");
// Register custom threat handler
config.registerCustomAction("notify", threat -> {
System.out.println("Threat: " + threat.getDescription());
});
// Configure logging
config.configureLogging(logging -> {
logging.enableConsole();
logging.setMinimumLevel(LogLevel.INFO);
});
// Enable protections
config.addProtection(ProtectionModuleType.DEBUGGER_DETECTION, ActionType.LOG, 30000);
config.addProtection(ProtectionModuleType.JAILBREAK_DETECTION, ActionType.CLOSE, 60000);
});| Action | Description |
|---|---|
LOG |
Log the threat and continue execution |
CLOSE |
Terminate the application |
ERASE |
Wipe application data and terminate |
CUSTOM |
Execute a custom handler |
- Android 5.0+ (API 21+) via Gradle plugin
- Java 11+ (desktop and server)
- Kotlin (JVM target)
- Gradle 8.x / 9.x
Full documentation, integration guides and API reference available at docs.bytehide.com.
Proprietary. See Terms of Service.
Built by ByteHide