├── README.md └── CHANGELOG.md /README.md: -------------------------------------------------------------------------------- 1 |

2 | DonkeyGuard 3 |

4 | ## What is DonkeyGuard? 5 | DonkeyGuard is an app, similar to PDroid2.0, PDroid and other applications which are known at this sector. I developed DonkeyGuard from scratch with all my experience I've made with PDroid. DonkeyGuard allows you a fine-grained tuning of access to your private data. It currently supports 41 restrictions which can be applied for every application. Specifically, it is a Privacy service provider which implements a set of modifications to the Android Framework to allow you to interact with applications which are trying to access your private data. 6 | 7 | ## Supported Features 8 | DonkeyGuard allows blocking access for any installed application on your phone to the following data separately: 9 | * device_id 10 | * phone_number 11 | * sim_serial_number 12 | * subscriber_id 13 | * incoming_call_number 14 | * outgoing_call_number 15 | * gps_and_network_location 16 | * impi_impu 17 | * cell_info 18 | * accounts 19 | * accounts_credentials 20 | * read_contacts 21 | * read_call_log 22 | * call_phone 23 | * read_calendar 24 | * receive_sms 25 | * send_sms 26 | * receive_mms 27 | * send_mms - not implemented in alpha 28 | * record_audio 29 | * use_camera 30 | * read_bookmarks 31 | * wifi_info 32 | * switch_mobile_network_state 33 | * switch_wifi_state 34 | * sim_info 35 | * network_info 36 | * android_id 37 | * access_media 38 | * read_external_storage - not implemented in alpha 39 | * write_calendar 40 | * write_call_log 41 | * write_contacts 42 | * write_bookmarks 43 | * write_external_storage - not implemented in alpha 44 | * account_authenticator 45 | * read_sms 46 | * write_sms 47 | * read_mms 48 | * write_mms 49 | * network_state 50 | 51 | ## Installation Instructions 52 | 1. Download the application (category releases) 53 | 2. Install it 54 | 3. Activate the application inside the XPosedFramework 55 | 4. Reboot your device 56 | 5. Now you can use DonkeyGuard 57 | 58 | ## Translation 59 | If you want to translate the application, please visit [GetLocalization](http://www.getlocalization.com/DonkeyGuard/). I will sync these files every release. 60 | 61 | ## How can I report Bugs or feature requests? 62 | Simply use the features of github to report bugs or request new features. 63 | 64 | ## FAQ 65 | ### My device doesn't boot any more or stucks in bootloop, what can I do? 66 | Deactivate the Xposed-Framework during the boot (press volume up/down several times; the device vibrates everytime the button gets touched). If that won't work for you, please flash the RescueDonkey.zip from this repo (branch rescue) or download it from [XDA](http://forum.xda-developers.com/showpost.php?p=54471912&postcount=1). The flashable RescueDonkey.zip will be copied at the first start of the application to your sdcard directory. Simply boot into the recovery mode and flash it. Please don't forget to take a snapshot of the logs (logcat) and post them on XDA. 67 | 68 | ### How can I provide logs during a bootloop? 69 | First, you need to install ADB. If you don't know what it is, simply follow [this](http://lifehacker.com/the-easiest-way-to-install-androids-adb-and-fastboot-to-1586992378) great guide to install it (it is pretty simple; only ~1 minute of your time is required for the installation). If adb is installed, simply use the command (cmd-line/terminal): 70 | 71 | adb logcat -d > log.txt 72 | 73 | to dump the logs. Run this command during the bootloop (it should at least bootloop one time before you dump the logs) and send the log.txt to me or post an issue at my github. 74 | 75 | ### The internet restriction doesn't work, what can I do? 76 | You need to install the [Cydia Substrate](http://www.cydiasubstrate.com) Framework for Android. Simply download the Application from the PlayStore (or website) and install it. Then do following: 77 | 78 | * Open the Application 79 | * Tap the button "Link Substrate Files" 80 | * Restart your device 81 | 82 | Please make sure that DonkeyGuard is activated inside the XposedFramework, otherwise it won't work. 83 | 84 | ### Some application(s) force close after installing DonkeyGuard, what can I do? 85 | First make sure you're running the latest version of DonkeyGuard. If you're on the latest version and the application(s) doesn't stop to force close, please use the built-in feature "Report an error" in following steps: 86 | * Wait until the problem occurs again (e.g. Force Close of an application) 87 | * Open DonkeyGuard and swipe from the right to left to open the preferences 88 | * In preference category "Logs" you can find the option "Report An Error"; simply tap, describe your problem (important!) and send me the logs. 89 | 90 | If you're able to fetch logs (from logcat) by yourself, plase do not hesitate to send them to me with a little description about the possible bug. 91 | 92 | ### I can't delete my settings from DonkeyGuard, what can I do? 93 | Until now, DonkeyGuard doesn't support to delete the settings you've made. You need to delete them manually by removing following files: 94 | 95 | * /data/system/settings.db 96 | * /data/system/settings.db-shm 97 | * /data/system/settings.db-wal 98 | 99 | Afterwards you need to reboot your device. 100 | 101 | ### How can I provide logs which may help you to fix the reported bug? 102 | Since v0.5.53, a built-in error report exists. If you don't know how to fetch logs, please use this feature directly after your reported bug occurs. If you want to provide (possibly) more information, you can use the application [CatLog](https://play.google.com/store/apps/details?id=com.nolanlawson.logcat) to fetch logs. Afterwards please open an issue at my github or post them on XDA. Furthermore: please do not forget to describe your problem. 103 | 104 | ## Feature Descriptions 105 | ### Deny Modes 106 | In the preferences you can find two options: 107 | * Softcoded Default Deny Mode 108 | * Hardcoded Default Deny Mode 109 | 110 | Both of the "settings" are melt together with the architecture of the application. The modes protect you against IPC failures or database error during the request of personal data from an application. To understand how it works, just take a look at the figure below (sequence diagram; This diagram is not designed for software architectures, it is as simple as possible). 111 | 112 | ![](http://www.bilderload.com/bild/349154/denymoderedcircleAJ3VY.png) 113 | 114 | The diagram shows the sequence of the access to private data on your phone. The call of the method where the application normally gets the private data from will be forwarded to the **SettingsServer**. The server identifies the process with the assistance of the kernel and asks the **DatabaseManager** to get the user defined settings for the calling process. The Manager fetches the data (if needed) from the database and returns it to the **SettingsServer**. If something went wrong with the communication between the **SettingsServer**, **DatabaseManager** or **Database** (red circle on the right; e.g. due to a broken database), the **SettingsServer** doesn't know if the application is allowed to access your private data or not. For this reason the Softcoded Default Deny mode will trigger and decide whether the application will get: 115 | 116 | * The real data (allow) 117 | * Fake randomized data (random) 118 | * Empty data (empty) 119 | 120 | You can choose this behavior inside the preference fragment. If the Softcoded Default Deny mode or the IPC with the **SettingsServer** fails, the Hardcoded Default Deny Mode will trigger. This mode is "hardcoded" and can't be bypassed. It has the same behavior like the Softcoded Default Deny mode, but can not be modified by the user. In future I will provide 3 versions of the application where the Hardcoded Default Deny mode has following values: 121 | 122 | * Real (allow) 123 | * Random (randomized generated fake data) 124 | * Empty (empty values) 125 | 126 | So you have to decide which behavior you prefer and download the suitable version. 127 | 128 | ### Default Privacy Mode 129 | The default privacy mode is a framework feature which gives you the possibility to decide what happens if an application tries to access your private data, but no settings for the requested application have been set. The feature supports following values: 130 | 131 | * Allow - The application will get access to the requested permission/data) 132 | * Random - The application will get randomized generated fake data 133 | * Empty - The application will get empty values 134 | 135 | It is not recommended to use Random or Empty, because it could be that system applications won't work as expected anymore. 136 | 137 | 138 | ## Preview 139 | ![](http://www.bilderload.com/bild/348344/screenshot20140729093144UO8BJ.png) 140 | ![](http://www.bilderload.com/bild/348345/screenshot20140729093210D9G30.png) ![](http://www.bilderload.com/bild/348346/screenshot20140729093216GY28T.png) ![](http://www.bilderload.com/bild/348347/screenshot201407290932276TD10.png) ![](http://www.bilderload.com/bild/348348/screenshot20140729093258VVWU5.png) ![](http://www.bilderload.com/bild/348349/screenshot20140729093310VT431.png) ![](http://www.bilderload.com/bild/348350/screenshot201407290933225VFFJ.png) 141 | 142 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## Changelog 2 | ### v0.56.67 3 | Bug-Fixes: 4 | * Fixed repetitive on-demand prompts 5 | * Fixed on-demand prompts for system and kernel 6 | * Internal restructuring of process parsing 7 | * Fixed bugs reported through the in-built error reporter 8 | 9 | Features: 10 | * Added and updates languages 11 | 12 | - -- 13 | 14 | ### v0.56.66 15 | Bug-Fixes: 16 | * Fixed UI-Glitches 17 | * Fixed all reported bugs 18 | 19 | Features: 20 | * Added the possibility to one-click remove all privacy settings 21 | * Restructured parts of the preferences categories 22 | * Updated translations 23 | * Added language: Chinese, thx @surwscl, @aqinny 24 | 25 | - -- 26 | 27 | ### v0.56.65 28 | Bug-Fixes: 29 | * Fixed errors reported through the built-in error report 30 | * Several bug fixes 31 | 32 | Features: 33 | * ... 34 | 35 | - -- 36 | 37 | ### v0.56.64 38 | Bug-Fixes: 39 | * Fixed internet restriction 40 | * Several layout improvements 41 | 42 | Features: 43 | * ... 44 | 45 | - -- 46 | 47 | ### v0.5.59-63 48 | Bug-Fixes: 49 | * Fixed Gui-Glitches 50 | * Layout improvements 51 | * Fixed initial restriction count, triggered by the on demand dialog 52 | * Fixed contact picking bug 53 | * Performance improvements 54 | * Reduced battery usage 55 | * Fixed FC on ICS-Devices (API 15) 56 | * Several Bug-fixes reported through the built-in error report 57 | 58 | Features: 59 | * Implemented pro feature in-app shop where you can buy additional pro features 60 | * Revamped filter logic 61 | 62 | - -- 63 | 64 | ### v0.5.58 65 | Bug-Fixes: 66 | * Fixed Gui-Glitches within the settings activity 67 | 68 | Features: 69 | * Revamped Read/Write external storage permission 70 | * Added language: Spanish, thx @[dukelc](http://www.getlocalization.com/user/dukelc) 71 | * Added language: Turkish, thx @[lastdark](http://www.getlocalization.com/user/lastdark) 72 | * Added language: Slovak, thx @[Ocab19](http://www.getlocalization.com/user/Ocab19) 73 | 74 | - -- 75 | 76 | ### v0.5.57 77 | Bug-Fixes: 78 | * Temporary disabled read/write external storage permission, because of heavy battery drainage on some devices 79 | 80 | Features: 81 | * DonkeyGuard Location Picker is now available at [PlayStore](https://play.google.com/store/apps/details?id=eu.donkeyguard.locationpicker) 82 | 83 | - -- 84 | 85 | ### v0.5.56 86 | Bug-Fixes: 87 | * Fixed possible FC with API 15 (ICS) 88 | * Fixed UI-Instructor glitches 89 | 90 | Features: 91 | * Minor internal refactoring to support Add-Ons 92 | * Added compatibility with Location Picker Addon 93 | 94 | - -- 95 | 96 | ### v0.5.55 97 | Bug-Fixes: 98 | * Fixed unsupported API 15 99 | * Minor layout improvements 100 | * Added the ability to hide a hint dialog 101 | * Improved dialog layouts 102 | * Improved hints 103 | 104 | Features: 105 | * Enabled LOG feature for non-pro user (with limited information) 106 | 107 | - -- 108 | 109 | ### v0.5.54 110 | Bug-Fixes: 111 | * Fixed internet-restriction bug (FC due to multithreading bug) 112 | 113 | Features: 114 | * Updated all languages 115 | * Pre-Prepared for location-picker plugin 116 | 117 | - -- 118 | 119 | ### v0.5.53 120 | Bug-Fixes: 121 | * Fixed possible Layout-Bug for LG G3 122 | * Fixed unnecessary database synchronization 123 | 124 | Features: 125 | * Implemented built-in error report 126 | 127 | - -- 128 | 129 | ### v0.5.52 130 | Bug-Fixes: 131 | * Minor layout improvements 132 | 133 | Features: 134 | * Implemented a "batch-switch" which enables the interception mode (on demand dialog) for all permissions of the application. 135 | * Updated translations 136 | 137 | - -- 138 | 139 | ### v0.5.51 140 | Bug-Fixes: 141 | * Enhanced internet restriction 142 | * Reduced memory usage 143 | * Added dialog for cydia support information 144 | * Enhanced database access (query) speed 145 | * Fixed missing translations 146 | * Enhanced some error dialogs 147 | * Fixed device crashing because of network state request 148 | * Fixed process parsing 149 | * Massive internal refactoring & restructuring 150 | 151 | Features: 152 | * Prepared for log-feature (not accessible until now, because it will move to pro-version) 153 | * Added feature to enable the interception mode for every new installed application 154 | * Updated language: Romanian, thanks @[flashxml](http://www.getlocalization.com/user/flashxml) 155 | * Updated language: Portuguese (Brazil) -> thanks @[xdxita](http://www.getlocalization.com/user/xdxita) 156 | * Updated language: Japanese -> thanks @[WedyDQ10](http://www.getlocalization.com/user/WedyDQ10) & @[1341sakuya](http://www.getlocalization.com/user/1341sakuya) 157 | * Updated language: French -> @[therealcorwin](http://www.getlocalization.com/user/therealcorwin) 158 | 159 | - -- 160 | 161 | ### v0.5.50 162 | Bug-Fixes: 163 | * Fixed filter manager rules 164 | 165 | Features: 166 | * Enhanced Internet restriction 167 | * Enabled on demand for internet restriction 168 | * Added language: Romanian, thanks @[flashxml](http://www.getlocalization.com/user/flashxml) 169 | 170 | - -- 171 | 172 | ### v0.5.49 173 | Bug-Fixes: 174 | * Enhanced battery usage 175 | 176 | Features: 177 | * Added INTERNET restriction. It only works if you install the [Cydia-Framework](http://www.cydiasubstrate.com/). Known Issue: An existing connection (with an connection-based protocol) won't be disconnected by the rule, just reestablishing will be blocked ever after. So if you restrict Internet for an application, force close it or restart your device to be sure that it can't access the internet anymore. 178 | * Added the possibility to save the decision from interception dialog to database. [More details](https://github.com/CollegeDev/DonkeyGuard/issues/7). Simply check the option "Don't ask again" and your decision will be saved. 179 | * Updated language: Japanese -> thanks @[WedyDQ10](http://www.getlocalization.com/user/WedyDQ10) 180 | * Updated language: Portuguese (Brazil) -> thanks @[xdxita](http://www.getlocalization.com/user/xdxita) 181 | 182 | 183 | - -- 184 | 185 | ### v0.5.48 186 | Bug-Fixes: 187 | * Revamped GPS restriction 188 | * Enhanced battery usage (fixed bug where device isn't able deep sleep) 189 | * Added support for HTC devices (HTC has a lot of own stuff inside the framework) 190 | * Prepared for internet restriction 191 | 192 | Features: 193 | * Added language: Japanese -> thanks @WedyDQ10 194 | * Added language: Hebrew -> thanks @BeBest 195 | * Added language: Portuguese (Brazil) -> thanks @xdxita 196 | 197 | - -- 198 | 199 | ### v0.5.47 200 | Bug-Fixes: 201 | * Fixed GUI glitches within the settings screen 202 | 203 | Features: 204 | * Implemented a filter-manager 205 | 206 | - -- 207 | 208 | ### v0.5.45-46 209 | Bug-Fixes: 210 | * Fixed GPS Bug 211 | * Several cleanups 212 | 213 | Features: 214 | * ... 215 | 216 | - -- 217 | 218 | ### v0.5.44 219 | Bug-Fixes: 220 | * Some refactoring for new features 221 | 222 | Features: 223 | * Prepared for auto-log fetching feature -> added Permission android.permission.READ_LOGS (needed to enable better log support) 224 | * Implemented (beta) the UI-Instructor. Activate it with preference UI-Instructor to learn more about the UI. 225 | * Added Icon to indicate internet access. (Please activate the UI-Instructor to see how it works). 226 | 227 | - -- 228 | 229 | ### v0.5.43 230 | Bug-Fixes: 231 | * Fixed XposedFramework validation 232 | 233 | Features: 234 | * ... 235 | 236 | - -- 237 | 238 | ### v0.5.42 239 | Bug-Fixes: 240 | * ... 241 | 242 | Features: 243 | * Enhanced checking for activation in XposedFramework. 244 | * Prepared for UI-Instructor 245 | 246 | - -- 247 | 248 | ### v0.5.41 249 | Bug-Fixes: 250 | * Fixed wrong resources usage for some dialogs 251 | * Refactoring for new features 252 | 253 | Features: 254 | * ... 255 | 256 | - -- 257 | 258 | ### v0.5.40 259 | Bug-Fixes: 260 | * Fixed FC of application while trying to enter in application search-mode (wrong resoure linking) 261 | * Fixed style of overflow-button in settings menu 262 | * Pre-preparing for native support 263 | * Enhanced the copying procedure for the flashable Rescue-Zip (RescueDonkey.zip) 264 | * Fixed FC at first start of the application, because of some resource conflicts 265 | 266 | Features: 267 | * ... 268 | 269 | - -- 270 | 271 | ### v0.5.39 272 | Bug-Fixes: 273 | * Reduced memory-cache to a maximum size of 5 MB for devices with small memory (512mb) 274 | * Fixed EditText input flags which causes that the lat/lon input won't accept "." and "-" 275 | * Enlarged Heap-Size on devices with enough memory 276 | * Reduced memory usage of the application 277 | 278 | Features: 279 | * ... 280 | 281 | - -- 282 | 283 | ### v0.5.38 284 | Bug-Fixes: 285 | * ... 286 | 287 | Features: 288 | * Added changelog within the application (take a look at preference, category about). 289 | * Added applicaton version within the application (take a look at preference, category about). 290 | * Added the possibility to set all settings to: REAL, EMPTY, RANDOM within the settings activity. 291 | 292 | - -- 293 | 294 | ### v0.5.37 295 | _Bug-Fixes:_ 296 | * Flush interception cache if the interception-mode changed 297 | * Prevent that system_server can show interception dialogs to avoid freezing on some ROMs (this will change in future due to native support) 298 | * Fixed NullPointerException during the force-close of the on-demand dialog 299 | 300 | _Features:_ 301 | * Implemented toast messages for unimplemented features 302 | 303 | - -- 304 | 305 | ### v0.5.36 306 | _Bug-Fixes:_ 307 | * Fixed parsing the default-deny-mode and default-privacy-mode at startup 308 | * Internal code improvements (a lot of refactoring) 309 | 310 | _Features:_ 311 | * Enabled application search (permission and rating is not enabled yet). 312 | 313 | - -- 314 | 315 | ### v0.5.35 316 | _Bug-Fixes:_ 317 | - Fixed java.lang.NoSuchMethodError at ActivityManagerService for CM-11 318 | 319 | _Features:_ 320 | - ... 321 | 322 | - -- 323 | 324 | 325 | --------------------------------------------------------------------------------