Application security feature

Mobile app hooking detection

Otukan finds instrumentation toolkits, rewritten functions and injected libraries inside your running app, and hands the signal to your backend to decide.

  • Android
  • iOS
  • Flutter
  • React Native
Runtime instrumentation is met at the in-process checks boundary before it reaches the appRuntime instrumentationIn-process checksYour app
  • Three kinds of evidence

    Toolkit traces, rewritten functions and foreign libraries each reveal instrumentation in a different way, and Otukan looks for all three.

  • Hard to silence

    Hooking checks are layered, repeated and protected by obfuscation, so turning one off leaves others running.

  • Your server decides

    A hooking signal reaches your backend with the request it affects, so the decision is made beyond the attacker's reach.

Instrumentation Otukan detects

Choose a technique to see how Otukan spots it, how the app reacts and what reaches your backend.

Instrumentation toolkits

  1. Detect

    Otukan looks for the components, threads and communication channels that dynamic instrumentation toolkits add to a process.

  2. Respond

    Sensitive flows are closed or the session ends, following your policy for that flow.

  3. Report

    A toolkit signal is attached to the next authenticated request.

Inline function hooks

  1. Detect

    Otukan checks that the first instructions of protected native functions still match the shipped code.

  2. Respond

    The protected operation can be refused before a rewritten function returns a forged result.

  3. Report

    Your team sees which protected function was altered.

Managed-code hooks

  1. Detect

    On Android, Otukan watches for changes to how the runtime dispatches Java and Kotlin methods; on iOS, for Objective-C method replacement.

  2. Respond

    The app follows the action you chose, from recording to terminating.

  3. Report

    The signal names the layer where the hook was found.

Injected libraries

  1. Detect

    Otukan compares the libraries loaded into the process with the set your release expects.

  2. Respond

    Unexpected code can stop the flow before your sensitive logic runs.

  3. Report

    Your backend and security team receive the injection signal.

Symbol rebinding

  1. Detect

    Otukan confirms that calls to system and library functions still resolve to their genuine addresses.

  2. Respond

    Redirected calls around key handling or network code trigger your chosen response.

  3. Report

    A rebinding signal accompanies the request for server-side review.

Controls that work with hooking detection

Instrumentation rarely arrives alone, so hooking detection shares signals and policy with neighbouring controls.

  • Toolkit-specific checks

    Targets the widely used dynamic instrumentation toolkits with dedicated checks for their known traces.

  • Debugger detection

    Catches tracers and debuggers that attackers often pair with hooks to step through protected logic.

  • Code injection prevention

    Addresses foreign code loaded into your process, whatever tool put it there.

  • Obfuscation

    Hides the functions and checks an attacker would want to hook, which raises the cost of finding them.

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. Name critical functions

    Together we list the functions whose results an attacker would most like to forge.

  2. Protect the release

    Hooking checks enter your existing pipeline; your team keeps its signing keys.

  3. Watch the process

    The app inspects its own memory at launch, at sign-in and before each marked action.

  4. Report and respond

    The app applies your policy and your server receives the signal with the request.

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.

Your app can identify runtime instrumentation by examining its own process for three kinds of evidence: the traces an instrumentation toolkit leaves behind, functions whose code or dispatch has been rewritten, and libraries that your release never loads. Otukan runs those checks inside your Android and iOS app at launch, at sign-in and before the actions you mark, and hands each finding to your backend with the request it affects. Detection on a device the attacker controls can be studied, so Otukan layers and repeats its checks and keeps the final decision on your server.

Hooking detection is one of the runtime controls described on mobile RASP.

Technique coverage

Instrumentation is not a single technique. An attacker who wants to read a token, skip a check or approve their own transaction will pick whichever method is easiest for that function.

