Mobile app protection testing.

Need to know whether an attacker can bypass your app's RASP, anti-tampering or anti-bot protections? We test them with the same techniques an attacker would use and tell you which ones work, which don't and why.

For teams that already protect their app, with their own controls or a vendor's SDK.

How well a protection works in your app depends on your configuration and integration: which checks are enabled, how the app reacts and which flows are covered. If it can be bypassed, attackers can still automate fraud, tamper with the app or clone it.

We check whether an attacker can still do what your protections are meant to prevent, using techniques such as dynamic instrumentation (hooking), repackaging, emulators or direct calls to your API. Depending on your app, testing can cover:

  • Runtime application self-protection (RASP): detection of instrumentation, debugging and changes to the execution environment.
  • Anti-tampering and integrity checks: resistance to application modification and repackaging.
  • Reverse engineering protections: whether an attacker can understand and modify the protected logic.
  • White-box cryptography: whether keys protected with white-box cryptography can be extracted, or the protected operations reused outside the app.
  • Root, jailbreak, emulator and virtual environment detection: whether environment checks can be bypassed and what remains accessible.
  • Location spoofing detection: whether the device location can be faked to get around geographic restrictions or anti-fraud checks.
  • Attestation (such as Play Integrity or App Attest) and server-side verification: whether your backend rejects requests that do not come from your genuine app on a genuine device, and whether an attacker can obtain or reuse valid tokens from a modified app or device.
  • Device binding: whether keys, credentials or sessions tied to the device can be extracted or reused on another device.
  • Bot detection and anti-automation: whether the flows you want to protect, such as sign-up or login, can still be automated.
  • Network protections: whether certificate pinning and other channel protections can be bypassed to intercept or modify traffic.
  • Screen and overlay protections: whether protections against screen capture, overlays and accessibility-service abuse can be bypassed.
  • Response to detections: whether an attacker can suppress the app's reaction to a detection, such as closing the session or notifying your backend.
  1. Call: you tell us what you want to prevent, such as bots at sign-up, cloned apps, fake locations or calls to your API that bypass the app.
  2. Proposal: we set out the agreed scope, what we need from you, the schedule and a fixed price.
  3. Testing: you send us the builds and we start. If we find something critical, we let you know right away.
  4. Report and review: we send you the report and go through the bypasses with your engineers.
  5. Retest: once you have fixed the vulnerabilities, we check on the new build whether the bypasses still work.

Confirmed bypasses

Each bypass with its impact, reproduction steps and a proof of concept where applicable.

Attacker objectives

Which of the agreed objectives became possible, and what an attacker could do as a result.

Why each bypass works

The weakness behind each bypass and where we place it: in the protection's configuration or integration, the protection itself or your backend.

Test coverage

Which protections we tested and how, including the ones that held up.

You receive one report per platform with an executive summary and, if you include the retest, a new version with the status of each bypass on the new build.

We help write the OWASP resilience tests

Our team contributes to MASVS-RESILIENCE, the part of OWASP MAS that covers platform integrity and resistance to debugging, tampering, reverse engineering, emulators and dynamic instrumentation. Those same specialists are the ones who test your protections. OWASP recognized this work by naming vulnit an OWASP MAS Advocate.

Verified by an independent third party

Your vendor delivers the protection ready to use. We attack your app to check whether it really protects you, what holds, what doesn't and why.

Reverse engineering is our daily work

We analyze protected apps in our assessments and research, including when the logic sits in obfuscated native code or the app detects tools such as Frida. We build our own technology, such as Chameleon, for cases where public tools fall short.

Meet the team
What is RASP?

Runtime application self-protection (RASP) detects or responds to suspicious activity while an app runs. It is one of the protections we test: we check whether it works against agreed attack scenarios and whether bypassing it exposes the behavior or data it is meant to protect.

How is this different from a mobile application penetration test?

A mobile application penetration test looks for vulnerabilities across the agreed scope of the app. This service focuses on the effectiveness of protections against reverse engineering, tampering and runtime manipulation. The two assessments can complement each other.

What if the protection comes from a vendor?

We test it the same way. Your vendor can help you confirm whether each weakness can be fixed through configuration or is a limitation of their product. If you develop protection SDKs, see our protection SDK evaluation.

How long does it take and what does it cost?

It depends on how many apps and platforms we test (Android, iOS or both), the protections and attacker objectives in scope and whether backend checks are included. We send you a proposal with a fixed price and the schedule. It usually takes one to two weeks per platform, report included, depending on the complexity of your app. We can usually start the same week you accept the proposal; the start date depends on our team's workload and is stated in the proposal.

What do you need from us?

The app builds with protections enabled (APK or AAB for Android, IPA for iOS), test accounts and access to the environment you prefer, whether production or a staging environment. If we test in production, we agree with you when, at what volume and from which IPs. The proposal sets out the details.

Do you need source code?

No. By default, testing is black-box: we start with the same knowledge an attacker would have. If you prefer, we can also review the source code.

Do you test on physical devices?

When needed. On Android we mainly work with Chameleon, our analysis environment, which reproduces a physical device including its hardware capabilities. If we hit a limitation that matters for your app, we use physical devices. On iOS we use physical devices.

Do you use AI on my app?

Yes, to cover more of your app and go deeper in the same time. We use AI providers that do not train their models on your data. We only use accounts you provide or that we create ourselves, never other real users' accounts. Our specialists lead the work and validate every result. If your policy does not allow external AI, tell us when we agree on the scope and we work without it.

Can I share the results with customers or partners?

Yes. The report includes an executive summary for non-technical readers. If you need it, we can also give you a signed letter, at no extra cost, with what we tested, the version, the date and the result.

Is retesting included?

Retesting is quoted separately at a reduced rate. In the proposal we give you two options, testing only or testing with one retest round, so you know the total cost from the start.

What language is the report in?

English by default. If you need it in Spanish, just tell us.

How do you handle confidentiality?

We agree confidentiality terms before you share builds or documentation. We have a standard NDA, but if you prefer to use yours, we are happy to review it.

Tell us about your app and what you want to prevent. We reply within one business day to arrange a scoping call.

Discuss your app protections

A necessary cookie remembers your choices for up to 180 days. Privacy policy.