android_class_shadowing_sca.../README.md

37 lines
1.8 KiB
Markdown

# Android class shadowing scanner
Detect if an Android application is in a situation that may lead to class spoofing.
This is the code used to survey in-the-wild applications in chapter 4 of the thesis 'The Woes of Android Reverse Engineering: from Large Scale Analysis to Dynamic Deobfuscation', by Jean-Marie Mineau.
## Dependencies
You need [apktool](https://github.com/iBotPeaches/Apktool/commits/main/) to compare the smali bytecode of the applications.
Put `apktool.jar` in the same folder as `run.sh`.
To run apktool, you also need java installed (`openjdk version "17.0.17"` shoud work).
You need an [androzoo](https://androzoo.uni.lu/) API key and [latest_with-added-date.csv.gz](https://androzoo.uni.lu/static/lists/latest_with-added-date.csv.gz).
Put it in `./ZOO_KEY`, in the same folder as `run.sh`.
You need
You need `python3` installed (`3.13` should work).
## Running the Experiment
The experiment run in 4 steps.
The first one is run with `bash scan.sh` which download the applications from androzoo and check the classes definitions for shadowing.
Make sure to wait for all the workers to finish before running the next steps. This can take some time.
The next step is run with `bash digest.sh`, it will store the result in a sqlite database.
The next step is run with `bash check_smali.sh`, it will analyze the smali of the shadowing/shadowed methods in the applications that have them. Make sure to wait for all the workers to finish before running the next steps. This can take some time.
The last step analyze the results and is run with `bash datamine.sh`.
In the end, the data used in chapter 4 of the thesis is stored in `app-2023.out/out_data/`
## File Location
The default location of files can be changed by edition the variable in `setup.sh` (make sur the variable are the same time you run a script, e.g. avoid `mktemp` in `setup.sh`).