成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大談android安全2——Activity劫持的防范程序

移動開發 Android
如果真的爆發了這種惡意程序,我們并不能在啟動程序時每一次都那么小心去查看判斷當前在運行的是哪一個程序。因此,前幾個星期花了一點時間寫了一個程序,叫反劫持助手。原理很簡單,就是獲取當前運行的是哪一個程序,并且顯示在一個浮動窗口中,以幫忙用戶判斷當前運行的是哪一個程序,防范一些釣魚程序的欺騙。

上篇在里面介紹了由于Android設計上的缺陷而導致的釣魚漏洞,并且也在文末介紹了用戶防范的方法。
然而,如果真的爆發了這種惡意程序,我們并不能在啟動程序時每一次都那么小心去查看判斷當前在運行的是哪一個程序。因此,前幾個星期花了一點時間寫了一個程序,叫反劫持助手。原理很簡單,就是獲取當前運行的是哪一個程序,并且顯示在一個浮動窗口中,以幫忙用戶判斷當前運行的是哪一個程序,防范一些釣魚程序的欺騙。

在這一次,由于是“正當防衛”,就不再通過枚舉來獲取當前運行的程序了,在manifest文件中增加一個權限:

 

  1. <uses-permission android:name="android.permission.GET_TASKS" />  


然后啟動程序的時候,啟動一個Service,在Service中啟動一個浮動窗口,并周期性檢測當前運行的是哪一個程序,然后顯示在浮動窗口中。
程序截圖如下:

 

