Application security protection

Application integrity

Otukan checks that your Android or iOS app is the build you shipped, with no injected code, flags signs of a rooted or jailbroken OS, and acts on the result.

  • Android
  • iOS
  • Flutter
  • React Native
Modified or hooked app is met at the integrity checks boundary before it reaches the appModified or hooked appIntegrity checksYour app
  • The build you shipped

    Otukan checks the signature, package contents and code at runtime, so a repackaged or re-signed copy recognises that it is not your release.

  • Nothing injected while running

    Hooking frameworks, injected libraries and attached debuggers are detected throughout the session, not only at launch.

  • A modified OS made visible

    Root, jailbreak and system tampering signals tell you when the platform's own security protections may no longer hold on that device.

Integrity threats Otukan detects

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

Repackaged copies

  1. Detect

    Signature and package checks compare the running app with the certificate and contents of your genuine release.

  2. Respond

    The copy refuses to open sensitive flows, or closes, according to your policy.

  3. Report

    Your backend receives the mismatch with the observed certificate and app version.

Re-signed and sideloaded builds

  1. Detect

    Otukan recognises builds signed by an unexpected certificate and, on Android, installed from an unexpected source.

  2. Respond

    The app limits itself to non-sensitive features or shows a message pointing to the official store.

  3. Report

    Signing details, and the installation source on Android, are reported for trend analysis.

Hooking frameworks

  1. Detect

    Runtime checks detect instrumentation frameworks and the traces they leave in the app's process and memory.

  2. Respond

    Sensitive operations stop instead of trusting a result the hooked function may have forged.

  3. Report

    Each detection names the check that fired, the platform and the OS version.

Injected libraries

  1. Detect

    Otukan compares the libraries loaded into the process with those your release ships.

  2. Respond

    The app restricts or ends the session when foreign code is present.

  3. Report

    The unexpected library is reported by name and load path for investigation.

Compromised operating system

  1. Detect

    Root and jailbreak checks look for modified system files, privilege tools and altered security settings.

  2. Respond

    Your policy decides: observe, warn, restrict high-risk flows or stop.

  3. Report

    OS integrity results accompany sensitive requests so your server can weigh them.

Controls for application integrity

Each control answers one integrity question about the app, its process or the operating system beneath it.

  • Repackaging and re-signing detection

    Recognises copies of your app that were unpacked, changed and signed again with someone else's certificate.

  • Hooking framework detection

    Detects dynamic instrumentation frameworks that intercept and rewrite your app's functions at runtime.

  • Code injection prevention

    Detects libraries and code loaded into your app's process that your release did not include.

  • OS integrity signals

    Reports rooted Android devices, jailbroken iOS devices and signs of a modified system image.

  • Anti-tampering

    Verifies code and resources at runtime, so patched logic or swapped files are caught inside the app.

  • Anti-debugging

    Detects debuggers attaching to the app and slows step-by-step analysis of sensitive code.

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. Protect the release

    Integrity checks are woven into the app during your normal build, and signing stays in your hands.

  2. Check at launch

    The app confirms its signature, contents and environment before sensitive screens open.

  3. Keep checking

    Hooking, injection and debugging checks continue for the whole session.

  4. Respond in the app

    Each flow reacts to a failed check according to the response you set for it.

  5. Inform your backend

    Integrity results travel with requests, so server-side decisions rest on current evidence.

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.

Otukan tells your app and backend whether it is still the build you shipped. It answers four questions inside the running app: is this your release, has anything been injected, is anyone instrumenting it, and is the operating system underneath still intact? It detects repackaged and re-signed copies, hooking frameworks, injected code, debuggers and rooted or jailbroken devices, then responds per flow and reports the result to your backend. Evaluate it with those four questions on your own test devices. Integrity evidence makes tampering slower and visible, and pairs with platform attestation on your server. Otukan covers Android, iOS, Flutter and React Native apps, scoping each check per platform.

What is at stake

Almost every other control in a mobile app assumes the app itself is intact. A fraud signal, a biometric result or a screen-capture rule means nothing if an attacker has rewritten the code that produces it. Integrity is the foundation the rest of your protection stands on.

Affected flows

