Application security protection

Code and data protection

Otukan protects your app's logic, keys and sensitive data in the package, in memory and on screen, across Android, iOS, Flutter and React Native.

  • Android
  • iOS
  • Flutter
  • React Native
Extracted keys and logic is met at the package and memory boundary before it reaches the appExtracted keys and logicPackage and memoryYour app
  • Unreadable in the package

    Obfuscation, string encryption and asset encryption make your shipped app hard to read, so logic, endpoints and embedded values stop being a free download.

  • Guarded while in use

    Sensitive values stay encrypted until the moment the app needs them and are cleared afterwards, which narrows what a memory dump can reveal.

  • Controlled at the screen

    Screen capture, clipboard and keyboard controls keep customer data from leaking out of your interface into places you do not control.

Where secrets leak and how Otukan answers

Choose a leak path to see how Otukan detects it, how the app responds and what your team receives.

Static reverse engineering

  1. Detect

    Obfuscation and binary protection are applied to every protected build, so decompiler output is hard to follow and hard to search.

  2. Respond

    Readable strings, endpoints and business rules are no longer there to copy from the package.

  3. Report

    Each build comes with a protection report listing the classes, libraries and assets that were protected.

Hard-coded secrets

  1. Detect

    Otukan encrypts string constants and embedded values, and highlights keys that belong on your server or in platform-backed storage.

  2. Respond

    Protected values are decrypted only at the point of use inside the running app.

  3. Report

    Reviewers can check the build report to confirm which values ship encrypted.

Memory dumping

  1. Detect

    Runtime checks detect debuggers and memory-reading tools attached to the app process.

  2. Respond

    The app clears sensitive values, restricts the flow or ends the session, according to your policy.

  3. Report

    Your backend receives the detection with app version, platform and OS version.

Asset theft and swapping

  1. Detect

    Bundled assets are encrypted in the package and integrity-checked when they are loaded.

  2. Respond

    A copied asset is useless outside your app, and a swapped one fails to load.

  3. Report

    A failed asset check is reported as a tamper signal.

Screen and clipboard leakage

  1. Detect

    On Android, Otukan blocks capture on screens you mark sensitive; on iOS, it detects screen recording and mirroring.

  2. Respond

    Sensitive views are masked, and copying is limited on the fields you choose.

  3. Report

    Capture attempts on sensitive screens are recorded for your security team.

Controls for code and data

Each control protects a different place where your app's secrets live: the package, the running process or the interface.

  • Code obfuscation

    Renames symbols, restructures control flow and hides call targets in compiled code, so reverse engineering takes far longer and yields less.

  • Binary protection

    Hardens native libraries and the compiled app against disassembly, static analysis and patching.

  • Asset and resource encryption

    Encrypts bundled configuration, scripts, models and media, and decrypts them only when the protected app loads them.

  • Cryptographic controls

    Keeps key material out of readable code and moves it into platform-backed storage wherever the platform offers it.

  • Memory data protection

    Shortens the time sensitive values sit decrypted in memory and detects tools that try to read the app's process.

  • Data loss prevention

    Blocks screenshots on Android, detects screen recording on iOS, limits clipboard use and keeps sensitive fields out of keyboard learning.

How it works

  1. Classify what matters

    List the logic, keys, assets and screens that would hurt you if they were copied or exposed.

  2. Set a protection profile

    Choose obfuscation, encryption and data loss controls per module and per screen.

  3. Build as usual

    Protection runs inside your current build and release pipeline, and app signing stays with your team.

  4. Inspect the output

    Decompile the protected build yourself and compare what an analyst can still read.

  5. Release and observe

    Runtime detections from production show where attackers are probing your app.

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 protects your app’s secrets in each place they live: the package anyone can download, memory while the app runs, and the screen in front of the user. It obfuscates and encrypts what ships, guards sensitive values while they are in use, and controls what leaves through screenshots, the clipboard and the keyboard. Evaluate it by testing each of those places on your own build. It covers Android, iOS, Flutter and React Native apps, with each control scoped per platform. It raises the cost of extraction sharply, and keys that grant real power still belong on your server.

Where code and data are exposed

Every public app is handed to its attackers. Anyone can download it from Google Play or the App Store, unpack it on a desk and read it at leisure. An Android package decompiles to something close to readable code. An iOS binary takes more effort, but once decrypted on a jailbroken device it opens to the same disassemblers. Reverse engineering protection raises the effort that analysis takes. Nothing about the attack needs your servers, so your network defences never see it.

