By NHI Mgmt Group Editorial TeamDomain: Cyber SecuritySource: Arxan TechnologiesPublished November 3, 2025

TL;DR: A review of 40 top free Google Play apps found 37% had no renaming at all, 28% had only partial renaming, and 35% used broad code renaming, according to Arxan Technologies. The result is a market where reverse engineering, tampering, and logic exposure remain straightforward for too many client-side apps, especially where APIs and sensitive workflows are exposed.


At a glance

What this is: Arxan Technologies examined 40 popular Android apps and found that code obfuscation is inconsistent, leaving a large share of client-side logic easy to inspect and tamper with.

Why it matters: For application security, IAM, and NHI practitioners, weak client-side hardening can expose APIs, authentication flows, and embedded secrets that attackers later leverage against backend controls.

By the numbers:

👉 Read Arxan Technologies' analysis of code obfuscation in popular Android apps


Context

Client-side application hardening is the discipline of making code harder to inspect, modify, and repurpose after it reaches an attacker’s hands. In Android, the problem is not just intellectual property theft. Weak obfuscation can expose API structure, authentication behaviour, and hidden operational logic that later weakens backend security and identity controls.

This article is really about the governance gap between assumed protection and actual resistance to reverse engineering. For teams responsible for application security, identity verification, and secrets management, the overlap matters because exposed client logic can reveal credentials, token flows, and service endpoints that attackers abuse long before backend controls detect it. The pattern described here is common, not exceptional.


Key questions

Q: What breaks when Android app code is not properly obfuscated?

A: Readable Android code makes reverse engineering much faster, which lets attackers reconstruct APIs, identify authentication flows, and spot business logic worth abusing. The practical failure is not only intellectual property loss. Exposed client code can also reveal how to reach backend services, where tokens live, and which controls matter most, shrinking the attacker’s effort dramatically.

Q: Why does partial code obfuscation sometimes make an app easier to attack?

A: Partial obfuscation can act like a beacon because the renamed components stand out against readable code. That contrast helps attackers find the modules teams most want to hide, such as security checks, privileged workflows, or sensitive APIs. Once those hotspots are identified, the attacker can focus effort where neutralising protection yields the most value.

Q: How do security teams decide whether obfuscation is acceptable or a sign of malicious intent?

A: Teams should judge obfuscation by context, provenance, and behaviour. Legitimate obfuscation may appear in shipped client code, but unexpected obfuscation in dependencies, scripts, or build artifacts deserves scrutiny. If the code uses encoded payloads, remote retrieval, or runtime execution without a clear business reason, treat it as suspicious until proven otherwise.

Q: What should mobile teams do before shipping apps with sensitive logic?

A: They should remove embedded secrets, minimize client-side trust decisions, and make sure critical authorization logic stays server-side. Where obfuscation is used, it should cover the full codebase consistently so attackers cannot isolate the most valuable functions. This reduces exposure if the app is decompiled, cloned, or repackaged.


Technical breakdown

Why Android reverse engineering starts with readable identifiers

Most Android apps compile Java or Kotlin into bytecode that still carries class and method metadata unless renaming or obfuscation is applied. Reverse engineers use those identifiers to reconstruct app structure, understand API calls, and infer where sensitive logic sits. Even when the backend is the eventual target, the client often exposes enough intelligence to accelerate abuse. Obfuscation does not stop analysis entirely, but it increases effort and slows the attacker’s ability to map functions, privileges, and sensitive workflows.

Practical implication: treat readable client code as an exposure surface and assume attackers will use it to map APIs, token handling, and sensitive flows.

What MASVS-RESILIENCE-3 is trying to prevent

The OWASP MASVS resilience controls distinguish between platform integrity, anti-tampering, anti-static analysis, and anti-dynamic analysis. MASVS-RESILIENCE-3 focuses specifically on preventing easy static analysis by reducing the value of decompiled code. If only a few classes are renamed, those protected areas can become the most obvious targets. Uniform renaming makes it harder to identify the app’s most sensitive components and reduces the chance that attackers can quickly locate business logic, API paths, or embedded secrets.

Practical implication: verify that obfuscation is broad and consistent, not selectively applied to only the most obvious sensitive classes.

How partial renaming can create a security beacon

Partial obfuscation can backfire because it highlights the very code teams are trying to hide. A mixed pattern of renamed and readable classes creates visual signals that tell an attacker where to concentrate effort. That can shorten analysis time, increase confidence in extracted insights, and make it easier to remove client-side protections. In practical terms, code hardening is not just about adding a control. It is about making the control hard to isolate, reverse, and neutralise during inspection.

Practical implication: test for obfuscation leakage patterns that reveal which modules carry authentication, payment, or privileged workflow logic.


Threat narrative

Attacker objective: The attacker wants to shorten reverse-engineering time and extract enough structure, API detail, or sensitive logic to abuse the application or its backend services.

  1. Entry occurs when an attacker downloads a popular Android app and decompiles the client to inspect readable bytecode and metadata.
  2. Escalation happens when exposed identifiers, API structure, or sensitive logic reveal where authentication, tokens, or backend functions are handled.
  3. Impact follows when the attacker uses that intelligence to tamper with the app, clone logic, expose secrets, or target backend systems more effectively.

NHI Mgmt Group analysis

Code hardening is now an identity-adjacent control, not just an app-sec feature. When mobile clients expose API structure, authentication pathways, or token handling, the problem extends into IAM and secrets governance. Attackers do not need to own the backend first if the client reveals how to reach it. Practitioners should treat client-side obfuscation as part of the control surface that protects identity flows and privileged application access.

