Application security feature

Android root detection

Otukan detects rooted Android devices from layered signals and applies the response you set per flow, so risky sessions lose access and real users keep it.

  • Android
Rooted devices is met at the environment checks boundary before it reaches the appRooted devicesEnvironment checksYour app
  • Layered root evidence

    Otukan combines root artefacts, systemless root and hiding tools, and boot state, so one hidden trace does not hide the device.

  • A response per flow

    Browsing, login and payments each get their own response, so a rooted session loses what matters while legitimate users keep working.

  • Built for real Android

    Checks are tested across manufacturers, device tiers and Android releases, because Android is many builds, not one.

Root threats Otukan handles

Pick a threat to see how Otukan detects it, how the app responds and what your backend receives.

Classic root

  1. Detect

    Otukan looks for su binaries, root manager apps, writable system paths and build properties that rooting leaves behind.

  2. Respond

    Your policy decides per flow: record, warn, restrict or end the session.

  3. Report

    A root signal travels to your backend with the next login or transaction request.

Systemless root

  1. Detect

    Otukan checks mount state, SELinux mode and the app's own process for changes applied at boot.

  2. Respond

    Sensitive flows are stepped up or restricted while browsing continues.

  3. Report

    Your backend sees the signal group, so it can weigh it against account context.

Root hiding tools

  1. Detect

    Otukan looks for the side effects of hiding root from individual apps, not only for root itself.

  2. Respond

    Hidden root is treated as root, with the response you set for that flow.

  3. Report

    The signal reaches your server, which can combine it with a verified Play Integrity verdict.

Unlocked bootloader and custom images

  1. Detect

    Otukan reads boot and system state that shows the device is no longer in its locked, stock configuration.

  2. Respond

    You choose whether these devices can sign in and transact, or only browse.

  3. Report

    Your backend can confirm the boot state with hardware key attestation it verifies itself.

Hooking on rooted devices

  1. Detect

    Otukan detects instrumentation frameworks and injected code that root makes easy to load.

  2. Respond

    The session is restricted or ended on high-risk flows.

  3. Report

    A hooking signal is sent with the request, so the server can refuse it.

What Otukan root detection checks

Four groups of evidence, each with a different strength, combined into one signal for your policy.

  • Root artefacts

    Files, binaries, packages and build properties that rooting commonly leaves on the device, checked from inside the app.

  • Systemless root and hiding

    Root that leaves the system partition unchanged, and tools that hide root from individual apps.

  • Boot and system state

    An unlocked bootloader, a custom system image or a verified boot state that shows the device is not locked and stock.

  • Server-verified evidence

    Otukan's signals sit alongside the Play Integrity verdict and key attestation result that your server verifies.

You choose the response

Set a response for each user flow. Start by observing, then tighten flow by flow as the signals prove themselves.

Observe

Signal sent to your backend

Rolling out a new policy and measuring real-world signals.

Warn

This device looks modified. Continue with care.

Conditions some genuine users create, such as developer settings.

Restrict

Payments are unavailable on this device.

Payments, stored data and account changes.

Terminate

Session closed for your security.

Clear tampering on a high-risk flow.

How it works

  1. Set your policy

    Choose a response for rooted devices in each flow, starting with observe where you want to measure first.

  2. Protect the build

    Otukan fits your existing build and release pipeline. Your signing keys stay with your team.

  3. Checks run on device

    Root checks run at launch and before sensitive actions, in every session.

  4. Your server decides

    Root signals travel with requests and combine with the platform verdicts your server verifies.

Free for app publishers

Check your app's exposure

A passive review of your published app by an Otukan engineer. No files, no access to your systems. Findings go by email to the verified publisher.

You finish the request on the next page.

An Android app should respond to evidence of root access with a proportionate, per-flow decision, not a blanket block. Otukan gathers that evidence from inside the app in several groups: root artefacts, systemless root and hiding tools, and boot and system state. Your server can add a Play Integrity verdict and key attestation result it verifies itself. Otukan then applies the response you chose for each flow: observe on browsing, step up at login, restrict payments. Rooted sessions lose access to what matters, and legitimate users on unusual devices keep working. This page covers Android; iOS jailbreak detection is its own control.

The broader set of runtime checks is covered on mobile RASP.

Signal categories

Root signals differ in how they are gathered and how easily they can be faked. Otukan keeps them in separate groups, so your policy knows exactly what each one shows.

Root artefacts

Rooting usually leaves something behind: an su binary on the path, a root manager app, writable system directories, or build properties such as test signing keys. Otukan checks for these quickly, from inside the app. They are the first layer, and the layers below catch what a careful attacker removes.

Modified environments