其中Service代碼如下:

 

  1. /* 
  2. * @(#)AntiService.java Project:ActivityHijackingDemo 
  3. * Date:2012-9-13 
  4. * 
  5. * Copyright (c) 2011 CFuture09, Institute of Software, 
  6. * Guangdong Ocean University, Zhanjiang, GuangDong, China. 
  7. * All rights reserved. 
  8. * 
  9. * Licensed under the Apache License, Version 2.0 (the "License"); 
  10. * you may not use this file except in compliance with the License. 
  11. * You may obtain a copy of the License at 
  12. * 
  13. * http://www.apache.org/licenses/LICENSE-2.0 
  14. * 
  15. * Unless required by applicable law or agreed to in writing, software 
  16. * distributed under the License is distributed on an "AS IS" BASIS, 
  17. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  18. * See the License for the specific language governing permissions and 
  19. * limitations under the License. 
  20. */ 
  21. package com.sinaapp.msdxblog.antihijacking.service; 
  22. import android.app.ActivityManager; 
  23. import android.app.Notification; 
  24. import android.app.Service; 
  25. import android.content.Context; 
  26. import android.content.Intent; 
  27. import android.content.pm.PackageManager; 
  28. import android.content.pm.PackageManager.NameNotFoundException; 
  29. import android.os.Bundle; 
  30. import android.os.Handler; 
  31. import android.os.IBinder; 
  32. import android.os.Message; 
  33. import android.util.Log; 
  34. import com.sinaapp.msdxblog.androidkit.thread.HandlerFactory; 
  35. import com.sinaapp.msdxblog.antihijacking.AntiConstants; 
  36. import com.sinaapp.msdxblog.antihijacking.view.AntiView; 
  37. /** 
  38. * @author Geek_Soledad (66704238@51uc.com) 
  39. */ 
  40. public class AntiService extends Service { 
  41. private boolean shouldLoop = false
  42. private Handler handler; 
  43. private ActivityManager am; 
  44. private PackageManager pm; 
  45. private Handler mainHandler; 
  46. private AntiView mAntiView; 
  47. private int circle = 2000
  48. @Override 
  49. public IBinder onBind(Intent intent) { 
  50. return null
  51. @Override 
  52. public void onStart(Intent intent, int startId) { 
  53. super.onStart(intent, startId); 
  54. startForeground(19901008new Notification()); 
  55. if (intent != null) { 
  56. circle = intent.getIntExtra(AntiConstants.CIRCLE, 2000); 
  57. Log.i("circle", circle + "ms"); 
  58. if (true == shouldLoop) { 
  59. return
  60. mAntiView = new AntiView(this); 
  61. mainHandler = new Handler() { 
  62. public void handleMessage(Message msg) { 
  63. String name = msg.getData().getString("name"); 
  64. mAntiView.setText(name); 
  65. }; 
  66. }; 
  67. pm = getPackageManager(); 
  68. shouldLoop = true
  69. am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
  70. handler = new Handler( 
  71. HandlerFactory.getHandlerLooperInOtherThread("anti")) { 
  72. @Override 
  73. public void handleMessage(Message msg) { 
  74. super.handleMessage(msg); 
  75. String packageName = am.getRunningTasks(1).get(0).topActivity 
  76. .getPackageName(); 
  77. try { 
  78. String progressName = pm.getApplicationLabel( 
  79. pm.getApplicationInfo(packageName, 
  80. PackageManager.GET_META_DATA)).toString(); 
  81. updateText(progressName); 
  82. catch (NameNotFoundException e) { 
  83. e.printStackTrace(); 
  84. if (shouldLoop) { 
  85. handler.sendEmptyMessageDelayed(0, circle); 
  86. }; 
  87. handler.sendEmptyMessage(0); 
  88. private void updateText(String name) { 
  89. Message message = new Message(); 
  90. Bundle data = new Bundle(); 
  91. data.putString("name", name); 
  92. message.setData(data); 
  93. mainHandler.sendMessage(message); 
  94. @Override 
  95. public void onDestroy() { 
  96. shouldLoop = false
  97. mAntiView.remove(); 
  98. super.onDestroy(); 
  99. }  

 

浮動窗口僅為一個簡單的textview,非此次的技術重點,在這里省略不講。
當然,從以上代碼也可以看出本程序只能防范通過Activity作為釣魚界面的程序,因為它是通過運行的頂層的Activity來獲取程序名稱的,對WooYun最近提到的另一個釣魚方法它還是無能為力的,關于這一點將在下次談。

責任編輯:chenqingxiang 來源: 360圖書館
相關推薦

2015-11-09 14:28:06

Adroid安全

2012-02-17 17:07:30

Android安全Activity劫持

2014-07-22 13:52:45

2014-05-27 14:12:49

AndroidActivitysingleTask

2012-12-25 13:45:37

2010-09-09 22:41:18

2017-03-23 09:13:56

2022-07-04 09:00:00

帳戶劫持信息安全攻擊

2015-11-09 14:46:49

Android安全

2011-03-22 14:57:07

2009-10-22 09:55:31

php應用程序安全防范

2016-10-10 13:51:42

2022-06-08 13:50:17

云計算云安全數據泄露

2022-06-13 13:37:07

云安全私有云云平臺

2013-02-01 13:47:47

Android開發Activity

2019-07-23 11:13:00

2010-07-09 14:30:18

SNMP Protoc

2011-03-11 17:23:03

2014-05-27 14:09:52

AndroidActivitysingleTask

2014-05-27 14:16:08

AndroidActivitysingleTask
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: wwwww在线观看| 欧美视频三区 | 99re超碰| 国产精品久久久久久婷婷天堂 | 亚洲欧美激情精品一区二区 | 精品一区二区免费视频 | 亚洲激情网站 | 99精品欧美一区二区三区综合在线 | 成人免费淫片aa视频免费 | 狠狠操狠狠操 | 成人国产一区二区三区精品麻豆 | 国产资源在线视频 | 99热在线观看精品 | 99精品国产一区二区青青牛奶 | 青青久草 | 欧美日韩一区二区三区四区五区 | 97av视频在线| 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 久久久久久蜜桃一区二区 | 欧美激情综合色综合啪啪五月 | 欧美日韩国产精品一区 | 日韩精品一区二区三区免费视频 | 黑人精品 | 国产精品国产精品国产专区不蜜 | 成人精品国产一区二区4080 | 欧美影院 | 天天插天天狠天天透 | 免费久久久久久 | 欧美一级特黄aaa大片在线观看 | 人人九九 | 久久久久免费精品国产 | 免费在线观看成人 | 久久久久久电影 | 毛片在线看片 | 欧美大片在线观看 | 天天看天天爽 | 欧美国产精品一区二区三区 | 亚洲精品乱码久久久久久按摩观 | 亚洲伊人精品酒店 | 国产精品免费一区二区三区四区 | 欧美一区二区三区视频 |