EvidenceWhat the attacker didWhat Otukan examinesAndroidiOS
Toolkit tracesAttached a dynamic instrumentation toolkit to your processComponents, threads and channels the toolkit introducesChecks written for Android processesChecks written for iOS processes
Inline hooksOverwrote the start of a native function to jump elsewhereThe first instructions of protected functionsNative librariesNative code and frameworks
Managed-code hooksReplaced a method at the language runtime levelMethod dispatch in the runtimeJava and Kotlin methodsObjective-C methods
Injected librariesLoaded foreign code into the processLoaded libraries against the expected setShared libraries in the processDynamic libraries in the process
Symbol rebindingPointed a call to a replacement functionWhere system and library calls resolveLinked function tablesLazily bound symbols

Why the platforms differ

Android and iOS load code differently, dispatch methods differently and expose different information to an app. Otukan writes its checks for each platform’s runtime and tests them on that platform’s devices. A check proven on Android says nothing about iOS, and Otukan treats them as separate controls.

Evasion limits

Attackers adapt. A detection that only looks for one file name or one port is defeated the day someone renames it. Otukan is designed around that reality, without publishing the details an attacker would want.

  • Several views of the same attack. Traces, code integrity and loaded libraries are checked independently, so hiding one kind of evidence still leaves the others.
  • Checks at more than one moment. Instrumentation can attach late, so checks repeat before sensitive actions, not only at launch.
  • Protected checks. Obfuscation makes Otukan’s own checks hard to locate, and anti-tampering notices when they are removed from the package.
  • A server that expects an answer. When a signal stops arriving, your backend can treat the silence itself as a risk.

We show your engineers how each check behaves in an authorised lab rather than on a public page. That keeps every customer’s protection stronger.

Response integration

A hooking signal is only useful if something acts on it. Otukan connects detection with a response in the app and a decision on your server.

MomentWhat the app doesWhat your backend can do
At launchHolds back sensitive features until checks passRecord the device’s state for later requests
At sign-inApplies your policy for the login flowStep up authentication or refuse the session
Before a transactionRe-checks critical functions just before they runDecline the transaction and flag the account
During the sessionRepeats checks in the background of marked screensCorrelate signals with velocity and device history

Signals are most useful when your team can act on them together. Each hooking signal names the layer and the protected function involved, so your security operations can group sessions by technique, spot a new tool spreading across accounts and adjust policy for the affected flow without waiting for the next release.

The app’s response can observe, warn, restrict or terminate, set per flow. A crypto wallet might terminate when a signing function is hooked, while a content app might only record the signal. For wallet flows, see crypto wallet app security. Identity checks face a related risk, which camera injection detection covers.

Before a protected release ships, the named functions are hooked in an authorised lab to confirm each signal. The same journey is repeated on clean devices to confirm silence, then install, update, sign-in and the protected flow are rerun, with versions, devices and the reviewer recorded. For a structured way to evaluate options, see the hooking and instrumentation detection solution guide.

Common questions

  • Can hooking detection be bypassed?

    An attacker with full control of a device can study any client-side check. Otukan's answer is to make that work slow and expensive: checks are layered, repeated during the session and hidden by obfuscation, and every result can reach your backend. Silencing a check on the device does not silence a server that expects to hear from it.

  • Why do you not publish how each check works?

    Publishing detection details would hand attackers a checklist. We describe the classes of evidence Otukan looks for and show your engineers the behaviour in an authorised lab, under your own review. That keeps the protection strong for every customer while giving your team what it needs to evaluate it.

  • Does this affect accessibility tools or legitimate libraries?

    Some assistive tools, analytics and crash reporters also interact with an app's process. Otukan records the libraries your release is expected to load and tests with the assistive features your users rely on. Where a legitimate tool does trigger a signal, your policy can observe rather than block for that flow.

  • Are Flutter and React Native apps covered?

    Yes. Cross-platform apps still run native code underneath their framework, and that is where instrumentation attaches. Otukan protects the native layer and the framework's runtime on each platform, with checks built separately for Android and for iOS.

On the mobile engineering team?

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

Know when your code is being rewritten

Tell us the platform, the framework and the functions you most need to keep untouched, such as sign-in, key handling or payment approval. We will not request your binaries, keys or live credentials.

Or request a technical demo