导读:本文介绍杀毒软件和病毒是如何获取通知栏上的所有通知,并且利用其信息杀死应用。

上一篇将过如何利用root权限来做一次静默安装,有的人会说,安装apk就安装呗,反正哥有金山手机卫士,哥有360主动防御……他们都会弹出通知告诉我的!

安装了新的应用,手机会发送广播,这些所谓的杀毒软件监听这些广播,然后弹出通知

好吧,我承认,他们在一定意义上还是有点用处的,我们先把这个问题放一放,先来说两句题外话

360和和金山手机卫士都有一个让广大android开发者比较蛋疼的一个功能:那就是检查广告通知!

当有通知栏有广告的时候,运行360执行检查,它会告诉你是哪个应用程序的广告(当然,这里并不局限于广告,他们是获得所有通知,然后过滤),然后他会让用户选择:不处理;关闭通知(实际上是把这个进程kill掉,整个软件停止运行);卸载此软件。

虽然我没有发布过android应用,但是我知道,靠软件赚钱的各位,本来收入已经够尴尬的了,再加上这些操蛋的软件提供这些操蛋的功能……哎

大家不喜欢收费软件那咱们就免费,点点广告支持一下总行吧,就是不点,你就放在那呗(当然,有的软件发起广告来没玩没了也挺操蛋)

说了这么多废话,我们就来看看那些所谓的杀毒软件是如何对付大家的

到了关键的地方,实际也就那么一行代码……又让大家失望了。。。

adb shell dumpsys notification

比如,我现在在我机器上面执行一下,输出的结果为

Current Notification Manager state:Notification List:NotificationRecord{41453c70 pkg=com.zdworks.android.toolbox id=7f090092 tag=null pri=0}icon=0x0 / <name unknown>contentIntent=nulldeleteIntent=nulltickerText=nullcontentView=nulldefaults=0x0flags=0x62sound=nullvibrate=nullledARGB=0x0 ledOnMS=0 ledOffMS=0NotificationRecord{415f48e8 pkg=com.zdworks.android.toolbox id=7f090080 tag=null pri=100}icon=0x7f0200fd / com.zdworks.android.toolbox:drawable/barttery_notify_iconcontentIntent=PendingIntent{41949028: PendingIntentRecord{412e3c20 com.zdworks.android.toolbox startActivity}}deleteIntent=nulltickerText=电量提示contentView=android.widget.RemoteViews@416e7b90defaults=0x0flags=0x22sound=nullvibrate=nullledARGB=0x0 ledOnMS=0 ledOffMS=0NotificationRecord{416db3e0 pkg=android id=1040414 tag=null pri=100}icon=0x10804f5 / android:drawable/stat_sys_adbcontentIntent=PendingIntent{41275de8: PendingIntentRecord{416dade8 android startActivity}}deleteIntent=nulltickerText=USB 调试已连接contentView=android.widget.RemoteViews@416daf40defaults=0x0flags=0x2sound=nullvibrate=nullledARGB=0x0 ledOnMS=0 ledOffMS=0NotificationRecord{41790de8 pkg=com.htc.android.psclient id=7f020010 tag=null pri=100}icon=0x7f020010 / com.htc.android.psclient:drawable/usb_to_pc_notifycontentIntent=PendingIntent{416c3e38: PendingIntentRecord{417bc968 com.htc.android.psclient startActivity}}deleteIntent=nulltickerText=nullcontentView=android.widget.RemoteViews@4169d128defaults=0x0flags=0x2sound=nullvibrate=nullledARGB=0x0 ledOnMS=0 ledOffMS=0mSoundNotification=nullmSound=com.android.server.NotificationPlayer@413e73b8mVibrateNotification=nullmDisabledNotifications=0x0mSystemReady=true

现在大家知道了吧,这么简单就把咱们给搞定了

下面的事情就简单

1.想办法获取这段log

2.提取包名

3.根据数据库中的黑名单白名单不同处理

