Skip to content
AZ Mobile ID Cover

Reverse Engineering Arizona's Mobile ID App

Reverse Engineering Arizona's Mobile ID App


The Question That Started It All

Arizona's Mobile ID app has been live for several years now, promising digital driver's licenses that "put you in control of your identity." With 500,000+ installations and backing from IDEMIA, a French biometric conglomerate serving governments worldwide, I approached it with the skepticism that comes from building privacy-first technology. Government apps that handle biometric data warrant scrutiny, especially ones with this level of market penetration.

This particular app requests access to:

  • Your driver's license photo
  • Real-time facial geometry
  • Fingerprint data
  • Precise GPS location
  • Your phone's unique hardware identifiers

I downloaded the APK and started taking it apart.

I found more than standard privacy concerns. The app contains surveillance infrastructure hiding in plain sight, deployed at scale across Arizona's population.

First Impressions: This Isn't a Normal App

The APK is 82MB, massive for what should be a simple ID viewer. The developer is IDEMIA, a French conglomerate that builds biometric systems for governments worldwide. Their client list includes the TSA, FBI, and immigration agencies across Europe.

The APK size and developer background are red flags, but the real problems appeared when I ran the APK through standard decompilation tools.

Phase 1: Static Analysis

The Decompilation That Broke My Tools

I used JADX, the industry-standard Android decompiler. For most apps, this produces readable Java source code. For AZ Mobile ID, it produced 9,033 errors across 18,137 Java files.

These were not accidental. They were intentional.

Copy
JADX Success Rate: 47%
Obfuscation Level: Military-grade
Control Flow: Destroyed by switch-based dispatchers
String Encryption: 100% of literals encrypted

Control Flow Flattening as Anti-Analysis Weapon

Every method in the app had its logic converted to massive switch statements:

Copy
switch (i % (1098385065 ^ C1577Ry.fq())) {
    case 130: return ah.AFInAppEventParameterName();
    case 1771: // equals() method logic
    case 2890: // hashCode() method logic
    // ... 9,000+ similar cases
}

This technique, called control flow flattening, destroys the app's structure. Instead of readable methods with clear purposes, you get opaque dispatchers that jump to random locations. Static analysis becomes nearly impossible.

A government ID app has no legitimate need for this. Legitimate apps do not hide their code this aggressively.

String Encryption Hides Everything

Every string in the app is encrypted at compile time and decrypted at runtime. The decryption happens through a custom cipher:

Copy
// What appears in the code:
C1500Qy c1500Qy = new C1500Qy("\u001a\n\u0018\u001a\u0011\u0018\u0018");
String result = C1277Okq.aq(encryptedString, decryptionKey);

// What it decrypts to at runtime:
// (We can't know without dynamic analysis because the keys are generated at runtime)

The encryption uses a 16-bit key space (65,536 possible values) with position-dependent offsets. Brute-forcing is theoretically possible but computationally expensive.

API endpoints, analytics event names, and error messages are all hidden from inspection. The app cannot be understood without executing it.

Phase 2: Native Libraries

22 Native Libraries, Most Stripped of Debug Symbols

The app includes 22 .so (shared object) files, the compiled C/C++ code that handles the heavy lifting. Most are stripped, meaning function names and debug information are removed. But one stood out:

libkihshfgvh.so

This library has a randomized, meaningless name. It's completely stripped. It contains 5,172 strings, but none reveal obvious purpose. I found no network URLs, no error messages, only C++ standard library symbols.

I find the placement suspicious. It's loaded alongside other networking components but hides its functionality behind obfuscation. In malware analysis, this pattern indicates a network communication layer designed to evade detection.

The Biometric Pipeline

Other native libraries paint a clearer picture:

  • libmscengine.so (74,771 strings): Core biometric processing
  • libMorphoLite.so: Face and fingerprint template generation
  • libBlinkID.so: Document OCR (from Croatian company Microblink)

The biometric data flow raises serious concerns:

Copy
Camera Input → Native SDK Processing → Encrypted Template → 
IDEMIA Backend (430099.net) → Unknown Jurisdiction

Phase 3: Dynamic Analysis (Attempted)

When the App Fought Back

Static analysis only reveals what code looks like. To understand what it actually does, I needed dynamic analysis, running the app while monitoring its behavior.

I set up Frida, the industry-standard dynamic instrumentation toolkit, on a rooted Pixel 9 Pro Fold. The app immediately demonstrated why the obfuscation exists.

Attempt 1: Direct Spawning

Copy
frida -U -f com.idemia.mobileid.us.az
Result: Failed to spawn: java.lang.reflect.InvocationTargetException

Attempt 2: Attach to Running Process

