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: This analysis shows that code obfuscation is still inconsistent in popular Android apps, with many apps remaining easy to reverse engineer because renaming coverage is absent or partial.
Why it matters: For appsec, IAM, and backend teams, weak client-side hardening increases exposure of APIs, sensitive workflows, and secrets that attackers can use to pivot into broader systems.
By the numbers:
- Among the 40 top free Google Play apps reviewed, 37% had no renaming at all.
- Another 28% of the apps had only partial renaming.
- The remaining 35% used renaming across most classes.
Context
Code obfuscation in mobile apps is a control for reducing what an attacker can learn from client-side code before they ever touch the backend. When class, method, and field names remain readable, reverse engineering becomes much easier, and the attacker can map sensitive logic, identify API patterns, and find the functions worth tampering with first.
In Android specifically, renaming matters because bytecode-based languages often preserve enough structure to expose how an app works even after packaging. That creates a governance issue for security teams: the app may look deployed and protected, but its internal logic can still be readily inspected, modified, and repackaged by an adversary.
For organisations with sensitive workflows, original algorithms, or embedded credentials, this is not just a mobile app problem. It is a broader application security and identity-adjacent exposure problem because leaked API details and authentication mechanisms can become the entry point to downstream systems.
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 client-side code exposure increase backend risk?
A: Because the app often reveals how the backend expects to be called, which paths are privileged, and where authentication is checked. Once that structure is visible, attackers can craft better requests, probe trust boundaries, and target misuse of APIs or sessions with far less guesswork.
Q: What are the signs that Android obfuscation is failing?
A: Readable class and method names, consistent exposure of sensitive modules, and partial renaming that leaves the app’s most important flows easy to spot are all warning signs. If the decompiled app still looks close to the source structure, reverse engineering effort will remain low.
Q: Should teams prioritise obfuscation or server-side controls first?
A: Use both, but do not treat obfuscation as a substitute for backend enforcement. If the client discloses API structure or auth logic, the app is already helping attackers understand the system, so server-side controls remain the final authority while obfuscation raises attacker effort.
Technical breakdown
Why Android bytecode still reveals app structure
Java and Kotlin apps compile to bytecode that preserves enough architectural signal for decompilers to reconstruct the application layout. Even when the code is packaged and minified, class names, method names, and field patterns can expose business logic, API usage, and security-sensitive flows. Obfuscation reduces this signal by replacing readable identifiers with meaningless ones, making static analysis slower and less reliable. The key point is not that reverse engineering becomes impossible, but that the attacker has to spend more time to separate useful logic from noise. In a threat environment, that time cost matters because it raises the effort required for reconnaissance before tampering or credential abuse.
Practical implication: treat readable identifiers in shipped Android apps as an exposure path and require code hardening before release.
Why partial renaming can help attackers
Partial renaming sounds protective, but it can create a spotlight effect. If only selected components are renamed, the untouched areas and the protected areas become easier to distinguish, which can reveal where the app’s most sensitive code lives. That helps an attacker focus effort on the exact routines that enforce checks, call APIs, or protect business logic. In effect, weak or inconsistent obfuscation can become a map of the controls you most wanted to hide. Uniform coverage across the codebase is more resilient because it removes the visual cues that guide targeted analysis.
Practical implication: avoid uneven obfuscation coverage, because partial protection can expose the very functions you meant to conceal.
How client-side exposure turns into backend risk
Client-side code is often the easiest way to learn how the backend behaves. If an app exposes API naming, authentication flow details, or embedded secrets, an attacker can use that intelligence to craft requests, test trust boundaries, or target privileged operations outside the app itself. This is why mobile hardening is not only about protecting intellectual property. It is also about reducing the attack surface that supports credential abuse, API misuse, and replay or tampering attempts against connected services. The backend may still enforce controls, but the attacker has a much better blueprint for testing them once the app is reverse engineered.
Practical implication: review mobile builds as a source of backend reconnaissance risk, not just as a standalone app protection issue.
Threat narrative
Attacker objective: The attacker wants enough structural knowledge of the app to expose logic, abuse exposed interfaces, and modify or clone the client-side workflow.
- Entry begins with decompiling a client-side Android application and inspecting readable identifiers, class structures, and exposed logic.
- Credential or logic discovery follows when the attacker identifies APIs, authentication mechanisms, or sensitive code paths that the app reveals.
- Escalation occurs when the attacker uses that information to tamper with the app, bypass controls, or target connected backend workflows.
- Impact is reverse engineering, cloning, tampering, or exposure of sensitive application logic that should have remained concealed.
Breaches seen in the wild
- Twitter source code leak 2023: Twitter source code and internal tools were posted to GitHub by "FreeSpeechEnthusiast" and stayed public for months before a 2023 takedown.
Read and download The State of NHI & AI Agent Breach Report 2026, covering 200+ breaches impacting Non-Human Identities including AI Agents.
NHI Mgmt Group analysis
Code hardening is still being treated as optional in too many mobile programmes. The article shows a control gap, not just a tooling gap: organisations still ship Android apps with no renaming or only partial renaming. That means the attack surface is being judged at runtime but exposed at build time. The practitioner takeaway is that mobile hardening has to be governed as a release criterion, not a post-release enhancement.
Partial obfuscation is a governance smell because it advertises where the sensitive logic sits. When only some classes are renamed, attackers get a visual cue about which parts of the app deserve attention. That pattern is especially relevant when sensitive workflows, API calls, or auth flows live in the client. The field should treat inconsistent obfuscation as a form of security signalling that helps reverse engineers prioritise effort.
Mobile reverse engineering is an identity-adjacent risk when apps expose authentication and API behaviour. The article makes clear that client-side inspection can reveal how access is obtained and where trust is enforced. That intersects with IAM because leaked auth patterns and API structure can support credential abuse, session probing, or backend impersonation. The practitioner conclusion is simple: if the app discloses trust mechanics, identity controls are already under pressure.
Named concept: obfuscation spotlighting. This article describes a failure mode where partial renaming makes protected modules stand out rather than disappear. That can shorten attacker discovery time and focus effort on the most valuable code paths. Teams should assume uneven hardening creates a roadmap for reverse engineering, not a barrier.
Client-side code remains a security boundary, even when the real damage lands on the backend. Reverse engineering the app is often the shortest path to understanding how backend controls can be tested or bypassed. That is why application security, IAM, and API governance cannot be separated in mobile-heavy environments. The practitioner conclusion is to govern the app as an intelligence source, not just a user interface.
What this signals
Obfuscation spotlighting is the practical failure mode here: when only some classes are renamed, the protected code becomes easier to identify, not harder. That creates a discovery map for attackers and shortens the time needed to reach the app’s most sensitive workflows.
Mobile programme owners should treat application packaging as part of security governance, not just release engineering. If reverse engineers can recover auth flows or API structure from the client, the organisation has already weakened the trust boundary that sits between the app and backend services.
For practitioners
- Require uniform code obfuscation before release Set release gates so Android builds cannot ship with readable class, method, or field names across only part of the codebase. Test the final artefact, not just the source, because bytecode can still reveal architecture and sensitive flows.
- Treat API discovery as a mobile threat path Review apps for exposed endpoint names, authentication sequences, and logic that a reverse engineer could use to map backend trust boundaries. Where the client discloses too much, reduce what is embedded in the app and move sensitive checks server side.
- Search builds for embedded secrets and high-value logic Scan mobile packages, configuration files, and decompiled output for API keys, hard-coded tokens, and security decision points that should never be recoverable in shipped code. Prioritise apps that handle sensitive data or privileged workflows.
- Measure obfuscation coverage by app module Track whether renaming is absent, partial, or broad across each module so security and engineering teams can see where exposed logic clusters. Use that visibility to focus remediation on the modules that most clearly reveal sensitive workflows.
Key takeaways
- Many Android apps still ship with code structures that make reverse engineering straightforward, which leaves sensitive workflows, APIs, and business logic exposed.
- The article’s findings show a split market, with a large minority of apps offering little or no meaningful renaming protection.
- Security teams should treat obfuscation as a release gate and verify that protection is applied consistently across the full codebase.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
MITRE ATT&CK addresses the attack and risk surface, while OWASP ASVS and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP ASVS | V15 — Secure Coding and Architecture | Readable client code and weak hardening expose architecture and sensitive logic. |
| V13 — Configuration | Obfuscation coverage depends on secure build and release configuration. | |
| Recommendation — Apply V15 to reduce exposed implementation detail in shipped Android builds. Use V13 to enforce consistent hardening settings before app release. | ||
| NIST CSF 2.0 | PR.DS-01 — Data-at-rest is protected | Sensitive logic and embedded secrets in mobile code threaten data protection. |
| Recommendation — Use PR.DS-01 to ensure secrets and sensitive artefacts are not recoverable from app packages. | ||
| MITRE ATT&CK | TA0007;TA0009 — Discovery; Collection | Reverse engineering is a discovery path that enables collection of logic and secrets. |
| Recommendation — Map exposed app logic to TA0007 and TA0009, then prioritise detection for analysis and extraction behaviours. | ||
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.
- Reverse Engineering: Reverse engineering is the analysis of compiled software to understand how it works without access to source code. In mobile security, it usually means examining a published binary to recover logic, data flows, and implementation details. Attackers use it to extract secrets, identify weaknesses, and modify application behavior.
- Anti-Static Analysis: Anti-static analysis is a protection layer that makes source code, binaries, and embedded strings harder to inspect before execution. It commonly includes obfuscation, renaming, and string encryption. The objective is to reduce what attackers can learn from offline analysis and to weaken automated reverse engineering workflows.
- Renaming Coverage: Renaming coverage describes how much of an application’s code has its identifiers replaced with non-readable values. Broad coverage hides structure more effectively, while partial coverage can reveal which modules contain the most sensitive logic.
Deepen your knowledge
The NHI Foundation Level course, the industry's only accredited NHI security programme, covers NHI governance, identity lifecycle, and secrets management for practitioners who need to govern trust boundaries across modern systems.It helps identity, security, and architecture teams connect access control decisions to the broader governance model their programmes depend on.
Published by the NHIMG editorial team on September 6, 2026.
Updated on October 12, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org