mirror of
https://github.com/MaintainTeam/Hypatia.git
synced 2025-03-01 05:48:23 +03:00
Persistence!
This commit is contained in:
parent
a7b5c02b10
commit
0befda3456
7 changed files with 64 additions and 25 deletions
|
@ -6,8 +6,8 @@ android {
|
|||
applicationId "us.spotco.malwarescanner"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 9
|
||||
versionName "1.4" }
|
||||
versionCode 10
|
||||
versionName "1.5" }
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
|
@ -12,6 +13,7 @@
|
|||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
|
@ -23,10 +25,26 @@
|
|||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<service
|
||||
android:name=".MalwareScannerService"
|
||||
android:label="Theia Realtime Malware Scanner"
|
||||
android:enabled="true"
|
||||
android:exported="false"/>
|
||||
android:exported="false">
|
||||
</service>
|
||||
|
||||
<receiver
|
||||
android:name=".BootReceiver"
|
||||
android:label="Theia Persistence"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED"/>
|
||||
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
23
app/src/main/java/us/spotco/malwarescanner/BootReceiver.java
Normal file
23
app/src/main/java/us/spotco/malwarescanner/BootReceiver.java
Normal file
|
@ -0,0 +1,23 @@
|
|||
package us.spotco.malwarescanner;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
public class BootReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
|
||||
SharedPreferences prefs = context.getSharedPreferences(BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE);
|
||||
boolean autostart = prefs.getBoolean("autostart", true);
|
||||
|
||||
if (autostart) {
|
||||
Intent realtimeScanner = new Intent(context, MalwareScannerService.class);
|
||||
context.startService(realtimeScanner);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -2,7 +2,6 @@ package us.spotco.malwarescanner;
|
|||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
|
@ -37,6 +36,10 @@ public class Database {
|
|||
//signatureDatabases.add(new SignatureDatabase("http://cdn.malware.expert/malware.expert.hdb", "malware.expert.hdb"));
|
||||
}
|
||||
|
||||
public static boolean areDatabasesAvailable() {
|
||||
return databasePath.listFiles().length > 0;
|
||||
}
|
||||
|
||||
public static boolean isDatabaseLoaded() {
|
||||
return signaturesMD5.size() > 0 && signaturesSHA1.size() > 0 && signaturesSHA256.size() > 0;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.Manifest;
|
|||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.AsyncTask;
|
||||
|
@ -13,15 +14,12 @@ import android.support.design.widget.FloatingActionButton;
|
|||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.SwitchCompat;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.method.ScrollingMovementMethod;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.Switch;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -30,6 +28,7 @@ import java.util.Set;
|
|||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
private SharedPreferences prefs = null;
|
||||
private boolean scanSystem = false;
|
||||
private boolean scanApps = true;
|
||||
private boolean scanInternal = true;
|
||||
|
@ -56,6 +55,8 @@ public class MainActivity extends AppCompatActivity {
|
|||
final Database database = new Database(this, logView);
|
||||
final MalwareScanner malwareScanner = new MalwareScanner(this, this, true);
|
||||
|
||||
prefs = getSharedPreferences(BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE);
|
||||
|
||||
FloatingActionButton fab = findViewById(R.id.fab);
|
||||
fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
|
@ -110,10 +111,12 @@ public class MainActivity extends AppCompatActivity {
|
|||
break;
|
||||
case R.id.toggleRealtime:
|
||||
Intent realtimeScanner = new Intent(getApplicationContext(), MalwareScannerService.class);
|
||||
if(!item.isChecked()) {
|
||||
if (!item.isChecked()) {
|
||||
startService(realtimeScanner);
|
||||
prefs.edit().putBoolean("autostart", true).apply();
|
||||
} else {
|
||||
stopService(realtimeScanner);
|
||||
prefs.edit().putBoolean("autostart", false).apply();
|
||||
}
|
||||
item.setChecked(!item.isChecked());
|
||||
break;
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.content.Context;
|
|||
import android.os.AsyncTask;
|
||||
import android.os.SystemClock;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.util.Log;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.File;
|
||||
|
|
|
@ -9,8 +9,6 @@ import android.os.Environment;
|
|||
import android.os.FileObserver;
|
||||
import android.os.IBinder;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
@ -28,21 +26,16 @@ public class MalwareScannerService extends Service {
|
|||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
if (true) {//Check if we're enabled
|
||||
malwareMonitors = new ArrayList<>();
|
||||
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory().toString()));
|
||||
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory() + "/Documents"));
|
||||
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory() + "/Download"));
|
||||
malwareMonitors = new ArrayList<>();
|
||||
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory().toString()));
|
||||
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory() + "/Documents"));
|
||||
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory() + "/Download"));
|
||||
|
||||
for (MalwareMonitor malwareMonitor : malwareMonitors) {
|
||||
malwareMonitor.startWatching();
|
||||
}
|
||||
Toast.makeText(this, "Theia: Realtime Scanning Started", Toast.LENGTH_SHORT).show();
|
||||
setForeground();
|
||||
} else {
|
||||
stopSelf();
|
||||
for (MalwareMonitor malwareMonitor : malwareMonitors) {
|
||||
malwareMonitor.startWatching();
|
||||
}
|
||||
|
||||
//Toast.makeText(this, "Theia: Realtime Scanning Started", Toast.LENGTH_SHORT).show();
|
||||
setForeground();
|
||||
return START_STICKY;
|
||||
}
|
||||
|
||||
|
@ -51,7 +44,7 @@ public class MalwareScannerService extends Service {
|
|||
for (MalwareMonitor malwareMonitor : malwareMonitors) {
|
||||
malwareMonitor.stopWatching();
|
||||
}
|
||||
Toast.makeText(this, "Theia: Realtime Scanning Stopped", Toast.LENGTH_SHORT).show();
|
||||
//Toast.makeText(this, "Theia: Realtime Scanning Stopped", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
private void setForeground() {
|
||||
|
|
Loading…
Add table
Reference in a new issue