- Published on
Reading Note: Giving the User Control over Android Permissions
- Authors
- Name
- Lucas Xu
- @xianminx
Abstract
In this project, we investigate the possible options for users to restrict application permissions in a more fine-grained way and provide a proof of concept for a command-line tool that can remove permissions from applications before installation. We tested our tool with Android 2.2 (Froyo) on an emulated NexusS and a real Samsung Galaxy S GT-I9000.
Problem
Android OS provides zero-one solution, but users require more fine grained control over application permission:
- selectively accept permissions during installation process.
- revoke permission after application is installed.
Existing solution
- no perfect solution
- Google Play: permission management apps, like privacy blocker, PDroid Privacy Protection, etc.
- drawback: not very effective, crashes sometimes, some blocking apps require root
- os level trust for blocking application
Our solution
modify the app before installation
- pros: no more trust than the app itself
- cons:
- approach: reverse engineering
- Unzip apk package
- Remove permissions from AndroidManifest.xml
- Modify application code to make sure it doesn't crash because of permission issues
- Zip modified apk package
- Run on phone
- fads
Implementation
- apktool -> smali, debugging is impractical, not enough material
- dex2jar -> java, recompiling is difficult.
implement a class which extends the class whose function requires the permission we are removing.
does not work with final classes, such as LocationManager.
replace all API calls with a dummy static method call.
Resources
- stowaway
- permission map: android-permissions.org, tells which permissions each API call requires.