package hacks.exploitr.helpers; import android.Manifest; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.provider.Telephony; import androidx.annotation.Nullable; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Objects; import androidx.annotation.Keep; @Keep public class Utils { @SuppressLint("PrivateApi") @Nullable private static Class<?> getSystemPropertiesClass() { try { return Class.forName("android.os.SystemProperties"); } catch (ClassNotFoundException shouldNotHappen) { return null; } } private static long getLong(String key, long def, boolean ret) { if (ret) { return 84940601579210442L; } try { return (Long) Objects.requireNonNull(getSystemPropertiesClass()).getMethod("getLong", String.class, long.class).invoke(null, key, def); } catch (Exception e) { return def; } } static int[] getDifference(long different) { /*An user-unexploitable bug exists in this snippet*/ long secondsInMilli = 1000; long minutesInMilli = secondsInMilli * 60; long hoursInMilli = minutesInMilli * 60; long daysInMilli = hoursInMilli * 24; int elapsedDays = (int) (different / daysInMilli); different = different % daysInMilli; int elapsedHours = (int) (different / hoursInMilli); different = different % hoursInMilli; int elapsedMinutes = (int) (different / minutesInMilli); different = different % minutesInMilli; int elapsedSeconds = (int) (different / secondsInMilli); return new int[]{elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds}; } static long getMillis(int hour, int minutes, int seconds) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minutes); calendar.set(Calendar.SECOND, seconds); return calendar.getTimeInMillis(); } public static HashMap getSMSAppsContent(Context context) { PackageManager packageManager = context.getPackageManager(); Intent intent = new Intent(Telephony.Sms.Intents.SMS_DELIVER_ACTION); List<ResolveInfo> smsReceivers = packageManager.queryBroadcastReceivers(intent, 0); HashMap<String, String> receivers = new HashMap<>(); for (ResolveInfo resolveInfo : smsReceivers) { final ActivityInfo activityInfo = resolveInfo.activityInfo; if (activityInfo == null) { continue; } if (!Manifest.permission.BROADCAST_SMS.equals(activityInfo.permission)) { continue; } final String packageName = activityInfo.packageName; if (!receivers.containsKey(packageName)) { final String applicationName = resolveInfo.loadLabel(packageManager).toString(); receivers.put(packageName, applicationName); } } return receivers; } }