The damage shows up in the flows that matter most. A repackaged banking app harvests credentials from people who downloaded it from an unofficial source. A hooked payment flow returns “approved” without a real check. A patched subscription app unlocks paid features for free. A rooted device lets malware read data the sandbox was meant to protect.

The trust boundary

The boundary sits between your release and everything that happens to it after it leaves the store. Your signing certificate marks the start. From that point on, Otukan watches for the changes that break the chain: a new signature, altered files, foreign code in the process, a debugger attached, or an operating system that no longer enforces its own rules.

QuestionWhat breaks itOtukan control
Is this my build?Repackaging, re-signing, sideloadingRepackaging and re-signing detection, anti-tampering
Is anything injected?Foreign libraries, patched codeCode injection prevention
Is anyone instrumenting it?Hooking frameworks, debuggersHooking framework detection, anti-debugging
Is the OS intact?Root, jailbreak, modified systemOS integrity signals

Where integrity is enforced

The app

Only code inside the app can see its own process in real time. Otukan’s checks run there, at launch and throughout the session, and each flow reacts according to the response you set: observe, warn, restrict or terminate. For the runtime layer in detail, see mobile RASP.

The operating system

Each platform enforces code signing and sandboxing, and each offers attestation: Play Integrity on Android and App Attest on iOS. These are strong, but they depend on an intact system, and their verdicts are checked by your server rather than acted on inside the app. Root and jailbreak detection matter because they tell you when the platform’s own protections may no longer hold. Platform specifics are on Android root detection and iOS jailbreak detection.

The backend

A decision taken on the device can be undone by someone who controls the device. Otukan sends integrity results with sensitive requests, so your backend can refuse, step up or record them, and can combine them with platform attestation verdicts. For server-side verification, see app attestation.

How to evaluate application integrity

Checks per platform

Ask for each check to be documented per platform. Repackaging looks different on Android, where anyone can re-sign an APK, than on iOS, where re-signing needs a developer certificate and sideloading. Root and jailbreak are separate problems with separate signals. A single “integrity” label should expand into distinct Android and iOS lists.

A test pack you run

Build your own test pack. Re-sign a copy of your app with a different certificate and confirm it is recognised. Load an instrumentation framework on a test device and confirm the hook is detected before a sensitive result returns. Attach a debugger to a release build. Run the app on a rooted Android device and a jailbroken iOS device. For each test, check the in-app response and the record that reaches your backend.

Effect on genuine users

Integrity checks must leave genuine users alone. Measure how often root and jailbreak signals fire on your real audience before you enforce, because some legitimate users run modified devices without malice. Set a proportionate response per flow: a news screen can observe while a payment stops. Confirm start-up time on your target devices with the protected build. For a check of your current public release, request a free App Exposure Check.

Common questions

  • Are Play Integrity and App Attest not enough?

    They are valuable, and your server should use them. Both give a platform verdict that your backend can verify. What they do not do is watch the app while it runs or act inside it. Otukan adds in-process detection of hooking, injection and debugging, and lets the app respond in the moment, while platform verdicts remain a separate, clearly labelled input.

  • Root-hiding tools exist. Does root detection still matter?

    Yes, as one signal among several. Tools that hide root or a jailbreak have to defeat many checks at once, and they usually rely on the same hooking techniques Otukan detects separately. Layered checks make hiding slower and less reliable. Treat the result as evidence that feeds your policy, weighed with integrity and hooking results.

  • How does signature checking work with Play App Signing?

    With Play App Signing, Google signs the app your users install with the app signing key, which differs from the upload key your team uses. Otukan's signature check is configured with the certificate your users' installs actually carry, so genuine Play installs pass and re-signed copies do not. On iOS, the check follows Apple's distribution signing instead.

  • Will integrity checks get in the way of our own testers?

    They do not have to. Debug and QA builds can run with an observe-only protection profile, so detections are recorded without blocking anyone. Your release builds then carry the enforcing profile. Security testers who need to probe a protected release can be given builds scoped for that purpose.

On the mobile engineering team?

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

Know your app runs as you built it

Tell us the platform, the app framework and the integrity risk that concerns you most, such as repackaged copies, hooking or rooted devices. We do not ask for binaries, signing keys, certificates or production credentials.

Or request a technical demo