ROSAL
ROSAL (Reverse Obfuscated Standard Android Libraries) helps in the process of reverse-engineering Android Applications, mapping obfuscated classes from an APK with their plain text correspondence in the standard libraries (androidx,core,...) It helps recover actual names for classes like RecyclerView, LiveData, Fragment, CompatActivity, and so on, partly automating the manual process of reverse engineering and allowing for an easier Static Analysis of Android apps. The mapping is limited to the calsses from the standard libraries: it does not involve the mapping of the proprietary calsses of the app.
Fully deterministic, no euristic. No AI is involved in the process.
Install
From local repository
Clone the repository, then cd to its directory and:
python -m pip install .
Prerequisites & Dependencies
Internal dependencies to Androguard, loguru and tqdm should be automatically resolved when installing. If not, install manually.
The tool relies on the Android SDK in order to work. Install it in ~/Android/Sdk
https://developer.android.com/tools/releases/build-tools
https://developer.android.com/tools/releases/platform-tools
Java is also required. Install it if you already haven't.
Run
# (Optional) Define APK path
export APK=...
Basic usage:
rosal --apk "$APK" # or <path_to_apk>
The command runs the fetch, extraction, catalog, matching and mapping stages in sequence.
By default, intermediate files and matches.tiny are written to ~/rosal.
Use --work-dir to choose another directory:
rosal --apk "$APK" --work-dir ./anything_you_want
Files and Directories
markers_file = work_dir / "markers.txt"
library_dex_dir = work_dir / "library_dex"
target_dex_dir = work_dir / "target_dex"
features_file = work_dir / "features.ndjson"
catalog_file = work_dir / "catalog.json"
matches_file = work_dir / "matches.json"
mapping_file = work_dir / "matches.tiny"
Using the matches.tiny file
jadx-gui --mappings-path <path_to>/matches.tiny "$APK"
Metadata
Release files for rosal 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rosal-0.0.1.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rosal-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.5 kB
Release files / rosal-0.0.1.tar.gz
| Download URL | rosal-0.0.1.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ebe58d65e4ddf5b05f1215181091a68870b329220f5e66478728015bbdf18978
|
|
BLAKE2b-256 checksum How to use checksums |
848cf36d8924de9587e78694bcb4a4b1df017435bdeb4af62ca05c7ae0e4d197
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.13
|
Release files / rosal-0.0.1-py3-none-any.whl
| Download URL | rosal-0.0.1-py3-none-any.whl |
|---|---|
| Size | 17.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4558d11e8fb0ac78d689ce4c1c9f45b18952d5030d56407623d100ff30f35a3c
|
|
BLAKE2b-256 checksum How to use checksums |
d84b50416e24e6dd875cf1820df322cdd905f265083d0c54827ab1f7844c6b56
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.13
|