4.你的应用很可能在黑名单中,最后的结果也基本是进程被杀死

(这里就不演示3、4部分了,只演示1、2)

testButton = (Button)findViewById(R.id.exec);
testButton.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {String[] commands = {"dumpsys notification"};Process process = null;DataOutputStream dataOutputStream = null;try {process = Runtime.getRuntime().exec("su");dataOutputStream = new DataOutputStream(process.getOutputStream());int length = commands.length;for (int i = 0; i < length; i++) {Log.e(TAG, "commands[" + i + "]:" + commands[i]);dataOutputStream.writeBytes(commands[i] + "\n");}dataOutputStream.writeBytes("exit\n");dataOutputStream.flush();process.waitFor();BufferedReader reader = null;reader = new BufferedReader(new InputStreamReader(process.getInputStream()));  String line = "";List<String> lineList = new ArrayList<String>();final StringBuilder log = new StringBuilder();  String separator = System.getProperty("line.separator");Pattern pattern = Pattern.compile("pkg=[^\\s]+");while ((line = reader.readLine()) != null) {if(line != null && line.trim().startsWith("NotificationRecord")){Matcher matcher = pattern.matcher(line);if(matcher.find()){lineList.add(matcher.group());}else{Log.e(TAG, "what's this?!");}}log.append(line);log.append(separator);}Log.v(TAG, "log:" + log.toString());int size = lineList.size();for (int i = 0; i < size; i++) {Log.i(TAG, "app:" + lineList.get(i));}} catch (Exception e) {Log.e(TAG, "copy fail", e);} finally {try {if (dataOutputStream != null) {dataOutputStream.close();}process.destroy();} catch (Exception e) {}}Log.v(TAG, "finish");}});
}

上面的这段代码实在没什么技术含量,让给位网友见笑了

按顺序简单解释一下

首先,我们先执行dumpsys notification这条命令,这在上一期的代码中已经有了

然后通过process.getInputStream()获得其输出按行读取,这里只关心类似于下面这种的log

NotificationRecord{40dacad8 pkg=com.htc.android.psclient id=7f020010 tag=null pri=100}

然后从中提取出包名即可

其中的正则就是为了提取包名用的,想了解正则的同学可以看我的正则教程

深入入门正则表达式(java)

这里我执行的结果为(看来有一个应用提示了两个通知)

app:pkg=com.zdworks.android.toolbox
app:pkg=com.zdworks.android.toolbox
app:pkg=android
app:pkg=com.htc.android.psclient 

之后的工作就是把这个list展示给用户,让用户去选择了

既然360可以这样,病毒为什么不可以呢?病毒Fake.apk可以在半夜偷偷安装应用Real.apk,几秒钟后,Fake.apk执行上面的这些操作,获取360,然后kill!爽!

大家有兴趣可以反编译一下金山和360,他们基本就是这么干的,我发现360比较坏,至于为什么这么说,大家自己去发现吧

ps:我使用的是卡巴斯基免费版,杀毒软件是不会去管有没有广告推送的,广告不是病毒,杀毒软件也不应该干一些不该干的事!

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

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

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

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

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

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

android安全问题(二) 程序锁

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

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

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

