From 12570f4b2e27c57bd325f6108c6f27bb330ec0fe Mon Sep 17 00:00:00 2001 From: Tad Date: Tue, 26 Dec 2017 18:33:21 -0500 Subject: [PATCH] (DISABLED: Broken) Scan APKs on install/update --- app/src/main/AndroidManifest.xml | 2 +- .../spotco/malwarescanner/EventReceiver.java | 30 +++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c0af492..c54d5de 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,10 +40,10 @@ - + diff --git a/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java b/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java index 868cb35..e7748a0 100644 --- a/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java +++ b/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java @@ -4,6 +4,11 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; + +import java.io.File; + +import gnu.trove.set.hash.THashSet; public class EventReceiver extends BroadcastReceiver { @@ -12,8 +17,15 @@ public class EventReceiver extends BroadcastReceiver { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { considerStartService(context); } - if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED) && intent.getDataString().contains(context.getPackageName())) { - considerStartService(context); + if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) { + if (intent.getDataString().contains(context.getPackageName())) { + considerStartService(context); //We've been updated, restart service + } else { + //scanApp(context, intent.getDataString());//An app was updated, scan it + } + } + if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) { + //scanApp(context, intent.getDataString());//An app was installed, scan it } } @@ -29,4 +41,18 @@ public class EventReceiver extends BroadcastReceiver { } } + private static void scanApp(Context context, String appID) { + if (Utils.isServiceRunning(MalwareScannerService.class, context)) { + THashSet filesToScan = new THashSet<>(); + try { + filesToScan.add(new File(context.getPackageManager().getApplicationInfo(appID, PackageManager.GET_META_DATA).sourceDir)); + } catch (Exception e) { + e.printStackTrace(); + } + if (filesToScan.size() > 0) { + new MalwareScanner(null, context, false).execute(filesToScan); + } + } + } + }