Partial protection creates a false sense of resilience. A mixed state of readable and renamed classes helps attackers locate the logic that matters most. That pattern undermines assumptions baked into MASVS-RESILIENCE because the visible contrast itself becomes intelligence. The governance lesson is that controls must be evaluated for consistency, not presence alone.

Obfuscation quality is a measurable resilience signal. The meaningful question is not whether an app includes some hardening, but whether the hardening materially increases analysis cost. If an attacker can rapidly isolate sensitive modules, the control has failed at its real purpose. Practitioners should use static analysis testing and red-team review to validate whether obfuscation changes attacker effort in practice.

Client-side exposure often becomes backend identity exposure. Modern apps frequently embed clues that lead directly to APIs, service accounts, or credentialed workflows. That makes reverse engineering an upstream identity risk, especially where secrets management is weak or token boundaries are unclear. The practical conclusion is to design assuming the client will be inspected, then ensure nothing in it helps an attacker impersonate trusted software.

What this signals

As mobile apps increasingly sit inside identity-driven ecosystems, code hardening is becoming part of the trust chain rather than a narrow development concern. When client logic reveals how an app talks to APIs or handles tokens, reverse engineering can become an upstream path to identity abuse and credential compromise.

Client-side trust leakage: the real risk is not only that code can be read, but that the app leaks enough structure to help an attacker impersonate trusted software or target sensitive backend workflows. Security teams should align obfuscation testing with identity and secrets reviews, not leave it isolated inside mobile engineering.

The next maturity step is to measure whether hardening changes attacker cost, not whether a box is ticked in a release checklist. That means pairing decompilation testing with secrets scanning, API review, and server-side authorization checks so the control surface is judged end to end.


For practitioners

  • Validate obfuscation coverage across the full codebase Scan a representative app sample to confirm that renaming is applied consistently across classes and methods, not just around obvious sensitive modules.
  • Test whether client logic exposes identity and API pathways Review decompiled builds for authentication flows, token handling, hardcoded endpoints, and error messages that reveal how the backend is reached.
  • Treat secrets in mobile code as compromise-prone Remove embedded credentials, API keys, and certificates from client-side code and shift sensitive trust decisions to server-side controls wherever possible.
  • Measure reverse-engineering resistance, not just control presence Use red-team review or static analysis exercises to see whether obfuscation meaningfully slows inspection and makes sensitive logic harder to isolate.

Key takeaways

  • A large share of popular Android apps still ship with weak or partial code hardening, which leaves reverse engineering and tampering easier than many teams assume.
  • Partial obfuscation can make the most sensitive logic easier to spot, so consistency matters more than cosmetic protection.
  • Practitioners should validate obfuscation as a resilience control, then pair it with secrets removal and server-side authorization design.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Agentic AI Top 10 and OWASP Non-Human Identity Top 10 address the attack and risk surface, while NIST CSF 2.0 and CIS Controls v8 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Agentic AI Top 10The article focuses on application resilience and anti-analysis controls in mobile code.
OWASP Non-Human Identity Top 10NHI-08Client apps can expose credentials and token flows that impact NHI governance.
NIST CSF 2.0PR.DS-2Hardening supports protection of software and sensitive data against analysis and tampering.
CIS Controls v8CIS-16 , Application Software SecurityThis is an application security control problem involving build hardening and testing.

Map mobile hardening to PR.DS-2 and verify that code integrity and sensitive data are protected in release builds.


Key terms

  • Code Obfuscation: Code obfuscation changes how application logic appears to an attacker without changing what the app does. In mobile security, stronger obfuscation goes beyond symbol renaming and can include control flow distortion, string encryption, and polymorphism to make reverse engineering harder.
  • Static Analysis Resistance: Static analysis resistance is the extent to which an application frustrates inspection of its code before execution. For mobile security, it measures whether decompilation reveals useful structure, API paths, or sensitive logic that attackers can leverage to map trust boundaries or target backend services.
  • Runtime Application Self-Protection: RASP is a runtime control that detects and can block suspicious application behaviour as it happens. In NHI contexts, it can contain abuse from service accounts or tokens, but it does not replace identity ownership, entitlement review, rotation, or deprovisioning.
  • Client-Side Trust Leakage: Client-side trust leakage occurs when sensitive checks, workflows, or assumptions are placed in code that runs in an untrusted environment and can therefore be observed or manipulated. It is a design weakness because the attacker can learn how the system works before trying to defeat it.

What's in the full report

Arxan Technologies' full article covers the operational detail this post intentionally leaves for the source:

  • A step-by-step explanation of how the app sample was decompiled and grouped into renaming coverage categories
  • The visual criteria used to distinguish no renaming, local renaming, and global renaming across the 40 apps
  • Examples of how partial renaming can expose the most sensitive logic to reverse engineers
  • The follow-on comparison the author sets up for the next post on highly secured apps

👉 Arxan Technologies' full article covers the renaming categories, methodology, and reverse-engineering implications in more detail.

Deepen your knowledge

The NHI Foundation Level course, the industry's only accredited NHI security programme, covers NHI governance, machine identity security, secrets management, and identity lifecycle control. It is useful for practitioners who need to connect identity governance to broader application and access risks.
NHIMG Editorial Note
Published by the NHIMG editorial team on September 3, 2026.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org