Reduce Android app reverse engineering wait times from minutes to seconds
This tool ends the situation where opening hundreds of MB-sized Android apps causes memory shortages and requires waiting tens of minutes for indexing. It treats the app as a database to query directly, extracting only the necessary code immediately. It is used by agents or mobile security researchers who need to quickly scan large numbers of apps.
Skipping full indexing
Existing decompilers spend a lot of time loading the entire structure into memory and creating an index before opening an app. This tool skips that process and treats the compiled file itself as a read-only database. It extracts only the required code relationships in milliseconds upon request. This allows global reference searches in a 352MB commercial app to finish in 1.79 seconds and specific class decompilation in 177ms. Memory usage is kept at 141MB, and no disk cache is used at all.
Performance differences in benchmarks
Testing four app sizes with 10 threads showed that global string reference searches are 62 to 302 times faster than the existing tool JADX. Single class decompilation shows a difference of 38 to 304 times. Memory usage is also 28 to 125 times lower, and while JADX stops due to memory shortage on the largest app, this tool completes all tasks. This provides the foundation for agents to analyze dozens to hundreds of apps simultaneously on low-spec machines.
Available commands
After installation, various tasks are performed using the droidasc command.
- Class extraction Finds the target class, reconstructs the minimum DEX in memory, and decompiles it.
- Global reference search Quickly finds string or method call locations in the entire app DEX.
- Disassembly Generates Smali code for a specific class using dadguard.
Relationship with the Rust version
This project is written in Python, but a 1:1 rewritten rust_ASC version in Rust is also maintained. The Rust version is 10 times faster, supports full APK decompilation, and processes a 383MB APK in 4 seconds with 16 threads. If you need to maintain a Python workflow, choose this repository; if you only need binary execution, choose the Rust version. Both versions are maintained in parallel, leaving the choice open depending on the user's integration method.
Pre-application checks
It is suitable for integration into Python-based workflows, and installation proceeds with pip install droidasc. Based on the Androguard project, it provides the basics of Android reverse engineering and DEX analysis. The README does not specify license information, so verification is required before use. While memory efficiency is excellent for large-scale app analysis, the Rust version should be considered if ultra-high performance is needed.