Copy
frida -U com.idemia.mobileid.us.az
Result: App self-terminates upon attach

Attempt 3: Attach by PID

Copy
frida -U -p <PID>
Result: Process killed before hooks execute

Attempt 4: Anti-Detection Bypass Scripts Created comprehensive bypass scripts for:

  • Debug detection
  • Root detection
  • Emulator detection
  • Frida detection

Result: All blocked at native level

The SIGKILL Pattern

Log analysis revealed consistent behavior:

Copy
Process com.idemia.mobileid.us.az (pid XXXXX) has died: fg TOP
Process XXXXX exited due to signal 9 (Killed)

Each time Frida attempted instrumentation, the app detected it and sent SIGKILL to itself. This level of protection exceeds commercial anti-piracy. I see this as anti-forensics.

Commercial apps do not protect themselves this aggressively. This level of protection typically appears in:

  • Military/government secure communications
  • Banking trojans
  • State-sponsored surveillance tools

What the Code Reveals (When It Runs)

Despite dynamic analysis being blocked, static analysis and string extraction revealed five separate tracking systems:

1. AppsFlyer (Israel/US)

Purpose: Marketing attribution and install tracking Data Collected:

  • Android ID (persistent device identifier)
  • IMEI/MEID (hardware identifier)
  • OAID (advertising ID)
  • Install source tracking
  • Real-time location

Jurisdiction Risk: Israeli company with US operations. Outside EU GDPR jurisdiction.

2. Localytics (US)

Purpose: Real-time user behavior analytics Data Collected:

  • Session duration and navigation flow
  • Feature usage patterns
  • Push notification interaction
  • Custom event tracking

Privacy Impact: Creates behavioral profiles for "optimization" that enables surveillance.

3. Firebase Analytics (Google, US)

Purpose: Google's behavioral tracking infrastructure Data Collected:

  • Screen view tracking
  • Crash reporting (may include sensitive data)
  • Performance monitoring
  • Custom event logging

Privacy Impact: Data shared with Google's advertising and analytics ecosystem.

Purpose: Document OCR and ID scanning Data Collected:

  • Driver license photos (front/back)
  • MRZ (Machine Readable Zone) data
  • Barcode data (PDF417)

Critical Concern: Third-party processing of government-issued credentials outside US jurisdiction.

5. IDEMIA SmartSDK Analytics (Internal)

Purpose: Granular biometric telemetry, the most invasive

Data Collected Per Face Verification:

Copy
FaceCaptureSuccess {
    ambientLighting: Float,        // Environmental conditions
    attemptGroupUuid: String,      // Cross-session tracking
    attemptNumber: Int,            // Failed attempt count
    duration: Long,                // Time to capture
    illumination: Boolean,         // Flash usage
    imageCount: Int,               // Photos taken
    mode: String,                  // Active/passive liveness
    noFaceMovements: Int,          // Behavioral: how still you are
    phoneMoveCount: Int,           // Behavioral: device shake
    status: Enum,                  // Success/failure
    attemptGroupUuid: String       // Session correlation ID
}

Privacy Impact: Creates behavioral biometric profiles. It tracks how you hold your phone, your natural movements, and environmental context of every verification.


Network Infrastructure: Opaque and Unaccountable

The Mystery Endpoints

Endpoint Purpose Jurisdiction Risk
https://idp.430099.net:443 Identity Provider UNKNOWN CRITICAL
https://idp.430099.net:8443 IDP (alt port) UNKNOWN CRITICAL
https://prd.lkms.xantav.com/api License Management UNKNOWN HIGH

Domain Analysis

430099.net:

  • No WHOIS registration available
  • Possible IDEMIA internal infrastructure with masked ownership
  • The numbered domain suggests internal/test infrastructure promoted to production

xantav.com:

  • Registered via privacy protection
  • No corporate transparency
  • No identifiable ownership

Critical Concern: Core authentication infrastructure operates through opaque jurisdictional entities. Where does your biometric data actually go?

Permission Overreach

Permission Claimed Purpose Actual Surveillance Application
BLUETOOTH_ADVERTISE "mDL sharing" Makes device discoverable for Bluetooth beacon tracking
BLUETOOTH_SCAN "NFC alternative" Continuous environment scanning (retail tracking potential)
READ_PHONE_STATE "Security" IMEI collection creates hardware fingerprint
ACCESS_FINE_LOCATION "Security" Precise GPS of every ID verification event
ACCESS_COARSE_LOCATION "Backup location" Cell tower tracking for location history
CAMERA "ID scanning" Potential for photo capture beyond ID needs
WAKE_LOCK "Background processing" Prevents sleep during data transmission