The trust boundary for this topic is therefore the app itself. Three flows cross it.

Where the secret sitsWhat an attacker takesOtukan control
In the packageBusiness rules, endpoints, embedded keys, bundled models and configurationCode obfuscation, binary protection, asset and resource encryption
In memorySession tokens, decrypted values, keys in useMemory data protection, runtime checks against debuggers and memory readers
At the interfaceAccount numbers, statements, documents on screenScreen capture controls, clipboard limits, keyboard protections

For many apps, the first row is the costliest. A discount rule, a fraud threshold or an unreleased feature flag read from your package gives a competitor or a fraud ring a map of your app. The second row matters most for payments, identity and health apps, where a value decrypted for a moment can still be dumped. The third row is where regulated customer data escapes quietly, through a screenshot synced to a cloud gallery or a number pasted into another app.

Who protects what

What the operating system provides

Both platforms give you a strong base. Each app runs in its own sandbox. Android offers the Keystore, which can hold keys in hardware-backed storage on devices that support it. iOS offers the Keychain and Data Protection classes that tie file encryption to the device passcode. Use them. They assume, though, that the device itself has not been compromised, and they do nothing to hide your code or the logic inside it.

What Otukan adds in the app

Otukan works on the parts the platform leaves open. It makes compiled code hard to read, encrypts strings and bundled assets, keeps key material out of readable code and in platform-backed storage, and shortens the life of decrypted values in memory. At the interface, it blocks capture on sensitive Android screens and detects recording and mirroring on iOS, where apps cannot block screenshots outright. For the obfuscation layer in detail, see code obfuscation.

What stays on your backend

Some secrets should never ship. Signing keys for payments, credentials for partner systems and the authority to change prices or limits belong on servers you control. Otukan highlights embedded values that fall into that category, so your team can move them out of the app and replace them with scoped, short-lived tokens.

How to evaluate code and data protection

Platform scope

Ask for scope per control and per platform, not per category. Screen capture behaves differently on Android and iOS; Flutter and React Native package code differently from native apps. Otukan documents each control against each platform, and your evaluation should test the platforms and frameworks you actually ship.

Evidence you can reproduce

The best proof is one you run yourself. Take a protected build of your own app and a baseline build. Decompile both, search them for your API hostnames, feature flags and known strings, and compare what an analyst can still read. On a test device, attach a debugger or memory reader and confirm that sensitive values are cleared and the detection reaches your backend. The protection report for each build tells you what was covered, so you can check nothing sensitive shipped in clear text.

User impact

Protection has to leave the app fast and stable. Measure start-up time, app size and crash rate on your target devices, with the same build compared before and after protection. Keep crash reporting readable with the mapping file from each build. Test screen capture rules with the people who rely on accessibility tools and screen readers, so a control meant for attackers never gets in a customer’s way. Measurement methods are covered on performance and compatibility.

To see how exposed your published app is today, request a free App Exposure Check of the public store release.

Common questions

  • Can obfuscation keep an API key secret for good?

    Anything an app uses at runtime can eventually be recovered by a skilled analyst with enough time. Otukan makes that recovery slow, costly and visible to you. The strongest design pairs this with a simple rule: keys that grant real power live on your server, and the app holds only short-lived, narrowly scoped credentials that are worth little once lifted.

  • Does obfuscation break crash reports or reflection?

    Not when it is set up properly. Otukan produces a mapping file for each protected build, so your team can turn obfuscated stack traces back into readable ones. Classes that rely on reflection, serialisation or native bindings can be excluded or handled with targeted rules, and your QA run on the protected build confirms nothing was renamed that should not be.

  • How are Flutter and React Native apps protected?

    Each framework ships code differently. Flutter compiles Dart ahead of time into a native library, while React Native ships a JavaScript bundle, often compiled to Hermes bytecode. Otukan protects each form in its own way, alongside the native Android and iOS layers of the same app, so native and framework code are protected together in one build.

  • Android already has R8. What does Otukan add?

    R8 shrinks code and renames classes and methods, which is a useful baseline. Otukan adds what renaming leaves open: encrypted strings, obfuscated control flow, encrypted assets and runtime detection of the tools used to read memory. iOS toolchains have no comparable built-in obfuscation step, so Otukan provides that layer for Swift and Objective-C code.

On the mobile engineering team?

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

Keep your app's secrets inside it

Tell us the platform, the app framework and what you most need to keep private, such as embedded keys, business rules or cached customer records. We do not ask for source code, binaries, signing keys or production data.

Or request a technical demo