mobile-resilience
Installation
SKILL.md
Mobile Resilience Against Reverse Engineering
What Is Broken and Why
Resilience controls protect app logic, keys, and business rules from reverse engineering and tampering. Root/jailbreak detection, anti-debugging, and integrity checks create defense-in-depth. Without them, attackers can attach Frida to patch auth checks, repack APKs with modified logic, or extract keys from memory at leisure. Most basic resilience checks are bypassable individually — the value comes from layered controls that raise the cost of attack. Root detection that relies on a single file check (/system/app/Superuser.apk) is trivially bypassed; multi-vector detection that checks file system, build properties, and system call behavior is significantly harder.
Key Signals
get-task-allowentitlement present in iOS app (allows debugger attachment)- Debug symbols not stripped in release build:
nm libapp.so | grep "T _"shows function names - Single-vector root/jailbreak detection: only checks for
/system/xbin/suor Cydia URL scheme - No anti-debugging:
ptrace(PT_DENY_ATTACH, 0, 0, 0)/sysctlchecks absent in iOS binary - Debug build shipped to production:
BuildConfig.DEBUG == true,android:debuggable="true" - No signature/integrity check — APK can be repackaged and re-signed without detection
- Frida/objection successfully attaches without app detecting or exiting
- ProGuard/R8 not applied: decompiled class names match original Java package structure
- Emulator detection absent: app runs on AVD/Simulator with full functionality