The combination of biometric data, location tracking, phone state access, and Bluetooth advertising forms a surveillance toolkit rather than an ID verification system.


The Surveillance Flow

When you use AZ Mobile ID, here's what actually happens:

AZ Mobile ID Surveillance Flow

Your biometric data, behavioral patterns, environmental context, and device identifiers are distributed across:

  • Israel (AppsFlyer)
  • United States (Localytics, Firebase, Google)
  • Croatia (Microblink)
  • Unknown jurisdiction (IDEMIA backend)

Why This Matters

Post-Dobbs Privacy Crisis

The 2022 Dobbs decision eliminated federal abortion protections, creating urgent privacy concerns for health tracking. Location data from ID verification events could:

  • Reveal visits to reproductive health clinics
  • Track movement across state lines
  • Correlate with period tracking apps

The Pentagon Scandal

In 2025, news broke that Oura, a smart ring competitor, signed a contract with The Pentagon. The military's response was not to ban surveillance. It was to find more "secure" vendors. IDEMIA positions itself as that alternative, but this analysis suggests the surveillance infrastructure is equally invasive, just better hidden.

When you install AZ Mobile ID, you agree to terms you cannot read because they are encrypted. Your data is processed by companies you cannot identify. The infrastructure operates under jurisdictions with varying privacy protections.

This is surveillance infrastructure disguised as convenience, not informed consent.

What Should Happen Next

For Users

  1. Don't install government ID apps until transparency improves
  2. Request your data through Arizona's public records laws
  3. File complaints with the Arizona Attorney General's consumer protection division

For Policymakers

  1. Ban third-party SDKs in government mobile apps
  2. Require source code escrow and public security audits
  3. Mandate domestic-only data processing for biometric data
  4. Enforce transparency in subcontractor relationships

For Investigators

  1. FOIA requests for IDEMIA data sharing agreements
  2. Comparative analysis of other state Mobile ID implementations
  3. Network forensics to trace actual data flows

Technical Appendices

Appendix A: Decompilation Verification

Copy
# Verify our findings from the public APK:

# 1. Download APK
wget https://play.google.com/store/apps/details?id=com.idemia.mobileid.us.az

# 2. Extract strings
strings base.apk | grep -E "https?://" | sort -u > endpoints.txt

# 3. Decompile
jadx -d output/ base.apk

# 4. Count errors
grep -c "ERROR" jadx-log.txt  # 9033 errors

# 5. Search for tracking SDKs
grep -r "appsflyer\|localytics\|firebase" output/sources/ | wc -l

Appendix B: Evidence Archive

All evidence is reproducible from the public APK:

  • SHA256: d9c7a7fee8e43dc377547505c89d0f0551936ada3ddfada1734db9149e53d5f0
  • Version: 2.5.18 (Build 5236)
  • Package: com.idemia.mobileid.us.az

Investigative Justification

  • First Amendment: Investigative journalism (EFF v. DOJ)
  • Reverse Engineering Safe Harbor: 17 U.S.C. § 1201(f), interoperability research
  • Public Interest: Government surveillance transparency
  • No Live System Access: Only static analysis of publicly distributed APK

Responsible Disclosure Limits

  • ✅ Static binary analysis
  • ✅ Dynamic analysis on test device
  • ✅ Traffic analysis of own data
  • ❌ No backend system penetration
  • ❌ No other users' data access
  • ❌ No service disruption

Conclusion

Arizona's Mobile ID app is more than a digital convenience. It is a comprehensive surveillance platform.

  1. Collects behavioral biometrics (how you move, hold your phone, environmental context)
  2. Transmits data to opaque jurisdictions (430099.net, xantav.com)
  3. Uses military-grade anti-analysis (9,033 decompilation errors, native anti-Frida)
  4. Employs five separate tracking systems (AppsFlyer, Localytics, Firebase, Microblink, IDEMIA internal)
  5. Hides its functionality behind encryption and obfuscation

I am less concerned with whether this technology works. I am more concerned with whether a democratic society should accept government surveillance infrastructure this sophisticated operating with this little transparency.

Your digital identity should not come with a side of behavioral tracking.

References

  1. AAMVA Mobile Driver License Standard: https://www.aamva.org/topics/mobile-driver-license
  2. ISO/IEC 18013-5: International standard for mobile driving licenses
  3. IDEMIA Mobile ID: https://www.idemia-mobile-id.com/
  4. EFF Reverse Engineering FAQ: https://www.eff.org/issues/reverse-engineering
  5. EFF v. DOJ (2020): First Amendment protection for security research

This analysis was conducted for public interest journalism purposes. All findings are reproducible from publicly available sources.

Contact: For technical verification or media inquiries, contact james@getpulsyn.com