`
android_squad
  • 浏览: 17612 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

手机毒霸去广告功能分析一:总体分析

阅读更多

       不久前金山公司推出了手机毒霸,并声称手机毒霸具有了清除广告的功能,顿时在业内掀起轩然大波。国内众多靠广告生存的移动开发者们对金山的这一功能进行强烈的谴责,但另一方面,大多数用户都觉得这个功能挺不错的,毕竟国内市场上的应用里的广告真的实在太多了。 当然口水战不是本文关注的重点,只是对手机毒霸的去广告功能产生的极大的兴趣。这东西到底是怎么实现的呢?在好奇心的驱使下,@安卓安全小分队通过一些技术手段分析了一下手机毒霸(v1.6.0)去广告功能的实现原理,在此与大家一起分享。如有错误的地方,敬请不吝赐教! 

       1. 手机毒霸去广告功能简介



      如图所示,当用户打开某款带有广告的应用后,广告在屏幕底部显示了出来,而此时在屏幕的左下角,出现的手机毒霸的一个小窗口。当用户点击这个
 小窗口里的叉叉,广告就会被去除。那这个毒霸的小窗口是手机毒霸放出来的一个悬浮窗口吗?是与不是,只需要看一下当前屏幕上View的层级关系即可。请出SDK自带工具hierarchyviewer后,可以发现这个小窗口不是悬浮的,它就是在广告应用的界面之中。到这里读者应该也猜到了,广告应用被手机毒霸注入了。这也是手机毒霸需要申请root权限才能去广告的原因。

 

        2.手机毒霸把什么注进了广告应用进程注入的通常做法是使用ptrace()来使目标进程加载一个预先准备好的.so,然后执行.so里的函数。那广告应用被注入时,加载了哪个.so呢?其实通过访问/proc节点就可以知道了。运行adb shell su 0 cat /proc/xxx/maps(其中xxx是广告应用的pid)。

51914000-51915000 r--s 00014000 b3:14 97609/data/data/com.ijinshan.duba/app_jar/ksremote.jar

5b31f000-5b32c000 rwxp 00000000 b3:14 97610/data/data/com.ijinshan.duba/app_ctrl/libksrootclient.so

5b353000-5b369000 r--p 00000000 b3:14 97612/data/data/com.ijinshan.duba/app_jar/ksremote.dex

5b369000-5b36b000 r--p 00016000 b3:14 97612/data/data/com.ijinshan.duba/app_jar/ksremote.dex

5b36b000-5b388000 r--p 00018000 b3:14 97612/data/data/com.ijinshan.duba/app_jar/ksremote.dex

 

可以看到广告应用被注入后,加载了3个文件: ksremote.jarksremote.dex 和libksrootclient.so。其中ksremote.jar 包含了两个文件:ksremote.dex 和 adclose.png。这个adclose.png就是刚才提到的关闭广告的小窗口图标
 了。顺便提一下,手机毒霸不仅注入普通应用进程,同时也注入了zygote,system_server以及com.android.systemui三个系统进程,但注入之后所做的事情跟注入普通应用进程是不一样的。

        3.注入后做了些什么想要实现Java层的注入,通常的做法是首先注入.so,然后通过.so加载.jar/.dex文件。libksrootclient.so 很显然担起了这个重任,并且跳到ksremote.dex中KsRemoteCtrl类的SetAppHook()中去执行。在SetAppHook()里主要做了一下几件事情。

a) 加载图片资源:adclose.png

b) 反射得到ActivityThread类的currentActivityThread()获得当前ActivityThread对象

c) 加载/data/data/com.ijinshan.duba/app_ctrl/libksrootclient.so,并调用native方法StartSocketHook()。这里是在Native层对网络操作函数加Hook。

d) 反射获得当前ActivityThread对象的mInitialApplication成员(Application 类型),从而获得当前包名(Context.getPackageName())

e) 如果发现自己不是"com.ijinshan.duba",就开始更新广告规则f) 替换当前ActivityThread中的mH(Handler类型)的mCallback,用金山自定义的一个callback对象来包裹过原callback并且替换原callback,从而起到hook作用。拦截的消息有:RESUME_ACTIVITY,PAUSE_ACTIVITY,RECEIVER,ACTIVITYBIND_APPLICATION在广告应用中某个Activity的onResume()触发前,注入的代码会先遍历当前Activity里的所有View,一旦找到广告View,就会调用addView()将添加到广告View的附近。同样在Activity的onPause()触发前,会做一些清理工作。

 

        4.广告是怎么“去除”的当用户点击时,注入的代码主要做了如下几件事情:

a)将目标广告view设成View.GONE,从而隐藏。

b)将 设成View.GONE。总的来说,手机毒霸的去广告的功能的用户体验还是不错的。无需修改应用就能去除应用中的广告。而且目前市场上还未曾出现过第二款能去嵌入式广告的安全软件。但同时手机毒霸也存在着一些不足和可以改进的空间:

    1)需要root,毕竟并不是所有的用户都会root自己的手机,而且root以后手机的风险将更大。

    2)仅能去除部分类型的广告。有些广告手机毒霸目前还检测不出来, 都没能显示。

    3)去除的广告有可能复发。因为有些广告插件会反复将广告View设成VISIBLE,而手机毒霸只是去除第一次的显示。

    4)手机毒霸的去广告功能其实只是一个UI操作,广告SDK如果还在后台继续下载广告内容的话,依然会占用流量,也会占用一定的CPU。另外,补充一点,手机毒霸的开发人员还真是大大滴狡猾,把好几个重要的.so和.jar文件都隐藏成了.mp3文件,然后打包进了apk。不过还是被我们发现了。

                                                                                                                                 @安卓安全小分队 

 

更多内容请关注 http://blog.sina.com.cn/u/3194858670 

 

  • 大小: 144.2 KB
  • 大小: 3.5 KB
分享到:
评论

相关推荐

    手机wrap网站仿手机毒霸网址大全手机触屏版手机wap导航网站模板

    综上所述,本资源涉及的是一个专门为手机设计的WAP导航网站模板,它模拟了“手机毒霸网址大全”的功能,提供了一种便捷的方式帮助用户快速访问常用网站。同时,该资源是通过百度网盘分享的形式提供的,用户可以下载...

    右下角老是弹出金山毒霸广告怎么办.docx

    在使用金山毒霸的过程中,不少用户遇到了一个令人困扰的问题——软件频繁地在屏幕右下角弹出各种广告窗口。这些广告不仅包括产品推荐(如垃圾清理、隐私清理、手机助手等),还可能包含新闻资讯等非直接相关的推广...

    ​金山毒霸WiFi共享功能怎么用.docx

    金山毒霸是一款知名的网络安全软件,它除了提供基础的病毒查杀、系统优化等功能外,还内置了实用的WiFi共享工具。这项功能使得用户能够将电脑的网络连接转化为WiFi热点,让其他设备(如手机、平板或另一台电脑)可以...

    金山毒霸的使用技巧

    金山毒霸作为一款功能全面的杀毒软件,在用户中广受欢迎。其不仅提供常规的病毒查杀功能,还包含一系列高效实用的使用技巧,本文将深入探讨这些技巧,帮助用户最大化金山毒霸的使用价值。 首先,金山毒霸的多种查杀...

    安卓手机管理软件对比.pptx

    手机毒霸同样具备这一功能,但安卓优化大师没有提供。 4. **广告拦截**:手机毒霸在这方面的表现最佳,能识别并拦截多种类型的广告。360手机卫士可以扫描出问题软件,但无法拦截内置广告。腾讯手机管家能拦截同类...

    C盘清理工具(取代金山毒霸VIP)

    标题中的"C盘清理工具(取代金山毒霸VIP)"指出,这是一个专用于清理C盘空间的软件,其功能可替代金山毒霸VIP的清理模块。在Windows操作系统中,C盘通常是系统盘,随着时间推移,安装的软件、系统更新、日志文件等会...

    vc++实现金山毒霸界面

    金山毒霸是一款知名的杀毒软件,其用户界面设计通常具有清晰的布局、直观的操作和丰富的功能,因此,通过实现这个项目,开发者能够学习到如何创建一个高效且用户友好的安全软件界面。 【压缩包子文件的文件列表】中...

    用vc++做的仿金山毒霸界面

    【标题】"用vc++做的仿金山毒霸界面"是一个示例项目,展示了如何使用Microsoft Visual C++(简称VC++)编程环境来实现一个类似金山毒霸的用户界面。这个项目对于初学者或者想要深入理解Windows GUI编程的人来说,是...

    怎么用金山毒霸禁止访问指定网站.docx

    金山毒霸作为一款知名的杀毒及系统优化软件,除了基本的安全防护功能外,还提供了一系列实用工具,其中包括广告过滤功能,该功能也可以用来禁止访问指定网站。 #### 一、金山毒霸简介 金山毒霸是一款由金山软件...

    去除平板电脑上广告的小技巧.docx

    - **手机金山毒霸**:适合不太熟悉技术的用户,安装后可以直接选择屏蔽广告的功能。 - **LBE安全大师**:适合有一定技术基础的用户,可以细致地为每个应用设置权限,如禁止联网、获取位置信息等。需要注意的是,...

    vc金山毒霸6界面源码(超酷界面)

    "金山毒霸6界面"可能是压缩包内的主要文件,它可能包含了一系列的源代码文件(如.cpp和.h)、资源文件(如.rc)、图像文件(如.ico或.bmp)以及其他可能用于构建界面的素材。源代码文件将展示如何使用MFC(Microsoft...

    新毒霸轻桌面怎么卸载.docx

    新毒霸轻桌面是一款由金山软件开发的桌面管理工具,旨在提供便捷的桌面整理和优化功能。然而,有时用户可能想要卸载或禁用它,尤其是当他们觉得它不再需要或者影响了系统的性能。以下是一些关于如何卸载或管理新毒霸...

    Linux为毒霸升级.pdf

    "Linux为毒霸升级.pdf" 本文档主要讲述了如何使用 Linux 系统来升级毒霸杀毒软件,解决了单位办公自动化中遇到的安全问题。文章分为三步骤,分别是统一杀毒软件版本、建立病毒库的镜像和共享病毒库。 第一步,统一...

    毒霸天气 城市代码表

    毒霸网址大全里的天气专栏的相关城市代码列表。map.put("北京","101010100"); map.put("海淀","101010200"); map.put("朝阳","101010300"); map.put("顺义","101010400"); map.put("怀柔","101010500"); map....

    86仿某某网手机毒霸址大全手机触屏版手机wap导航站模板.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(随意编程),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    杀毒软件金山毒霸10安装与使用图文教程.docx

    2. **模块化功能选择**:不同于以往一次性预装所有功能,新版金山毒霸10采取模块化设计,用户可以根据个人需求选择安装如垃圾清理、浏览器保护、广告过滤等功能。这种定制化的安装方式减少了不必要的资源占用,使...

    金山毒霸网路安全套装 用户手册.pdf

    金山毒霸网路安全套装 用户手册.pdf

    傅盛:从可牛毒霸到猎豹 一路都在建格局.docx

    这一决策在2021年的“3Q大战”中得到了验证,金山毒霸作为腾讯推荐的产品,用户量迅速增长,提振了团队士气。 然而,傅盛意识到,尽管在PC端取得了一定的成功,但随着移动互联网的崛起,PC市场的未来充满了不确定性...

Global site tag (gtag.js) - Google Analytics