android手机root后的安全问题 (二)相关推荐

  1. Android手机Root后的安全问题汇总

    本帖转自: http://su1216.iteye.com/ http://blog.csdn.net/su1216/ 前提:你有一部已经root的android手机,并且手机中有busybox和su ...

  2. android ota权限,Android手机Root后不能接收OTA?

    如今Android手机买回来之后第一件事除了检查手机是否有缺陷之后就是取得Android系统的ROOT权限.而现在网络上充斥着各种ROOT权限取得的方法,用户在家里就能够自己刷机升级,目前大多数的安致 ...

  3. 记录手机root后安装xposed框架后变砖无法开机的问题

    问题及解决方法 机型说明 问题描述 自己造的孽自己承受 刷入TWRP工具(简单来说就是下载TWRP工具) 正式将工具刷入手机替换掉原来官方Recovery 将前面提到的Xposed框架卸载包刷入手机 ...

  4. 如何获得Android手机Root权限(转http://www.gphans.com/forum/183)

    如何获得Android手机Root权限 由 gphans 于 周一, 11/02/2009 - 15:10 提交. 使用技巧 疑问一:Root权限是什么? 疑问二:获取Root权限有什么用? 疑问三: ...

  5. Android权限管理原理,Android手机Root授权原理细节全解析

    首先关于Root的方式,这里不做详解,可以有很多漏洞,比如利用uid溢出后归为0,得到Root权限,然后操作文件系统等. 手机Root后,最重要的是,给手机安装了su程序和superuser apk. ...

  6. 手机root后安装xposed框架后,如何启动云闪付?

    手机root后启动云闪付. 手机root后安装xposed框架后,如何启动云闪付? 一.启动闪退 1.解决方案一(失败) 2.解决方案二(失败) 3.解决方案三(未完成实验) 4.解决方案四(成功) ...

  7. Android手机Root失败的五大重要原因

    ROOT就是根目录,Android系统的ROOT可以解释为开放根目录权限(最高管理员权限).由于Android的开放性,很多内置的应用被 "深深"的植入系统之中无法删除,ROOT获 ...

  8. 安卓手机ROOT后怎么删除系统自带软件?

    智能手机因为具备丰富的功能在如今这个市场中是备受大家欢迎,不管是苹果手机还是安卓手机.而对于安卓手机用户们而言,安卓系统的开放性也是备受很多机友的欢迎,但是在使用的过程中大家也有一些苦恼,那就是很多安 ...

  9. root卡顿解决方法,手机root后很卡

    手机root后屏卡顿 相机卡屏 系统更新出错,求解 楼主你好! 下面的流程是手机root后屏卡顿相机卡屏系统更新出错的解决方法! 1.如果用一些软件root之后已经造成了卡顿及掉相机问题,可以使用RE ...

最新文章

  1. Numpy入门教程:06. 排序,搜索和计数
  2. 《JUnit实战(第2版)》—第1章1.7节小结
  3. china-pub赠书啦,超值畅销书5本
  4. springcloud-06-feign的使用
  5. 如何清除SQL数据库日志,清除后对数据库有什么影响
  6. 这才是真正的 Git——分支合并
  7. Java面试常见算法
  8. 细节真的能决定成败么?
  9. Linux下C++ Socket编程实例
  10. work of 1/5/2016
  11. Atitit 技术领域之道 技术领域的艺术attilax著 v2 s66.docx Atitit 技术领域之道 attilax著 1. 分类 1 1.1. 按照架构 web cs桌面 1 1.2.
  12. 偏微分方程的引入及概述
  13. CodeSmith注册
  14. SAP《MM学习指南》操作记录----仓库盘点
  15. 空气阻力对乒乓球运动轨迹的影响
  16. 从What到How,大数据实战攻略秘笈
  17. win10 计算机重启,win10电脑自动重启
  18. Belief Propagation信念传播算法详解
  19. JeecgBoot 2.4.2 积木报表版本发布,基于SpringBoot的低代码平台
  20. oracle 连接组件,[2021] node连接oracle数据库示例[使用oracle官方组件]

热门文章

  1. KindEditor介绍
  2. Neper软件介绍及安装视频教程
  3. 120幅中国近现代国画大师真迹长沙展出
  4. java使用jacob.jar实现文字转语音
  5. STM32 SPI 模拟实现 W25X16读写 代码
  6. [转载]EDID和TV OSD的使用说明
  7. 将不同名字照片分类,然后创建同名文件夹,之后再修改文件夹中的照片名
  8. Web前端开发精品课HTML CSS JavaScript基础教程第六章课后编程题答案
  9. jQ 通过URL完成页面跳转传值
  10. GitHub标星65k,阿里面试核心技术手册,我不允许还有人没看过!