Systemless root leaves the system partition unchanged and applies its changes at boot. Hiding features conceal root from chosen apps. Otukan looks past the missing files at mount state, SELinux mode, code loaded into the app’s own process and the side effects of hiding. This group overlaps with hooking detection, because root is how most hooking tools get in.

Platform trust signals

Android also offers evidence from outside the app. A Play Integrity verdict is signed and encrypted by Google, and your server decodes and checks it. Hardware-backed key attestation through Android Keystore returns a certificate chain that includes the verified boot state and whether the bootloader is locked. Otukan’s in-app signals complement both.

Signal groupWhere it is evaluatedResistance to hidingWhat it adds
Root artefactsIn the appLowerFast, broad first layer
Modified environmentsIn the appMediumCatches systemless root and hiding
Play Integrity verdictOn your serverHigherGoogle-signed device labels
Key attestationOn your serverHigherHardware-backed boot and lock state

Risk decision

Every signal is an input. Otukan’s value is in combining them and handing your policy a clear picture.

Working with false positives and false negatives

Legitimate users can look rooted: people running custom system images for privacy or longer updates, developers with unlocked bootloaders, manufacturer builds with unusual properties, and devices sold without Google Play services. Attackers try the opposite, hiding root or patching checks out of the app. Otukan handles both sides with layered evidence and server-side decisions. Because Otukan reports which group fired, an unlocked bootloader can get a lighter response than an active root manager.

Proportionate responses

FlowRecommended starting responseWhy
Browsing and public contentObserve and recordRoot changes little about the risk here
LoginSend the signal with the request; step up on the serverThe backend combines it with account and session context
Stored credentials or tokensRestrict local storage of sensitive dataRoot access can read app storage
Payments and account changesStep up or refuse, based on combined signalsThe cost of a wrong decision is highest

Start in observe mode, measure how often each check fires on your real users, then tighten flow by flow. Policy design for runtime signals is covered on threat response.

Compatibility

OS versions

Android keeps changing what an app can see. For apps targeting Android 11 (API level 30) or later, package visibility rules limit which installed apps an app can query, which affects checks that look for root manager apps. Google has deprecated the SafetyNet Attestation API in favour of Play Integrity. Otukan’s checks are designed around these rules rather than against them, and each check carries its own tested Android version range.

App layers and distribution

Where a check runs matters. Checks written only in Java or Kotlin are easy to find in a decompiled app, so Otukan places its checks where they are harder to locate and patch. Native Android, Flutter and React Native apps get the same protection, and the result reaches your policy directly rather than through app code an attacker can edit. With Play App Signing, the certificate on the device is Google’s app signing key, not your upload key, and Otukan’s integrity checks expect the right one.

Device diversity

Manufacturers customise system images, file layouts and security settings. Otukan tests root checks on physical devices across manufacturers and price tiers, including older and lower-cost models, not only current flagship phones.

Release regression

Otukan maintains root checks as Android releases and hiding tools change. Before your protected release ships, we prove each check with your team:

  1. Reproduce root in an authorised lab and confirm the expected signal.
  2. Run the same journey on a legitimate, supported device and confirm the check stays quiet.
  3. Repeat install, update, login and your most sensitive flow on the protected build.

Results are recorded with devices, Android versions and the reviewer. Android-specific guidance is covered on Android app security, and the edge cases are covered on root detection limitations.

Common questions

  • Should an app refuse to run on a rooted Android device?

    Usually not as a first step. Blocking the whole app turns every unusual but legitimate device into a lost user. Otukan lets you record the signal, send it to your backend and restrict only the flows where root changes the risk, such as payments, stored credentials and account changes. Rooted sessions lose what matters; everyone else keeps working.

  • Is Play Integrity enough on its own?

    It is a strong input: the verdict is signed by Google and verified on your server. It depends on Google Play services and returns broad labels rather than what was found. Otukan's in-app signals add the detail, name the signal group and reach devices without Play services, and your server combines both for the decision.

  • Why do some legitimate devices look rooted?

    Some manufacturers ship builds with test signing keys or unusual properties, some users install custom system images for privacy or longer support, and developers often unlock bootloaders. Otukan reports which signal group fired, so your policy can treat an unlocked bootloader differently from an active root manager.

  • How does Otukan keep root detection current?

    Rooting and hiding tools change, and each Android release changes what an app can see. Otukan treats root checks as maintained code: we retest them on new Android releases and as hiding tools change, and your protected release is proven on your own devices before it ships.

On the mobile engineering team?

How protection fits your build, signing and release, platform by platform.

Control what rooted devices can reach

Tell us the Android versions and devices you support, the app framework and the flows you most need to protect. We do not ask for binaries, signing keys or production credentials.

Or request a technical demo