├── .gitignore ├── LICENSE ├── README.md ├── app ├── build.gradle ├── libs │ └── android-viewbadger.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── geeksonsecurity │ │ └── android │ │ └── overlayprotector │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── geeksonsecurity │ │ └── android │ │ └── overlayprotector │ │ ├── AppListChangedReceiver.java │ │ ├── MainActivity.java │ │ ├── MonitorAccessibilityService.java │ │ ├── MyApplication.java │ │ ├── NavigationDrawerFragment.java │ │ ├── adapter │ │ ├── DetectedOverlayAdapter.java │ │ ├── SuspectedAppsAdapter.java │ │ └── WhiteEntryAdapter.java │ │ ├── database │ │ ├── DatabaseHelper.java │ │ └── DatabaseUtils.java │ │ ├── domain │ │ ├── ConcurrentArrayList.java │ │ ├── DetectedOverlay.java │ │ ├── DetectionEngine.java │ │ ├── EventCounter.java │ │ ├── OverlayState.java │ │ ├── ProcessUpdateEntry.java │ │ ├── ServiceCommunication.java │ │ ├── Settings.java │ │ ├── SuspectedApp.java │ │ └── WhiteEntry.java │ │ ├── service │ │ ├── AbstractDetectionEngine.java │ │ ├── AdvancedDetectionService.java │ │ ├── BaseDetectionEngine.java │ │ ├── IOverlayNotifyService.java │ │ └── ProcessHelper.java │ │ ├── tasks │ │ ├── IServiceStatusProcessor.java │ │ └── ServiceStatusTask.java │ │ ├── view │ │ ├── DetectedOverlayFragment.java │ │ ├── HomeFragment.java │ │ ├── SettingsFragment.java │ │ ├── SuspectedAppsFragment.java │ │ └── WhiteListFragment.java │ │ └── wizard │ │ ├── ConfigWizardActivity.java │ │ ├── ConfigWizardModel.java │ │ ├── WizardInfoPage.java │ │ └── WizardInfoPageFragment.java │ └── res │ ├── drawable-hdpi │ ├── apptheme_btn_check_off_disabled_focused_holo_dark.png │ ├── apptheme_btn_check_off_disabled_holo_dark.png │ ├── apptheme_btn_check_off_focused_holo_dark.png │ ├── apptheme_btn_check_off_holo_dark.png │ ├── apptheme_btn_check_off_pressed_holo_dark.png │ ├── apptheme_btn_check_on_disabled_focused_holo_dark.png │ ├── apptheme_btn_check_on_disabled_holo_dark.png │ ├── apptheme_btn_check_on_focused_holo_dark.png │ ├── apptheme_btn_check_on_holo_dark.png │ ├── apptheme_btn_check_on_pressed_holo_dark.png │ ├── apptheme_btn_default_disabled_focused_holo_dark.9.png │ ├── apptheme_btn_default_disabled_holo_dark.9.png │ ├── apptheme_btn_default_focused_holo_dark.9.png │ ├── apptheme_btn_default_normal_holo_dark.9.png │ ├── apptheme_btn_default_pressed_holo_dark.9.png │ ├── apptheme_btn_radio_off_disabled_focused_holo_dark.png │ ├── apptheme_btn_radio_off_disabled_holo_dark.png │ ├── apptheme_btn_radio_off_focused_holo_dark.png │ ├── apptheme_btn_radio_off_holo_dark.png │ ├── apptheme_btn_radio_off_pressed_holo_dark.png │ ├── apptheme_btn_radio_on_disabled_focused_holo_dark.png │ ├── apptheme_btn_radio_on_disabled_holo_dark.png │ ├── apptheme_btn_radio_on_focused_holo_dark.png │ ├── apptheme_btn_radio_on_holo_dark.png │ ├── apptheme_btn_radio_on_pressed_holo_dark.png │ ├── apptheme_fastscroll_thumb_default_holo.png │ ├── apptheme_fastscroll_thumb_pressed_holo.png │ ├── apptheme_ic_navigation_drawer.png │ ├── apptheme_list_activated_holo.9.png │ ├── apptheme_list_focused_holo.9.png │ ├── apptheme_list_longpressed_holo.9.png │ ├── apptheme_list_pressed_holo_dark.9.png │ ├── apptheme_list_selector_disabled_holo_dark.9.png │ ├── apptheme_textfield_activated_holo_dark.9.png │ ├── apptheme_textfield_default_holo_dark.9.png │ ├── apptheme_textfield_disabled_focused_holo_dark.9.png │ ├── apptheme_textfield_disabled_holo_dark.9.png │ ├── apptheme_textfield_focused_holo_dark.9.png │ ├── drawer_shadow.9.png │ ├── ic_action_new.png │ ├── ic_action_refresh.png │ ├── ic_action_save.png │ ├── ic_actionbar.png │ ├── ic_delete.png │ ├── ic_launcher.png │ ├── ic_launcher_circle.png │ ├── ic_launcher_transparent.png │ ├── ic_notification_small.png │ ├── ic_question_icon.png │ ├── ic_system.png │ └── ic_user.png │ ├── drawable-mdpi │ ├── apptheme_btn_check_off_disabled_focused_holo_dark.png │ ├── apptheme_btn_check_off_disabled_holo_dark.png │ ├── apptheme_btn_check_off_focused_holo_dark.png │ ├── apptheme_btn_check_off_holo_dark.png │ ├── apptheme_btn_check_off_pressed_holo_dark.png │ ├── apptheme_btn_check_on_disabled_focused_holo_dark.png │ ├── apptheme_btn_check_on_disabled_holo_dark.png │ ├── apptheme_btn_check_on_focused_holo_dark.png │ ├── apptheme_btn_check_on_holo_dark.png │ ├── apptheme_btn_check_on_pressed_holo_dark.png │ ├── apptheme_btn_default_disabled_focused_holo_dark.9.png │ ├── apptheme_btn_default_disabled_holo_dark.9.png │ ├── apptheme_btn_default_focused_holo_dark.9.png │ ├── apptheme_btn_default_normal_holo_dark.9.png │ ├── apptheme_btn_default_pressed_holo_dark.9.png │ ├── apptheme_btn_radio_off_disabled_focused_holo_dark.png │ ├── apptheme_btn_radio_off_disabled_holo_dark.png │ ├── apptheme_btn_radio_off_focused_holo_dark.png │ ├── apptheme_btn_radio_off_holo_dark.png │ ├── apptheme_btn_radio_off_pressed_holo_dark.png │ ├── apptheme_btn_radio_on_disabled_focused_holo_dark.png │ ├── apptheme_btn_radio_on_disabled_holo_dark.png │ ├── apptheme_btn_radio_on_focused_holo_dark.png │ ├── apptheme_btn_radio_on_holo_dark.png │ ├── apptheme_btn_radio_on_pressed_holo_dark.png │ ├── apptheme_fastscroll_thumb_default_holo.png │ ├── apptheme_fastscroll_thumb_pressed_holo.png │ ├── apptheme_ic_navigation_drawer.png │ ├── apptheme_list_activated_holo.9.png │ ├── apptheme_list_focused_holo.9.png │ ├── apptheme_list_longpressed_holo.9.png │ ├── apptheme_list_pressed_holo_dark.9.png │ ├── apptheme_list_selector_disabled_holo_dark.9.png │ ├── apptheme_textfield_activated_holo_dark.9.png │ ├── apptheme_textfield_default_holo_dark.9.png │ ├── apptheme_textfield_disabled_focused_holo_dark.9.png │ ├── apptheme_textfield_disabled_holo_dark.9.png │ ├── apptheme_textfield_focused_holo_dark.9.png │ ├── drawer_shadow.9.png │ ├── ic_action_new.png │ ├── ic_action_refresh.png │ ├── ic_action_save.png │ ├── ic_actionbar.png │ ├── ic_delete.png │ ├── ic_launcher.png │ ├── ic_launcher_circle.png │ ├── ic_launcher_transparent.png │ ├── ic_notification_small.png │ ├── ic_question_icon.png │ ├── ic_system.png │ └── ic_user.png │ ├── drawable-xhdpi │ ├── apptheme_btn_check_off_disabled_focused_holo_dark.png │ ├── apptheme_btn_check_off_disabled_holo_dark.png │ ├── apptheme_btn_check_off_focused_holo_dark.png │ ├── apptheme_btn_check_off_holo_dark.png │ ├── apptheme_btn_check_off_pressed_holo_dark.png │ ├── apptheme_btn_check_on_disabled_focused_holo_dark.png │ ├── apptheme_btn_check_on_disabled_holo_dark.png │ ├── apptheme_btn_check_on_focused_holo_dark.png │ ├── apptheme_btn_check_on_holo_dark.png │ ├── apptheme_btn_check_on_pressed_holo_dark.png │ ├── apptheme_btn_default_disabled_focused_holo_dark.9.png │ ├── apptheme_btn_default_disabled_holo_dark.9.png │ ├── apptheme_btn_default_focused_holo_dark.9.png │ ├── apptheme_btn_default_normal_holo_dark.9.png │ ├── apptheme_btn_default_pressed_holo_dark.9.png │ ├── apptheme_btn_radio_off_disabled_focused_holo_dark.png │ ├── apptheme_btn_radio_off_disabled_holo_dark.png │ ├── apptheme_btn_radio_off_focused_holo_dark.png │ ├── apptheme_btn_radio_off_holo_dark.png │ ├── apptheme_btn_radio_off_pressed_holo_dark.png │ ├── apptheme_btn_radio_on_disabled_focused_holo_dark.png │ ├── apptheme_btn_radio_on_disabled_holo_dark.png │ ├── apptheme_btn_radio_on_focused_holo_dark.png │ ├── apptheme_btn_radio_on_holo_dark.png │ ├── apptheme_btn_radio_on_pressed_holo_dark.png │ ├── apptheme_fastscroll_thumb_default_holo.png │ ├── apptheme_fastscroll_thumb_pressed_holo.png │ ├── apptheme_ic_navigation_drawer.png │ ├── apptheme_list_activated_holo.9.png │ ├── apptheme_list_focused_holo.9.png │ ├── apptheme_list_longpressed_holo.9.png │ ├── apptheme_list_pressed_holo_dark.9.png │ ├── apptheme_list_selector_disabled_holo_dark.9.png │ ├── apptheme_textfield_activated_holo_dark.9.png │ ├── apptheme_textfield_default_holo_dark.9.png │ ├── apptheme_textfield_disabled_focused_holo_dark.9.png │ ├── apptheme_textfield_disabled_holo_dark.9.png │ ├── apptheme_textfield_focused_holo_dark.9.png │ ├── drawer_shadow.9.png │ ├── ic_action_new.png │ ├── ic_action_refresh.png │ ├── ic_action_save.png │ ├── ic_actionbar.png │ ├── ic_delete.png │ ├── ic_launcher.png │ ├── ic_launcher_circle.png │ ├── ic_launcher_transparent.png │ ├── ic_notification_small.png │ ├── ic_question_icon.png │ ├── ic_system.png │ └── ic_user.png │ ├── drawable-xxhdpi │ ├── apptheme_btn_check_off_disabled_focused_holo_dark.png │ ├── apptheme_btn_check_off_disabled_holo_dark.png │ ├── apptheme_btn_check_off_focused_holo_dark.png │ ├── apptheme_btn_check_off_holo_dark.png │ ├── apptheme_btn_check_off_pressed_holo_dark.png │ ├── apptheme_btn_check_on_disabled_focused_holo_dark.png │ ├── apptheme_btn_check_on_disabled_holo_dark.png │ ├── apptheme_btn_check_on_focused_holo_dark.png │ ├── apptheme_btn_check_on_holo_dark.png │ ├── apptheme_btn_check_on_pressed_holo_dark.png │ ├── apptheme_btn_default_disabled_focused_holo_dark.9.png │ ├── apptheme_btn_default_disabled_holo_dark.9.png │ ├── apptheme_btn_default_focused_holo_dark.9.png │ ├── apptheme_btn_default_normal_holo_dark.9.png │ ├── apptheme_btn_default_pressed_holo_dark.9.png │ ├── apptheme_btn_radio_off_disabled_focused_holo_dark.png │ ├── apptheme_btn_radio_off_disabled_holo_dark.png │ ├── apptheme_btn_radio_off_focused_holo_dark.png │ ├── apptheme_btn_radio_off_holo_dark.png │ ├── apptheme_btn_radio_off_pressed_holo_dark.png │ ├── apptheme_btn_radio_on_disabled_focused_holo_dark.png │ ├── apptheme_btn_radio_on_disabled_holo_dark.png │ ├── apptheme_btn_radio_on_focused_holo_dark.png │ ├── apptheme_btn_radio_on_holo_dark.png │ ├── apptheme_btn_radio_on_pressed_holo_dark.png │ ├── apptheme_fastscroll_thumb_default_holo.png │ ├── apptheme_fastscroll_thumb_pressed_holo.png │ ├── apptheme_ic_navigation_drawer.png │ ├── apptheme_list_activated_holo.9.png │ ├── apptheme_list_focused_holo.9.png │ ├── apptheme_list_longpressed_holo.9.png │ ├── apptheme_list_pressed_holo_dark.9.png │ ├── apptheme_list_selector_disabled_holo_dark.9.png │ ├── apptheme_textfield_activated_holo_dark.9.png │ ├── apptheme_textfield_default_holo_dark.9.png │ ├── apptheme_textfield_disabled_focused_holo_dark.9.png │ ├── apptheme_textfield_disabled_holo_dark.9.png │ ├── apptheme_textfield_focused_holo_dark.9.png │ ├── drawer_shadow.9.png │ ├── ic_action_new.png │ ├── ic_action_refresh.png │ ├── ic_action_save.png │ ├── ic_actionbar.png │ ├── ic_delete.png │ ├── ic_launcher.png │ ├── ic_launcher_circle.png │ ├── ic_launcher_transparent.png │ ├── ic_notification_small.png │ ├── ic_question_icon.png │ ├── ic_system.png │ └── ic_user.png │ ├── drawable-xxxhdpi │ ├── ic_actionbar.png │ ├── ic_launcher.png │ ├── ic_launcher_circle.png │ ├── ic_launcher_transparent.png │ └── ic_notification_small.png │ ├── drawable │ ├── apptheme_activated_background_holo_dark.xml │ ├── apptheme_btn_check_holo_dark.xml │ ├── apptheme_btn_default_holo_dark.xml │ ├── apptheme_btn_radio_holo_dark.xml │ ├── apptheme_edit_text_holo_dark.xml │ ├── apptheme_fastscroll_thumb_holo.xml │ ├── apptheme_item_background_holo_dark.xml │ ├── apptheme_list_selector_background_transition_holo_dark.xml │ ├── apptheme_list_selector_holo_dark.xml │ ├── configstep1.png │ ├── configstep2.png │ ├── configstep3.png │ ├── drawer_list_selector.xml │ ├── eventborder.xml │ ├── overlay_back.xml │ └── rectangle.xml │ ├── layout │ ├── activity_main.xml │ ├── add_whitelist_dialog.xml │ ├── configwizard.xml │ ├── detectedoverlay_item.xml │ ├── fragment_detectedoverlay_grid.xml │ ├── fragment_detectedoverlay_list.xml │ ├── fragment_main.xml │ ├── fragment_navigation_drawer.xml │ ├── fragment_settings.xml │ ├── fragment_suspectedapps_grid.xml │ ├── fragment_suspectedapps_list.xml │ ├── fragment_whitelist_grid.xml │ ├── fragment_whitelist_list.xml │ ├── logcat_dialog.xml │ ├── overlaydetected.xml │ ├── suspectedapps_item.xml │ ├── whitelist_item.xml │ └── wizard_info_page.xml │ ├── menu │ ├── detected_overlays_menu.xml │ ├── settings_menu.xml │ ├── suspected_apps_menu.xml │ └── whitelist_menu.xml │ ├── values │ ├── colors.xml │ ├── colors_apptheme.xml │ ├── dimens.xml │ ├── refs.xml │ ├── strings.xml │ ├── styles.xml │ ├── styles_apptheme.xml │ └── themes_apptheme.xml │ └── xml │ └── accessibilityservice.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | .idea/workspace.xml 38 | .idea/libraries 39 | 40 | # Keystore files 41 | *.jks 42 | 43 | # External native build folder generated in Android Studio 2.2 and later 44 | .externalNativeBuild 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Android Overlay Protection 2 | This is our attempt to defeat android overlay attacks by detecting them and advice the user about whats going on. 3 | 4 | You can find information about this vulnerability and an overview of the application on the [dedicated website](https://geeksonsecurity.github.io/overlay-protector-website/). 5 | 6 | Feel free to contribute and extend the current detection engines (or even create some new ones!). 7 | 8 | ![Overlay Detector](https://geeksonsecurity.github.io/overlay-protector-website/img/nexus_isometric.png) 9 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 22 5 | buildToolsVersion "21.1.2" 6 | 7 | defaultConfig { 8 | applicationId "com.geeksonsecurity.android.overlayprotector.beta" 9 | minSdkVersion 14 10 | targetSdkVersion 22 11 | versionCode 6 12 | versionName "1.2" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(dir: 'libs', include: ['*.jar']) 24 | compile 'com.android.support:appcompat-v7:22.2.0' 25 | compile 'com.j256.ormlite:ormlite-android:4.46' 26 | compile 'com.github.techfreak:wizardpager:1.0.0' 27 | compile 'com.google.code.gson:gson:2.3.1' 28 | } 29 | -------------------------------------------------------------------------------- /app/libs/android-viewbadger.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/libs/android-viewbadger.jar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/proguard-rules.pro -------------------------------------------------------------------------------- /app/src/androidTest/java/com/geeksonsecurity/android/overlayprotector/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 15 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/AppListChangedReceiver.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.content.SharedPreferences; 7 | import android.content.pm.PackageInfo; 8 | import android.content.pm.PackageManager; 9 | import android.preference.PreferenceManager; 10 | import android.util.Log; 11 | 12 | import com.geeksonsecurity.android.overlayprotector.database.DatabaseHelper; 13 | import com.geeksonsecurity.android.overlayprotector.domain.Settings; 14 | import com.geeksonsecurity.android.overlayprotector.domain.SuspectedApp; 15 | import com.google.gson.Gson; 16 | import com.j256.ormlite.dao.Dao; 17 | import com.j256.ormlite.stmt.DeleteBuilder; 18 | 19 | import java.util.Arrays; 20 | import java.util.List; 21 | 22 | public class AppListChangedReceiver extends BroadcastReceiver { 23 | private String TAG = this.getClass().getSimpleName(); 24 | private Gson gson = new Gson(); 25 | 26 | public AppListChangedReceiver() { 27 | Log.i(TAG, "Initialized"); 28 | } 29 | 30 | @Override 31 | public void onReceive(Context context, Intent intent) { 32 | if (intent == null || intent.getData() == null) { 33 | return; 34 | } 35 | String pkg = intent.getData().toString(); 36 | pkg = pkg.replace("package:", ""); 37 | Log.i(TAG, String.format("Install/Uninstall intent for %s received!", pkg)); 38 | try { 39 | Dao suspectedAppDao = DatabaseHelper.getHelper(context).getSuspectedAppDao(); 40 | 41 | if (intent.getAction() == Intent.ACTION_PACKAGE_ADDED) { 42 | try { 43 | PackageManager pm = context.getPackageManager(); 44 | PackageInfo packageInfo = pm.getPackageInfo(pkg, PackageManager.GET_PERMISSIONS); 45 | if (packageInfo != null && packageInfo.requestedPermissions != null) { 46 | List list = Arrays.asList(packageInfo.requestedPermissions); 47 | if (list.contains("android.permission.SYSTEM_ALERT_WINDOW") && list.contains("android.permission.GET_TASKS")) { 48 | SuspectedApp app = new SuspectedApp(); 49 | app.setPackageName(packageInfo.packageName); 50 | final String applicationName = pm.getApplicationLabel(packageInfo.applicationInfo).toString(); 51 | app.setAppName(applicationName); 52 | suspectedAppDao.createIfNotExists(app); 53 | } 54 | } 55 | } catch (PackageManager.NameNotFoundException e) { 56 | e.printStackTrace(); 57 | } 58 | 59 | } else if (intent.getAction() == Intent.ACTION_PACKAGE_REMOVED) { 60 | DeleteBuilder db = suspectedAppDao.deleteBuilder(); 61 | db.where().eq("packageName", pkg); 62 | suspectedAppDao.delete(db.prepare()); 63 | } 64 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 65 | String json = prefs.getString(Settings.KEY_SETTINGS, ""); 66 | Settings settings = gson.fromJson(json, Settings.class); 67 | settings.setSuspectedAppUpdateTimestamp(System.currentTimeMillis()); 68 | String serialized = gson.toJson(settings); 69 | SharedPreferences.Editor editor = prefs.edit(); 70 | editor.putString(Settings.KEY_SETTINGS, serialized); 71 | editor.apply(); 72 | } catch (Exception e) { 73 | Log.e(TAG, e.toString()); 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector; 2 | 3 | import android.app.Application; 4 | 5 | import com.geeksonsecurity.android.overlayprotector.database.DatabaseUtils; 6 | 7 | public class MyApplication extends Application { 8 | 9 | @Override 10 | public void onCreate() { 11 | super.onCreate(); 12 | DatabaseUtils.fillSuspectedApps(getApplicationContext()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/adapter/DetectedOverlayAdapter.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.adapter; 2 | 3 | import android.content.Context; 4 | import android.content.pm.PackageManager; 5 | import android.graphics.drawable.Drawable; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.ArrayAdapter; 10 | import android.widget.ImageView; 11 | import android.widget.TextView; 12 | 13 | import com.geeksonsecurity.android.overlayprotector.R; 14 | import com.geeksonsecurity.android.overlayprotector.domain.DetectedOverlay; 15 | 16 | import java.text.SimpleDateFormat; 17 | import java.util.Date; 18 | import java.util.List; 19 | 20 | public class DetectedOverlayAdapter extends ArrayAdapter { 21 | 22 | SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm"); 23 | 24 | public DetectedOverlayAdapter(Context c, List items) { 25 | super(c, 0, items); 26 | } 27 | 28 | @Override 29 | public View getView(int position, View convertView, ViewGroup parent) { 30 | // Get the data item for this position 31 | DetectedOverlay detectedOverlay = getItem(position); 32 | // Check if an existing view is being reused, otherwise inflate the view 33 | if (convertView == null) { 34 | convertView = LayoutInflater.from(getContext()).inflate(R.layout.detectedoverlay_item, parent, false); 35 | } 36 | ImageView iconImageView = (ImageView) convertView.findViewById(R.id.iconImageView); 37 | TextView offenderTextView = (TextView) convertView.findViewById(R.id.offenderLabel); 38 | TextView timestampTextView = (TextView) convertView.findViewById(R.id.timestampLabel); 39 | // Populate the data into the template view using the data object 40 | offenderTextView.setText(detectedOverlay.getOffender()); 41 | Drawable icon; 42 | try { 43 | icon = getContext().getPackageManager().getApplicationIcon(detectedOverlay.getOffender()); 44 | } catch (PackageManager.NameNotFoundException e) { 45 | icon = getContext().getResources().getDrawable(R.drawable.ic_question_icon); 46 | } 47 | iconImageView.setImageDrawable(icon); 48 | Date resultdate = new Date(detectedOverlay.getTimestamp()); 49 | timestampTextView.setText(sdf.format(resultdate)); 50 | // Return the completed view to render on screen 51 | return convertView; 52 | 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/adapter/SuspectedAppsAdapter.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.adapter; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.content.pm.PackageManager; 6 | import android.graphics.drawable.Drawable; 7 | import android.net.Uri; 8 | import android.util.Log; 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | import android.widget.ArrayAdapter; 13 | import android.widget.ImageView; 14 | import android.widget.TextView; 15 | 16 | import com.geeksonsecurity.android.overlayprotector.R; 17 | import com.geeksonsecurity.android.overlayprotector.domain.SuspectedApp; 18 | 19 | import java.text.SimpleDateFormat; 20 | import java.util.List; 21 | 22 | public class SuspectedAppsAdapter extends ArrayAdapter { 23 | 24 | private static final String TAG = SuspectedAppsAdapter.class.getSimpleName(); 25 | SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm"); 26 | 27 | public SuspectedAppsAdapter(Context c) { 28 | super(c, 0); 29 | } 30 | 31 | public SuspectedAppsAdapter(Context c, List items) { 32 | super(c, 0, items); 33 | } 34 | 35 | @Override 36 | public View getView(int position, View convertView, ViewGroup parent) { 37 | // Get the data item for this position 38 | final SuspectedApp suspectedApp = getItem(position); 39 | // Check if an existing view is being reused, otherwise inflate the view 40 | if (convertView == null) { 41 | convertView = LayoutInflater.from(getContext()).inflate(R.layout.suspectedapps_item, parent, false); 42 | } 43 | ImageView iconImageView = (ImageView) convertView.findViewById(R.id.iconImageView); 44 | TextView appName = (TextView) convertView.findViewById(R.id.appName); 45 | TextView packageName = (TextView) convertView.findViewById(R.id.packageName); 46 | // Populate the data into the template view using the data object 47 | appName.setText(suspectedApp.getAppName()); 48 | packageName.setText(suspectedApp.getPackageName()); 49 | Drawable icon; 50 | try { 51 | icon = getContext().getPackageManager().getApplicationIcon(suspectedApp.getPackageName()); 52 | } catch (PackageManager.NameNotFoundException e) { 53 | icon = getContext().getResources().getDrawable(R.drawable.ic_question_icon); 54 | } 55 | iconImageView.setImageDrawable(icon); 56 | 57 | 58 | ImageView delete = (ImageView) convertView.findViewById(R.id.uninstallImageView); 59 | delete.setOnClickListener(new View.OnClickListener() { 60 | @Override 61 | public void onClick(View v) { 62 | Intent intent = new Intent(Intent.ACTION_DELETE); 63 | intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 64 | String packageName = "package:" + suspectedApp.getPackageName(); 65 | intent.setData(Uri.parse(packageName)); 66 | Log.i(TAG, 67 | String.format("Started uninstall intent for %s", packageName)); 68 | getContext().startActivity(intent); 69 | } 70 | }); 71 | 72 | // Return the completed view to render on screen 73 | return convertView; 74 | 75 | } 76 | 77 | } -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/adapter/WhiteEntryAdapter.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.adapter; 2 | 3 | import android.app.AlertDialog; 4 | import android.content.Context; 5 | import android.content.DialogInterface; 6 | import android.content.Intent; 7 | import android.graphics.drawable.Drawable; 8 | import android.util.Log; 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | import android.widget.ArrayAdapter; 13 | import android.widget.ImageView; 14 | import android.widget.TextView; 15 | import android.widget.Toast; 16 | 17 | import com.geeksonsecurity.android.overlayprotector.MonitorAccessibilityService; 18 | import com.geeksonsecurity.android.overlayprotector.R; 19 | import com.geeksonsecurity.android.overlayprotector.database.DatabaseHelper; 20 | import com.geeksonsecurity.android.overlayprotector.domain.ServiceCommunication; 21 | import com.geeksonsecurity.android.overlayprotector.domain.WhiteEntry; 22 | import com.j256.ormlite.dao.Dao; 23 | import com.readystatesoftware.viewbadger.BadgeView; 24 | 25 | import java.sql.SQLException; 26 | import java.text.SimpleDateFormat; 27 | import java.util.Date; 28 | import java.util.List; 29 | 30 | public class WhiteEntryAdapter extends ArrayAdapter { 31 | 32 | private static final String TAG = WhiteEntryAdapter.class.getSimpleName(); 33 | SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm"); 34 | 35 | public WhiteEntryAdapter(Context c, List items) { 36 | super(c, 0, items); 37 | } 38 | 39 | @Override 40 | public View getView(int position, View convertView, ViewGroup parent) { 41 | // Get the data item for this position 42 | final WhiteEntry whiteEntry = getItem(position); 43 | // Check if an existing view is being reused, otherwise inflate the view 44 | if (convertView == null) { 45 | convertView = LayoutInflater.from(getContext()).inflate(R.layout.whitelist_item, parent, false); 46 | } 47 | ImageView iconImageView = (ImageView) convertView.findViewById(R.id.iconImageView); 48 | TextView nameTextView = (TextView) convertView.findViewById(R.id.nameLabel); 49 | TextView timestampTextView = (TextView) convertView.findViewById(R.id.timestampLabel); 50 | // Populate the data into the template view using the data object 51 | nameTextView.setText(whiteEntry.getName() + (!whiteEntry.isExactMatch() ? "*" : "")); 52 | Drawable icon = getContext().getResources().getDrawable(whiteEntry.isSystemEntry() ? R.drawable.ic_system : R.drawable.ic_user); 53 | iconImageView.setImageDrawable(icon); 54 | 55 | if (whiteEntry.getHitCount() > 0) { 56 | BadgeView badge = new BadgeView(getContext(), iconImageView); 57 | badge.setText(whiteEntry.getHitCount() > 99 ? "99+" : String.valueOf(whiteEntry.getHitCount())); 58 | badge.show(); 59 | } 60 | 61 | ImageView delete = (ImageView) convertView.findViewById(R.id.deleteImageView); 62 | delete.setOnClickListener(new View.OnClickListener() { 63 | @Override 64 | public void onClick(View v) { 65 | AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 66 | // Set the dialog title 67 | builder.setTitle("Delete Confirmation"); 68 | builder.setMessage("Delete selected white entry?"); 69 | builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 70 | @Override 71 | public void onClick(DialogInterface dialog, int id) { 72 | // Nothing 73 | } 74 | }); 75 | builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 76 | @Override 77 | public void onClick(DialogInterface dialog, int which) { 78 | try { 79 | Dao wed = DatabaseHelper.getHelper(getContext()).getWhiteListDao(); 80 | wed.delete(whiteEntry); 81 | WhiteEntryAdapter.this.remove(whiteEntry); 82 | notifyChangesToService(); 83 | } catch (SQLException e) { 84 | Toast.makeText(getContext(), "Failed to delete entry!", Toast.LENGTH_SHORT); 85 | Log.e(TAG, "Failed to delete whitelist entry", e); 86 | } 87 | } 88 | }); 89 | builder.create().show(); 90 | } 91 | }); 92 | 93 | Date resultDate = new Date(whiteEntry.getAddedTimestamp()); 94 | timestampTextView.setText(sdf.format(resultDate)); 95 | // Return the completed view to render on screen 96 | return convertView; 97 | 98 | } 99 | 100 | private void notifyChangesToService() { 101 | Intent intent = new Intent(getContext(), MonitorAccessibilityService.class); 102 | intent.setAction(ServiceCommunication.MSG_WHITELIST_UPDATED); 103 | getContext().startService(intent); 104 | } 105 | 106 | } -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/database/DatabaseUtils.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.database; 2 | 3 | import android.content.Context; 4 | import android.content.SharedPreferences; 5 | import android.content.pm.PackageInfo; 6 | import android.content.pm.PackageManager; 7 | import android.preference.PreferenceManager; 8 | import android.util.Log; 9 | 10 | import com.geeksonsecurity.android.overlayprotector.domain.Settings; 11 | import com.geeksonsecurity.android.overlayprotector.domain.SuspectedApp; 12 | import com.google.gson.Gson; 13 | import com.j256.ormlite.dao.Dao; 14 | import com.j256.ormlite.stmt.DeleteBuilder; 15 | 16 | import java.sql.SQLException; 17 | import java.util.ArrayList; 18 | import java.util.Arrays; 19 | import java.util.List; 20 | 21 | 22 | public class DatabaseUtils { 23 | 24 | public static void fillSuspectedApps(Context context) { 25 | Gson gson = new Gson(); 26 | String TAG = "DatabaseUtils.fillSuspectedApps"; 27 | 28 | 29 | Context ctx = context.getApplicationContext(); 30 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); 31 | 32 | String json = prefs.getString(Settings.KEY_SETTINGS, ""); 33 | Settings settings = new Settings(); 34 | if (!(json != null ? json.isEmpty() : true)) { 35 | settings = gson.fromJson(json, Settings.class); 36 | } 37 | 38 | if (settings.getSuspectedAppUpdateTimestamp() > 0) { 39 | Log.d(TAG, "Suspected apps already populated, skipping"); 40 | return; 41 | } 42 | 43 | List listData = new ArrayList<>(); 44 | PackageManager p = context.getPackageManager(); 45 | final List installedApps = 46 | p.getInstalledPackages(PackageManager.GET_PERMISSIONS | 47 | PackageManager.GET_PROVIDERS); 48 | 49 | long refreshTimestamp = System.currentTimeMillis(); 50 | 51 | Dao suspectedAppDao = null; 52 | try { 53 | suspectedAppDao = DatabaseHelper.getHelper(context).getSuspectedAppDao(); 54 | DeleteBuilder deleteBuilder = suspectedAppDao.deleteBuilder(); 55 | deleteBuilder.where().gt("id", 0); 56 | int deleted = deleteBuilder.delete(); 57 | Log.i(TAG, "Deleted " + deleted + " entries from suspected apps"); 58 | } catch (SQLException e) { 59 | Log.e(TAG, "Failed to retrieve suspected apps DAO", e); 60 | } 61 | 62 | for (PackageInfo i : installedApps) { 63 | if (i != null && i.requestedPermissions != null) { 64 | 65 | if (i.packageName.equals(context.getPackageName())) 66 | continue; 67 | 68 | List list = Arrays.asList(i.requestedPermissions); 69 | if (list.contains("android.permission.SYSTEM_ALERT_WINDOW") && list.contains("android.permission.GET_TASKS")) { 70 | SuspectedApp app = new SuspectedApp(); 71 | app.setPackageName(i.packageName); 72 | final String applicationName = p.getApplicationLabel(i.applicationInfo).toString(); 73 | app.setAppName(applicationName); 74 | listData.add(app); 75 | if (suspectedAppDao != null) { 76 | try { 77 | suspectedAppDao.createIfNotExists(app); 78 | } catch (SQLException e) { 79 | Log.e(TAG, "Failed to create suspected app " + app.getPackageName(), e); 80 | } 81 | } 82 | } 83 | } 84 | } 85 | 86 | settings.setSuspectedAppUpdateTimestamp(refreshTimestamp); 87 | SharedPreferences.Editor editor = prefs.edit(); 88 | String serialized = gson.toJson(settings); 89 | editor.putString(Settings.KEY_SETTINGS, serialized); 90 | editor.apply(); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/ConcurrentArrayList.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Iterator; 5 | import java.util.List; 6 | import java.util.concurrent.locks.Lock; 7 | import java.util.concurrent.locks.ReentrantReadWriteLock; 8 | 9 | public class ConcurrentArrayList { 10 | 11 | /** 12 | * use this to lock for write operations like add/remove 13 | */ 14 | private final Lock readLock; 15 | /** 16 | * use this to lock for read operations like get/iterator/contains.. 17 | */ 18 | private final Lock writeLock; 19 | /** 20 | * the underlying list 21 | */ 22 | private final List list = new ArrayList<>(); 23 | 24 | { 25 | ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock(); 26 | readLock = rwLock.readLock(); 27 | writeLock = rwLock.writeLock(); 28 | } 29 | 30 | public void add(T e) { 31 | writeLock.lock(); 32 | try { 33 | list.add(e); 34 | } finally { 35 | writeLock.unlock(); 36 | } 37 | } 38 | 39 | public void get(int index) { 40 | readLock.lock(); 41 | try { 42 | list.get(index); 43 | } finally { 44 | readLock.unlock(); 45 | } 46 | } 47 | 48 | public Iterator iterator() { 49 | readLock.lock(); 50 | try { 51 | return new ArrayList(list).iterator(); 52 | //^ we iterate over an snapshot of our list 53 | } finally { 54 | readLock.unlock(); 55 | } 56 | } 57 | 58 | public void clear() { 59 | writeLock.lock(); 60 | try { 61 | list.clear(); 62 | } finally { 63 | writeLock.unlock(); 64 | } 65 | 66 | } 67 | 68 | public void remove(T value) { 69 | writeLock.lock(); 70 | try { 71 | list.remove(value); 72 | } finally { 73 | writeLock.unlock(); 74 | } 75 | 76 | } 77 | 78 | public boolean contains(T value) { 79 | readLock.lock(); 80 | try { 81 | return list.contains(value); 82 | } finally { 83 | readLock.unlock(); 84 | } 85 | } 86 | 87 | public int size() { 88 | readLock.lock(); 89 | try { 90 | return list.size(); 91 | } finally { 92 | readLock.unlock(); 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/DetectedOverlay.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | import com.j256.ormlite.field.DatabaseField; 4 | import com.j256.ormlite.table.DatabaseTable; 5 | 6 | 7 | @DatabaseTable(tableName = "detected_overlays") 8 | public class DetectedOverlay { 9 | @DatabaseField(generatedId = true) 10 | public int id; 11 | 12 | @DatabaseField(index = true) 13 | private String offender; 14 | 15 | @DatabaseField 16 | private long timestamp; 17 | 18 | public DetectedOverlay() { 19 | 20 | } 21 | 22 | public DetectedOverlay(String offender, long timestamp) { 23 | this.offender = offender; 24 | this.timestamp = timestamp; 25 | } 26 | 27 | public String getOffender() { 28 | return offender; 29 | } 30 | 31 | public void setOffender(String offender) { 32 | this.offender = offender; 33 | } 34 | 35 | public long getTimestamp() { 36 | return timestamp; 37 | } 38 | 39 | public void setTimestamp(long timestamp) { 40 | this.timestamp = timestamp; 41 | } 42 | 43 | @Override 44 | public String toString() { 45 | return getTimestamp() + ": " + getOffender(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/DetectionEngine.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | import com.geeksonsecurity.android.overlayprotector.service.AdvancedDetectionService; 4 | import com.geeksonsecurity.android.overlayprotector.service.BaseDetectionEngine; 5 | 6 | 7 | public enum DetectionEngine { 8 | ADVANCED("Advanced", AdvancedDetectionService.class), 9 | BASE("Base", BaseDetectionEngine.class); 10 | 11 | private String _name; 12 | private Class _clazz; 13 | 14 | DetectionEngine(String name, Class clazz) { 15 | _name = name; 16 | _clazz = clazz; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return _name; 22 | } 23 | 24 | public static DetectionEngine get(String name) { 25 | if (name == BASE.toString()) { 26 | return BASE; 27 | } else { 28 | return ADVANCED; 29 | } 30 | } 31 | 32 | public Class getDetectionClass() { 33 | return _clazz; 34 | } 35 | } -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/EventCounter.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | public class EventCounter { 4 | private long[] _minuteCount = new long[60]; 5 | private long _lastTimestamp; 6 | 7 | private int _currentIdx = 0; 8 | 9 | public void newEvent() { 10 | long now = System.currentTimeMillis(); 11 | if (_lastTimestamp == 0) { 12 | _lastTimestamp = now; 13 | } 14 | 15 | long deltaSec = (now - _lastTimestamp) / 1000; 16 | 17 | if (deltaSec >= 1) { 18 | for (int i = 0; i < deltaSec && i < _minuteCount.length; i++) 19 | _minuteCount[i] = 0; 20 | 21 | _currentIdx += deltaSec; 22 | _currentIdx = _currentIdx % _minuteCount.length; 23 | _minuteCount[_currentIdx] = 0; 24 | _lastTimestamp = now; 25 | } 26 | _minuteCount[_currentIdx] += 1; 27 | } 28 | 29 | public long getLastMinuteEventCount() { 30 | long total = 0; 31 | for (long i : _minuteCount) { 32 | total += i; 33 | } 34 | return total; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/OverlayState.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | public class OverlayState { 4 | private boolean hasOverlay = false; 5 | private boolean overlayShown = false; 6 | private String process = ""; 7 | private String offender = ""; 8 | private long processTimestamp = 0; 9 | private boolean pendingUninstall = false; 10 | private String ignoreOncePackage = ""; 11 | private String additionalInfo; 12 | 13 | public synchronized boolean isHasOverlay() { 14 | return hasOverlay; 15 | } 16 | 17 | public synchronized void setHasOverlay(boolean hasOverlay) { 18 | this.hasOverlay = hasOverlay; 19 | } 20 | 21 | public synchronized void setProcess(String process) { 22 | this.process = process; 23 | processTimestamp = System.currentTimeMillis(); 24 | } 25 | 26 | public synchronized String getOffender() { 27 | return offender; 28 | } 29 | 30 | public synchronized void setOffender(String offender) { 31 | this.offender = offender; 32 | } 33 | 34 | public synchronized boolean isOverlayShown() { 35 | return overlayShown; 36 | } 37 | 38 | public synchronized void setOverlayShown(boolean overlayShown) { 39 | this.overlayShown = overlayShown; 40 | } 41 | 42 | public synchronized void resetState() { 43 | process = ""; 44 | hasOverlay = false; 45 | overlayShown = false; 46 | offender = ""; 47 | ignoreOncePackage = ""; 48 | additionalInfo = ""; 49 | } 50 | 51 | public synchronized void setPendingUninstall(boolean pendingUninstall) { 52 | this.pendingUninstall = pendingUninstall; 53 | } 54 | 55 | public synchronized boolean isPendingUninstall() { 56 | return pendingUninstall; 57 | } 58 | 59 | public synchronized void setIgnoreOncePackage(String ignoreOncePackage) { 60 | this.ignoreOncePackage = ignoreOncePackage; 61 | } 62 | 63 | public synchronized String getIgnoreOncePackage() { 64 | return ignoreOncePackage; 65 | } 66 | 67 | public synchronized String getProcess() { 68 | return process; 69 | } 70 | 71 | public synchronized void setAdditionalInfo(String additionalInfo) { 72 | this.additionalInfo = additionalInfo; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/ProcessUpdateEntry.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | public class ProcessUpdateEntry { 4 | private String process; 5 | private boolean hasChanged; 6 | 7 | public boolean isHasChanged() { 8 | return hasChanged; 9 | } 10 | 11 | public void setHasChanged(boolean hasChanged) { 12 | this.hasChanged = hasChanged; 13 | } 14 | 15 | public String getProcess() { 16 | return process; 17 | } 18 | 19 | public void setProcess(String process) { 20 | this.process = process; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/ServiceCommunication.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | public class ServiceCommunication { 4 | 5 | public static final String MSG_SETTINGS_UPDATED = "OP_UPDATE_SETTINGS"; 6 | public static final String MSG_WHITELIST_UPDATED = "OP_UPDATE_WHITELIST"; 7 | 8 | public static final int MSG_EVENT_COUNT_UPDATE = 1984; 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/Settings.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | public class Settings { 4 | 5 | public static final String KEY_SETTINGS = "settings"; 6 | 7 | // Setting default values 8 | private long suspectedAppUpdateTimestamp = 0; 9 | private int uninstallTimeoutSeconds = 15; 10 | private int ignoreOnceTimeoutSeconds = 10; 11 | private boolean advancedMode = true; 12 | private DetectionEngine detectionEngine = DetectionEngine.ADVANCED; 13 | 14 | public long getSuspectedAppUpdateTimestamp() { 15 | return suspectedAppUpdateTimestamp; 16 | } 17 | 18 | public void setSuspectedAppUpdateTimestamp(long suspectedAppUpdateTimestamp) { 19 | this.suspectedAppUpdateTimestamp = suspectedAppUpdateTimestamp; 20 | } 21 | 22 | public boolean isAdvancedMode() { 23 | return advancedMode; 24 | } 25 | 26 | public void setAdvancedMode(boolean advancedMode) { 27 | this.advancedMode = advancedMode; 28 | } 29 | 30 | public int getUninstallTimeoutSeconds() { 31 | return uninstallTimeoutSeconds; 32 | } 33 | 34 | public void setUninstallTimeoutSeconds(int uninstallTimeoutSeconds) { 35 | this.uninstallTimeoutSeconds = uninstallTimeoutSeconds; 36 | } 37 | 38 | public int getIgnoreOnceTimeoutSeconds() { 39 | return ignoreOnceTimeoutSeconds; 40 | } 41 | 42 | public void setIgnoreOnceTimeoutSeconds(int ignoreOnceTimeoutSeconds) { 43 | this.ignoreOnceTimeoutSeconds = ignoreOnceTimeoutSeconds; 44 | } 45 | 46 | public long getEventProcessingDelayMilliSeconds() { 47 | return 350; 48 | } 49 | 50 | public boolean isDetectOnTypeWindowsChanged() { 51 | return true; 52 | } 53 | 54 | public boolean isDetectOnTypeWindowContentChanged() { 55 | return true; 56 | } 57 | 58 | public boolean isDetectOnTypeWindowStateChanged() { 59 | return true; 60 | } 61 | 62 | public void setDetectionEngine(DetectionEngine detectionEngine) { 63 | this.detectionEngine = detectionEngine; 64 | } 65 | 66 | public DetectionEngine getDetectionEngine() { 67 | return detectionEngine; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/SuspectedApp.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | import com.j256.ormlite.field.DatabaseField; 4 | 5 | public class SuspectedApp { 6 | @DatabaseField(generatedId = true) 7 | public int id; 8 | 9 | @DatabaseField 10 | private String packageName; 11 | 12 | @DatabaseField 13 | private String appName; 14 | 15 | public String getPackageName() { 16 | return packageName; 17 | } 18 | 19 | public void setPackageName(String packageName) { 20 | this.packageName = packageName; 21 | } 22 | 23 | public String getAppName() { 24 | return appName; 25 | } 26 | 27 | public void setAppName(String appName) { 28 | this.appName = appName; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/domain/WhiteEntry.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.domain; 2 | 3 | import com.j256.ormlite.field.DatabaseField; 4 | import com.j256.ormlite.table.DatabaseTable; 5 | 6 | 7 | @DatabaseTable(tableName = "whitelist") 8 | public class WhiteEntry { 9 | @DatabaseField(generatedId = true) 10 | public int id; 11 | 12 | @DatabaseField(index = true) 13 | private String name; 14 | 15 | public WhiteEntry() { 16 | 17 | } 18 | 19 | public WhiteEntry(String name, long addedTimestamp, int hitCount, boolean systemEntry, boolean exactMatch) { 20 | this.name = name; 21 | this.addedTimestamp = addedTimestamp; 22 | this.hitCount = hitCount; 23 | this.systemEntry = systemEntry; 24 | this.exactMatch = exactMatch; 25 | } 26 | 27 | public WhiteEntry(String name, long addedTimestamp) { 28 | this(name, addedTimestamp, 0, false, false); 29 | } 30 | 31 | @DatabaseField 32 | private long addedTimestamp; 33 | 34 | @DatabaseField 35 | private int hitCount; 36 | 37 | @DatabaseField 38 | private boolean systemEntry; 39 | 40 | @DatabaseField 41 | private boolean exactMatch; 42 | 43 | public String getName() { 44 | return name; 45 | } 46 | 47 | public void setName(String name) { 48 | this.name = name; 49 | } 50 | 51 | public long getAddedTimestamp() { 52 | return addedTimestamp; 53 | } 54 | 55 | public void setAddedTimestamp(long addedTimestamp) { 56 | this.addedTimestamp = addedTimestamp; 57 | } 58 | 59 | public int getHitCount() { 60 | return hitCount; 61 | } 62 | 63 | public void setHitCount(int hitCount) { 64 | this.hitCount = hitCount; 65 | } 66 | 67 | public boolean isSystemEntry() { 68 | return systemEntry; 69 | } 70 | 71 | public void setSystemEntry(boolean systemEntry) { 72 | this.systemEntry = systemEntry; 73 | } 74 | 75 | public boolean isExactMatch() { 76 | return exactMatch; 77 | } 78 | 79 | public void setExactMatch(boolean exactMatch) { 80 | this.exactMatch = exactMatch; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/service/AbstractDetectionEngine.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.service; 2 | 3 | import android.content.ComponentName; 4 | import android.content.Context; 5 | import android.content.SharedPreferences; 6 | import android.content.pm.ActivityInfo; 7 | import android.content.pm.PackageManager; 8 | import android.preference.PreferenceManager; 9 | import android.util.Log; 10 | import android.view.accessibility.AccessibilityEvent; 11 | 12 | import com.geeksonsecurity.android.overlayprotector.database.DatabaseHelper; 13 | import com.geeksonsecurity.android.overlayprotector.domain.Settings; 14 | import com.geeksonsecurity.android.overlayprotector.domain.SuspectedApp; 15 | import com.geeksonsecurity.android.overlayprotector.domain.WhiteEntry; 16 | import com.google.gson.Gson; 17 | import com.j256.ormlite.dao.Dao; 18 | 19 | import java.sql.SQLException; 20 | import java.util.ArrayList; 21 | import java.util.List; 22 | import java.util.concurrent.atomic.AtomicReference; 23 | 24 | 25 | public abstract class AbstractDetectionEngine { 26 | 27 | private final String TAG = AbstractDetectionEngine.class.getSimpleName(); 28 | 29 | protected final Context _context; 30 | protected final DatabaseHelper _helper; 31 | protected final IOverlayNotifyService _notifyService; 32 | protected final Gson _gson = new Gson(); 33 | protected final ProcessHelper _processHelper; 34 | 35 | protected List _whiteEntries = new ArrayList<>(); 36 | protected Settings _settings = new Settings(); 37 | 38 | 39 | public AbstractDetectionEngine(Context context, DatabaseHelper helper, IOverlayNotifyService notifyService, ProcessHelper processHelper) { 40 | 41 | _context = context; 42 | _helper = helper; 43 | _notifyService = notifyService; 44 | _processHelper = processHelper; 45 | 46 | // Initialize settings & whitelist entries 47 | refreshSettings(); 48 | refreshWhiteList(); 49 | } 50 | 51 | abstract public void handleEvent(AccessibilityEvent event); 52 | 53 | public void refreshWhiteList() { 54 | try { 55 | _whiteEntries = _helper.getWhiteListDao().queryForAll(); 56 | Log.i(TAG, String.format("Loaded %d whitelist entries from database in cache", _whiteEntries.size())); 57 | } catch (SQLException e) { 58 | Log.e(TAG, "Failed to load white list entries", e); 59 | } 60 | } 61 | 62 | public void refreshSettings() { 63 | Context ctx = _context.getApplicationContext(); 64 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); 65 | AtomicReference json = new AtomicReference<>(prefs.getString(Settings.KEY_SETTINGS, "")); 66 | assert json.get() != null; 67 | if (!json.get().isEmpty()) { 68 | _settings = _gson.fromJson(json.get(), Settings.class); 69 | } 70 | } 71 | 72 | protected boolean checkWhitelistHit(String packageName) { 73 | boolean whitelistHit = false; 74 | for (WhiteEntry entry : _whiteEntries) { 75 | if (entry.isExactMatch() ? packageName.equals(entry.getName()) : packageName.startsWith(entry.getName())) { 76 | Log.d(TAG, "Whitelist entry hit " + entry.getName() + " saved " + packageName); 77 | whitelistHit = true; 78 | if (!entry.isSystemEntry()) { 79 | entry.setHitCount(entry.getHitCount() + 1); 80 | try { 81 | _helper.getWhiteListDao().update(entry); 82 | Log.i(TAG, 83 | String.format("Updated white list entry for %s with new hit count of %d", entry.getName(), entry.getHitCount())); 84 | } catch (SQLException e) { 85 | Log.e(TAG, 86 | String.format("Failed to update white list entry for %s with new hit count of %d", entry.getName(), entry.getHitCount()), e); 87 | } 88 | } 89 | break; 90 | } 91 | } 92 | return whitelistHit; 93 | } 94 | 95 | protected boolean checkSuspectedApps(String packageName) { 96 | boolean matched = true; 97 | if (!_settings.isAdvancedMode()) { 98 | try { 99 | Dao suspectedAppDao = DatabaseHelper.getHelper(_context.getApplicationContext()).getSuspectedAppDao(); 100 | List res = suspectedAppDao.queryForEq("packageName", packageName); 101 | if (res.size() == 0) { 102 | Log.i(TAG, String.format("Skipping %s since not in suspected app list and is probably a FP", packageName)); 103 | matched = false; 104 | } else { 105 | Log.d(TAG, String.format("Process %s found in suspected apps", packageName)); 106 | matched = true; 107 | } 108 | } catch (SQLException e) { 109 | Log.e(TAG, String.format("SQL exception: %s", e.getMessage())); 110 | matched = false; 111 | } 112 | } 113 | return matched; 114 | } 115 | 116 | 117 | protected ActivityInfo tryGetActivity(ComponentName componentName) { 118 | try { 119 | return _context.getPackageManager().getActivityInfo(componentName, 0); 120 | } catch (PackageManager.NameNotFoundException e) { 121 | return null; 122 | } 123 | } 124 | 125 | } 126 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/service/IOverlayNotifyService.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.service; 2 | 3 | import com.geeksonsecurity.android.overlayprotector.domain.OverlayState; 4 | 5 | public interface IOverlayNotifyService { 6 | void processOverlayState(OverlayState state); 7 | 8 | void updateNotificationCount(long lastMinuteEventCount); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/service/ProcessHelper.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.service; 2 | 3 | import android.app.ActivityManager; 4 | import android.os.Build; 5 | 6 | import java.io.BufferedReader; 7 | import java.io.File; 8 | import java.io.FileReader; 9 | import java.io.IOException; 10 | 11 | 12 | /** 13 | * Based on http://stackoverflow.com/questions/30619349/android-5-1-1-and-above-getrunningappprocesses-returns-my-application-packag 14 | */ 15 | public class ProcessHelper { 16 | 17 | /** 18 | * first app user 19 | */ 20 | public static final int AID_APP = 10000; 21 | 22 | /** 23 | * offset for uid ranges for each user 24 | */ 25 | public static final int AID_USER = 100000; 26 | private ActivityManager _activityManager; 27 | 28 | public ProcessHelper(ActivityManager activityManager) { 29 | _activityManager = activityManager; 30 | } 31 | 32 | public String getForegroundApp() { 33 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 34 | @SuppressWarnings("deprecation") ActivityManager.RunningTaskInfo foregroundTaskInfo = _activityManager.getRunningTasks(1).get(0); 35 | return foregroundTaskInfo.topActivity.getPackageName(); 36 | } else { 37 | File[] files = new File("/proc").listFiles(); 38 | int lowestOomScore = Integer.MAX_VALUE; 39 | String foregroundProcess = null; 40 | 41 | for (File file : files) { 42 | if (!file.isDirectory()) { 43 | continue; 44 | } 45 | 46 | int pid; 47 | try { 48 | pid = Integer.parseInt(file.getName()); 49 | } catch (NumberFormatException e) { 50 | continue; 51 | } 52 | 53 | try { 54 | String cgroup = read(String.format("/proc/%d/cgroup", pid)); 55 | 56 | String[] lines = cgroup.split("\n"); 57 | 58 | if (lines.length != 2) { 59 | continue; 60 | } 61 | 62 | String cpuSubsystem = lines[0]; 63 | String cpuaccctSubsystem = lines[1]; 64 | 65 | if (!cpuaccctSubsystem.endsWith(Integer.toString(pid))) { 66 | // not an application process 67 | continue; 68 | } 69 | 70 | if (cpuSubsystem.endsWith("bg_non_interactive")) { 71 | // background policy 72 | continue; 73 | } 74 | 75 | String cmdline = read(String.format("/proc/%d/cmdline", pid)); 76 | 77 | if (cmdline.contains("com.android.systemui")) { 78 | continue; 79 | } 80 | 81 | int uid = Integer.parseInt( 82 | cpuaccctSubsystem.split(":")[2].split("/")[1].replace("uid_", "")); 83 | if (uid >= 1000 && uid <= 1038) { 84 | // system process 85 | continue; 86 | } 87 | 88 | int appId = uid - AID_APP; 89 | int userId = 0; 90 | // loop until we get the correct user id. 91 | // 100000 is the offset for each user. 92 | while (appId > AID_USER) { 93 | appId -= AID_USER; 94 | userId++; 95 | } 96 | 97 | if (appId < 0) { 98 | continue; 99 | } 100 | 101 | // u{user_id}_a{app_id} is used on API 17+ for multiple user account support. 102 | // String uidName = String.format("u%d_a%d", userId, appId); 103 | 104 | File oomScoreAdj = new File(String.format("/proc/%d/oom_score_adj", pid)); 105 | if (oomScoreAdj.canRead()) { 106 | int oomAdj = Integer.parseInt(read(oomScoreAdj.getAbsolutePath())); 107 | if (oomAdj != 0) { 108 | continue; 109 | } 110 | } 111 | 112 | int oomscore = Integer.parseInt(read(String.format("/proc/%d/oom_score", pid))); 113 | if (oomscore < lowestOomScore) { 114 | lowestOomScore = oomscore; 115 | foregroundProcess = cmdline; 116 | } 117 | 118 | } catch (IOException e) { 119 | e.printStackTrace(); 120 | } 121 | }//� 122 | return foregroundProcess.replaceAll("[^\\x20-\\x7e]", ""); 123 | } 124 | } 125 | 126 | private static String read(String path) throws IOException { 127 | StringBuilder output = new StringBuilder(); 128 | BufferedReader reader = new BufferedReader(new FileReader(path)); 129 | output.append(reader.readLine()); 130 | for (String line = reader.readLine(); line != null; line = reader.readLine()) { 131 | output.append('\n').append(line); 132 | } 133 | reader.close(); 134 | return output.toString(); 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/tasks/IServiceStatusProcessor.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.tasks; 2 | 3 | 4 | public interface IServiceStatusProcessor { 5 | void processResult(boolean result); 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/tasks/ServiceStatusTask.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.tasks; 2 | 3 | import android.accessibilityservice.AccessibilityServiceInfo; 4 | import android.content.Context; 5 | import android.os.AsyncTask; 6 | import android.view.accessibility.AccessibilityEvent; 7 | import android.view.accessibility.AccessibilityManager; 8 | 9 | import java.util.List; 10 | 11 | public class ServiceStatusTask extends AsyncTask { 12 | 13 | private AccessibilityManager accessibilityManager; 14 | private IServiceStatusProcessor listener; 15 | private Context context; 16 | 17 | public ServiceStatusTask(Context context, IServiceStatusProcessor serviceStatusProcessor) { 18 | this.context = context; 19 | accessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); 20 | listener = serviceStatusProcessor; 21 | } 22 | 23 | @Override 24 | protected Boolean doInBackground(Void... params) { 25 | boolean running = false; 26 | List runningServices = accessibilityManager 27 | .getEnabledAccessibilityServiceList(AccessibilityEvent.TYPES_ALL_MASK); 28 | for (AccessibilityServiceInfo service : runningServices) { 29 | if (service.getId().contains(context.getApplicationContext().getPackageName())) { 30 | running = true; 31 | break; 32 | } 33 | } 34 | return running; 35 | } 36 | 37 | @Override 38 | protected void onPostExecute(Boolean result) { 39 | super.onPostExecute(result); 40 | listener.processResult(result); 41 | } 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/view/DetectedOverlayFragment.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.view; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.support.v4.app.Fragment; 6 | import android.util.Log; 7 | import android.view.LayoutInflater; 8 | import android.view.Menu; 9 | import android.view.MenuInflater; 10 | import android.view.MenuItem; 11 | import android.view.View; 12 | import android.view.ViewGroup; 13 | import android.widget.AbsListView; 14 | import android.widget.AdapterView; 15 | 16 | import com.geeksonsecurity.android.overlayprotector.MainActivity; 17 | import com.geeksonsecurity.android.overlayprotector.R; 18 | import com.geeksonsecurity.android.overlayprotector.adapter.DetectedOverlayAdapter; 19 | import com.geeksonsecurity.android.overlayprotector.database.DatabaseHelper; 20 | import com.geeksonsecurity.android.overlayprotector.domain.DetectedOverlay; 21 | import com.j256.ormlite.dao.Dao; 22 | import com.j256.ormlite.stmt.DeleteBuilder; 23 | 24 | import java.sql.SQLException; 25 | import java.util.ArrayList; 26 | import java.util.List; 27 | 28 | public class DetectedOverlayFragment extends Fragment implements AbsListView.OnItemClickListener { 29 | /** 30 | * The fragment's ListView/GridView. 31 | */ 32 | private AbsListView mListView; 33 | 34 | /** 35 | * The Adapter which will be used to populate the ListView/GridView with 36 | * Views. 37 | */ 38 | private DetectedOverlayAdapter mAdapter; 39 | 40 | public static DetectedOverlayFragment newInstance() { 41 | return new DetectedOverlayFragment(); 42 | } 43 | 44 | /** 45 | * Mandatory empty constructor for the fragment manager to instantiate the 46 | * fragment (e.g. upon screen orientation changes). 47 | */ 48 | public DetectedOverlayFragment() { 49 | } 50 | 51 | 52 | @Override 53 | public void onCreate(Bundle savedInstanceState) { 54 | super.onCreate(savedInstanceState); 55 | setHasOptionsMenu(true); 56 | 57 | List listData = new ArrayList<>(); 58 | mAdapter = new DetectedOverlayAdapter(getActivity(), listData); 59 | refreshItems(); 60 | } 61 | 62 | @Override 63 | public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 64 | super.onCreateOptionsMenu(menu, inflater); 65 | inflater.inflate(R.menu.detected_overlays_menu, menu); 66 | } 67 | 68 | 69 | @Override 70 | public boolean onOptionsItemSelected(MenuItem item) { 71 | switch (item.getItemId()) { 72 | case R.id.op_od_menu_refresh: 73 | refreshItems(); 74 | break; 75 | case R.id.op_od_menu_clear: 76 | clearHistory(); 77 | break; 78 | default: 79 | break; 80 | } 81 | return false; 82 | } 83 | 84 | private void clearHistory() { 85 | try { 86 | Dao detectedOverlayDao = DatabaseHelper.getHelper(getActivity()).getDetectedOverlayDao(); 87 | DeleteBuilder deleteBuilder = detectedOverlayDao.deleteBuilder(); 88 | deleteBuilder.where().gt("id", 0); 89 | int deleted = deleteBuilder.delete(); 90 | Log.i(getTag(), "Deleted " + deleted + " entries from DetectedOverlay"); 91 | } catch (SQLException e) { 92 | Log.e(getTag(), "Failed to deleted entries", e); 93 | } 94 | mAdapter.clear(); 95 | } 96 | 97 | private void refreshItems() { 98 | List listData = new ArrayList<>(); 99 | try { 100 | listData = DatabaseHelper.getHelper(getActivity()).getDetectedOverlayDao().queryBuilder().orderBy("timestamp", false).query(); 101 | } catch (SQLException e) { 102 | Log.e(getTag(), "Failed to obtain detected overlays objects", e); 103 | } 104 | mAdapter.clear(); 105 | mAdapter.addAll(listData); 106 | } 107 | 108 | @Override 109 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 110 | Bundle savedInstanceState) { 111 | View view = inflater.inflate(R.layout.fragment_detectedoverlay, container, false); 112 | 113 | // Set the adapter 114 | mListView = (AbsListView) view.findViewById(android.R.id.list); 115 | mListView.setEmptyView(view.findViewById(android.R.id.empty)); 116 | mListView.setAdapter(mAdapter); 117 | 118 | // Set OnItemClickListener so we can be notified on item clicks 119 | mListView.setOnItemClickListener(this); 120 | 121 | return view; 122 | } 123 | 124 | @Override 125 | public void onStart() { 126 | super.onStart(); 127 | } 128 | 129 | @Override 130 | public void onDetach() { 131 | super.onDetach(); 132 | } 133 | 134 | @Override 135 | public void onItemClick(AdapterView parent, View view, int position, long id) { 136 | //if (null != mListener) { 137 | // Notify the active callbacks interface (the activity, if the 138 | // fragment is attached to one) that an item has been selected. 139 | //mListener.onFragmentInteraction(DummyContent.ITEMS.get(position).id); 140 | //} 141 | } 142 | 143 | @Override 144 | public void onAttach(Activity activity) { 145 | super.onAttach(activity); 146 | ((MainActivity) activity).onSectionAttached(3); 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/wizard/ConfigWizardModel.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.wizard; 2 | 3 | import android.content.Context; 4 | 5 | import com.geeksonsecurity.android.overlayprotector.R; 6 | import com.tech.freak.wizardpager.model.AbstractWizardModel; 7 | import com.tech.freak.wizardpager.model.PageList; 8 | 9 | public class ConfigWizardModel extends AbstractWizardModel { 10 | 11 | public ConfigWizardModel(Context context) { 12 | super(context); 13 | } 14 | 15 | @Override 16 | protected PageList onNewRootPageList() { 17 | return new PageList(new WizardInfoPage(this, mContext.getString(R.string.op_wizard_step1_title)) 18 | .setValue(0, mContext.getString(R.string.op_wizard_step1_content)), 19 | new WizardInfoPage(this, mContext.getString(R.string.op_wizard_step2_title)).setValue(R.drawable.configstep1, mContext.getString(R.string.op_wizard_step2_content)), 20 | new WizardInfoPage(this, mContext.getString(R.string.op_wizard_step3_title)).setValue(R.drawable.configstep2, mContext.getString(R.string.op_wizard_step3_content)), 21 | new WizardInfoPage(this, mContext.getString(R.string.op_wizard_step4_title)).setValue(R.drawable.configstep3, mContext.getString(R.string.op_wizard_step4_content))); 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/wizard/WizardInfoPage.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.wizard; 2 | 3 | import android.support.v4.app.Fragment; 4 | import android.text.TextUtils; 5 | 6 | import com.tech.freak.wizardpager.model.ModelCallbacks; 7 | import com.tech.freak.wizardpager.model.Page; 8 | import com.tech.freak.wizardpager.model.ReviewItem; 9 | 10 | import java.util.ArrayList; 11 | 12 | public class WizardInfoPage extends Page { 13 | 14 | public WizardInfoPage(ModelCallbacks callbacks, String title) { 15 | super(callbacks, title); 16 | } 17 | 18 | @Override 19 | public Fragment createFragment() { 20 | return WizardInfoPageFragment.create(getKey()); 21 | } 22 | 23 | @Override 24 | public void getReviewItems(ArrayList dest) { 25 | } 26 | 27 | @Override 28 | public boolean isCompleted() { 29 | return !TextUtils.isEmpty(mData.getString(SIMPLE_DATA_KEY)); 30 | } 31 | 32 | public WizardInfoPage setValue(int imageDrawableId, String descriptionText) { 33 | mData.putInt(WizardInfoPageFragment.IMAGE_KEY, imageDrawableId); 34 | mData.putString(WizardInfoPageFragment.DESCRIPTION_KEY, descriptionText); 35 | return this; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/geeksonsecurity/android/overlayprotector/wizard/WizardInfoPageFragment.java: -------------------------------------------------------------------------------- 1 | package com.geeksonsecurity.android.overlayprotector.wizard; 2 | 3 | import android.app.Activity; 4 | import android.net.Uri; 5 | import android.os.Bundle; 6 | import android.support.v4.app.Fragment; 7 | import android.support.v4.content.res.ResourcesCompat; 8 | import android.view.LayoutInflater; 9 | import android.view.View; 10 | import android.view.ViewGroup; 11 | import android.widget.ImageView; 12 | import android.widget.TextView; 13 | 14 | import com.geeksonsecurity.android.overlayprotector.R; 15 | import com.tech.freak.wizardpager.model.Page; 16 | import com.tech.freak.wizardpager.ui.PageFragmentCallbacks; 17 | 18 | public class WizardInfoPageFragment extends Fragment { 19 | public static final String DESCRIPTION_KEY = "descriptionKey"; 20 | public static final String IMAGE_KEY = "imageKey"; 21 | private static final java.lang.String ARG_KEY = "key"; 22 | 23 | private PageFragmentCallbacks mCallbacks; 24 | private String mKey; 25 | private Page mPage; 26 | private ImageView imageView; 27 | 28 | private Uri mNewImageUri; 29 | 30 | public static WizardInfoPageFragment create(String key) { 31 | Bundle args = new Bundle(); 32 | args.putString(ARG_KEY, key); 33 | WizardInfoPageFragment f = new WizardInfoPageFragment(); 34 | f.setArguments(args); 35 | return f; 36 | } 37 | 38 | @Override 39 | public void onCreate(Bundle savedInstanceState) { 40 | super.onCreate(savedInstanceState); 41 | 42 | Bundle args = getArguments(); 43 | mKey = args.getString(ARG_KEY); 44 | mPage = mCallbacks.onGetPage(mKey); 45 | } 46 | 47 | @Override 48 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 49 | Bundle savedInstanceState) { 50 | View rootView = inflater.inflate(R.layout.wizard_info_page, 51 | container, false); 52 | 53 | ((TextView) rootView.findViewById(android.R.id.title)).setText(mPage.getTitle()); 54 | 55 | imageView = (ImageView) rootView.findViewById(R.id.imageView); 56 | 57 | String descriptionData = mPage.getData().getString(DESCRIPTION_KEY); 58 | ((TextView) rootView.findViewById(R.id.wizardDescriptionText)).setText(descriptionData); 59 | 60 | int res = mPage.getData().getInt(IMAGE_KEY); 61 | if (res > 0) { 62 | imageView.setImageDrawable(ResourcesCompat.getDrawable(getResources(), res, null)); 63 | } else { 64 | imageView.setVisibility(View.INVISIBLE); 65 | } 66 | return rootView; 67 | } 68 | 69 | @Override 70 | public void onAttach(Activity activity) { 71 | super.onAttach(activity); 72 | 73 | if (!(activity instanceof PageFragmentCallbacks)) { 74 | throw new ClassCastException( 75 | "Activity must implement PageFragmentCallbacks"); 76 | } 77 | 78 | mCallbacks = (PageFragmentCallbacks) activity; 79 | } 80 | 81 | @Override 82 | public void onDetach() { 83 | super.onDetach(); 84 | mCallbacks = null; 85 | } 86 | 87 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_off_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_off_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_off_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_off_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_off_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_off_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_off_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_off_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_off_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_off_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_on_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_on_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_on_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_on_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_on_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_on_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_on_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_on_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_check_on_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_check_on_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_default_disabled_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_default_disabled_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_default_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_default_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_default_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_default_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_default_normal_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_default_normal_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_default_pressed_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_default_pressed_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_off_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_btn_radio_on_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_default_holo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_default_holo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_pressed_holo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_pressed_holo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_ic_navigation_drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_ic_navigation_drawer.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_list_activated_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_list_activated_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_list_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_list_focused_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_list_longpressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_list_longpressed_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_list_pressed_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_list_pressed_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_list_selector_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_list_selector_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_textfield_activated_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_textfield_activated_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_textfield_default_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_textfield_default_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_textfield_disabled_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_textfield_disabled_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_textfield_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_textfield_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/apptheme_textfield_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/apptheme_textfield_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/drawer_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/drawer_shadow.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_action_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_action_new.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_action_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_action_refresh.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_action_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_action_save.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_actionbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_actionbar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_launcher_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_launcher_circle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_launcher_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_launcher_transparent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_notification_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_notification_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_question_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_question_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_system.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-hdpi/ic_user.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_off_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_off_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_off_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_off_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_off_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_off_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_off_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_off_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_off_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_off_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_on_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_on_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_on_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_on_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_on_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_on_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_on_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_on_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_check_on_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_check_on_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_default_disabled_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_default_disabled_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_default_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_default_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_default_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_default_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_default_normal_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_default_normal_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_default_pressed_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_default_pressed_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_off_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_btn_radio_on_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_default_holo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_default_holo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_pressed_holo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_pressed_holo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_ic_navigation_drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_ic_navigation_drawer.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_list_activated_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_list_activated_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_list_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_list_focused_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_list_longpressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_list_longpressed_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_list_pressed_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_list_pressed_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_list_selector_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_list_selector_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_textfield_activated_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_textfield_activated_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_textfield_default_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_textfield_default_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_textfield_disabled_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_textfield_disabled_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_textfield_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_textfield_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/apptheme_textfield_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/apptheme_textfield_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/drawer_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/drawer_shadow.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_action_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_action_new.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_action_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_action_refresh.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_action_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_action_save.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_actionbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_actionbar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_launcher_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_launcher_circle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_launcher_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_launcher_transparent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_notification_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_notification_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_question_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_question_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_system.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-mdpi/ic_user.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_off_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_check_on_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_default_disabled_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_default_disabled_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_default_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_default_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_default_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_default_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_default_normal_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_default_normal_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_default_pressed_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_default_pressed_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_off_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_btn_radio_on_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_default_holo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_default_holo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_pressed_holo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_pressed_holo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_ic_navigation_drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_ic_navigation_drawer.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_list_activated_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_list_activated_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_list_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_list_focused_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_list_longpressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_list_longpressed_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_list_pressed_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_list_pressed_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_list_selector_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_list_selector_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_textfield_activated_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_textfield_activated_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_textfield_default_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_textfield_default_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_textfield_disabled_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_textfield_disabled_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_textfield_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_textfield_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/apptheme_textfield_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/apptheme_textfield_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/drawer_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_action_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_action_new.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_action_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_action_refresh.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_action_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_action_save.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_actionbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_actionbar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_launcher_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_launcher_circle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_launcher_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_launcher_transparent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_notification_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_notification_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_question_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_question_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_system.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xhdpi/ic_user.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_off_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_check_on_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_default_disabled_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_default_disabled_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_default_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_default_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_default_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_default_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_default_normal_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_default_normal_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_default_pressed_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_default_pressed_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_off_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_disabled_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_disabled_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_disabled_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_disabled_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_focused_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_focused_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_pressed_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_btn_radio_on_pressed_holo_dark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_default_holo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_default_holo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_pressed_holo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_pressed_holo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_ic_navigation_drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_ic_navigation_drawer.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_list_activated_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_list_activated_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_list_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_list_focused_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_list_longpressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_list_longpressed_holo.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_list_pressed_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_list_pressed_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_list_selector_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_list_selector_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_textfield_activated_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_textfield_activated_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_textfield_default_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_textfield_default_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_textfield_disabled_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_textfield_disabled_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_textfield_disabled_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_textfield_disabled_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/apptheme_textfield_focused_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/apptheme_textfield_focused_holo_dark.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_action_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_action_new.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_action_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_action_refresh.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_action_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_action_save.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_actionbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_actionbar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_launcher_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_launcher_circle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_launcher_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_launcher_transparent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_notification_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_notification_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_question_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_question_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_system.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxhdpi/ic_user.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_actionbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxxhdpi/ic_actionbar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_launcher_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxxhdpi/ic_launcher_circle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_launcher_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxxhdpi/ic_launcher_transparent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_notification_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable-xxxhdpi/ic_notification_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_activated_background_holo_dark.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_btn_check_holo_dark.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_btn_default_holo_dark.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_btn_radio_holo_dark.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_edit_text_holo_dark.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_fastscroll_thumb_holo.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_item_background_holo_dark.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_list_selector_background_transition_holo_dark.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/apptheme_list_selector_holo_dark.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/configstep1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable/configstep1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/configstep2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable/configstep2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/configstep3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geeksonsecurity/android-overlay-protection/9bdf14a14a98e3d48d3ab7ea0a0e55412b58771d/app/src/main/res/drawable/configstep3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/drawer_list_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/eventborder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/overlay_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rectangle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 15 | 16 | 21 | 23 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/add_whitelist_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 19 | 20 | 26 | 27 | 32 | 33 |