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

Enterprise Architect 中文经典教程 本文使用到的EA工程文件下载 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,... 阅读详情

不久前金山公司推出了手机毒霸,并声称手机毒霸具有了清除广告的功能,顿时在业内掀起轩然大波。国内众多靠广告生存的移动开发者们对金山的这一功能进行强烈的谴责,但另一方面,大多数用户都觉得这个功能挺不错的,毕竟国内市场上的应用里的广告真的实在太多了。

当然口水战不是本文关注的重点,只是对手机毒霸的去广告功能产生的极大的兴趣。这东西到底是怎么实现的呢?在好奇心的驱使下,@安卓安全小分队通过一些技术手段分析了一下手机毒霸(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.jar , ksremote.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()里主要做了一下几件事情。

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

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

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

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

    5) 如果发现自己不是"com.ijinshan.duba",就开始更新广告规则

    6) 替换当前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. 广告是怎么“去除”的

当用户点击时,注入的代码主要做了如下几件事情:

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

    2)将设成View.GONE。

 

总的来说,手机毒霸的去广告的功能的用户体验还是不错的。无需修改应用就能去除应用中的广告。而且目前市场上还未曾出现过第二款能去嵌入式广告的安全软件。

但同时手机毒霸也存在着一些不足和可以改进的空间:

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

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

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

   4)手机毒霸的去广告功能其实只是一个UI操作,广告SDK如果还在后台继续下载广告内容的话,依然会占用流量,也会占用一定的CPU。

 

另外,补充一点,手机毒霸的开发人员还真是大大滴狡猾,把好几个重要的.so和.jar文件都隐藏成了.mp3文件,然后打包进了apk。不过还是被我们发现了。

 

@安卓安全小分队

2013/02/28

S905L3B机顶盒刷Armbian:从安卓Root到eMMC全攻略 在嵌入式开发与轻量级服务器搭建中,ARM架构设备因其低功耗和高性价比备受关注。晶晨S905L3B作为运营商机顶盒的主流芯片,通过刷写Armbian系统可将其改造为ARM小服务器。其原理是利用Amlogic芯片的uboot引导机制,将Linux系统写入eMMC存储,从而脱离原厂安卓限制。这一方案的技术价值在于以极低成本实现Docker容器、下载机、轻量数据库等服务的部署,应用场景涵盖家庭网络广告过滤、智能家居控制、复古游戏机等。本文以CM311-1S为例,详细拆解从安卓9 Root到Armbian写入eMMC 阅读详情

相关推荐

CosyVoice 本地部署详细教程 手把手小白教程

本文提供了详细的CosyVoice本地部署教程,强调了避免中文名称和空格的重要性,并列出了必要的软件安装步骤,包括CUDA、cuDNN、Git和Miniconda。教程涵盖了从检查CUDA版本到下载模型和运行模型的全过程,确保用户能够顺利部署并使用CosyVoice。

huazn612的博客 2万+

手机毒霸去广告功能分析二:广告View的识别

手机毒霸对于广告View的判定规则分析 @安卓安全小分队 2013/2/5   上次我们提到手机毒霸获得root权限之后,生成一个root进程,然后通过进程注入的方式将广告应用中的广告检测出来,并且清除之。这次我们将详细介绍手机毒霸(v1.6.0)是如何找到广告View的。   一、广告View判定规则分析 接着上次的说,注入代码勾住了ActivityThrea

android_squad的专栏 864

51单片机超声波测距数码管显示并报警(Proteus 仿真)

HC-SR04超声波 实物图 使用方法 1、给TRIG端口至少10us 的高电平信号 2、模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回 3、有信号返回,ECHO端口会输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间 计算的话这里就不考虑温度的影响直接用声速340m/s Proteus仿真 HC-SR04可以用Proteus中的SRF04代替 下面附上代码 ...

m0_46254883的博客 1万+

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

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

AlienTech for better life!~ 1085

kettle9.0+ 连接Hadoop报错

kettle bug

x²+(y-√³x²)²=1的博客 1562

本地部署开源视频会议解决方案 Jitsi Meet 并实现外网访问

Jitsi Meet 是一款基于 WebRTC 技术的开源视频会议解决方案,它允许用户通过互联网进行高质量的视频通话、语音通话和文本聊天,非常适合用于在线教育、远程办公、团队协作等场景。本文将详细介绍如何利用 Docker 在本地部署 Jitsi Meet 并结合路由侠实现外网访问本地部署的 Jitsi Meet。

lyxnwct的博客 1946

金山手机毒霸屏蔽广告 19家广告平台联合抵制

【搜狐IT消息】9月14日消息,针对金山手机毒霸屏蔽应用广告一事,安沃、力美、多盟、捕鱼达人等19家移动开发者和移动广告平台发表联合声明,要求金山尽快更改其手机毒霸软件,立即停止破坏正常移动广告商业行为。  声明也斥责金山手机毒霸明显侵犯用户的行为。“金山手机毒霸通过获取用户Root权限篡改手机核心配置参数影响用户手机网络访问的行为超出了一般APP的权限,是明显的侵犯用户的行为。”  这19家移动...

心语家园 - www.xinyucn.cc 492

线性自抗扰控制(LADRC)系统算法框图

NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-优快云博客本文介绍了如何将ADRC自抗扰控制算法从Simulink仿真应用到PLC控制中,包括Simulink框图、TD微分器模型、MATLAB函数的使用、SCL控制代码,以及非线性状态误差反馈控制率的实现。提供了详细的MATLAB仿真步骤和PLC源代码链接。ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法-优快云博客。

RXXW_Dor的博客 1467

谈谈对金山手机毒霸事件的看法

近来,"金山手机毒霸"事件被吵的沸沸扬扬的。  所谓的金山手机毒霸事件,就是金山推出的以屏蔽Android平台广告为卖点的安全软件,可以清除软件内置广告。在推出测试版并且在未进行推广的情况下,每天都达到了数万次的装机量。  本人看了下相关文章的评论,除了少数人称损害了开发者的利益,大部分人都在拍手叫好。  由此可以看出,广大的Android平台手机使用者有多么“痛恨”

Wing的博客 7897

【Mode】Mode expansion monitors

对于宽带仿真,因为被支持的模式可能是波长的函数,因此,推荐在波长范围内增加频率的采样点数量去计算支持的波导模式分布或者光纤模式分布。对于宽带仿真,如果在被计算模式上的频率点的数量与通过 frequency-domain monitors 被测量的频率点的数量不匹配,这种情况是正常的。Mode expansion monitors 对于仿真偏振转换器是十分有用的,比如,在偏振转换器中,当你想要提取从输入模式到输出模式的转换效率,或者提取一个装置的 S 参数。给出了进入到被选择模式中的合透射率,

u011699626的博客 2762

[PCIe5.0] 2.2.7.1 TPH Rules

TPH 机制通过硬件提示优化数据流,适用于高性能计算和存储场景。

系统固件工程师 350

金山手机毒霸工作原理

本文章由Jack_Jia编写,转载请注明出处。   文章链接:http://blog.youkuaiyun.com/jiazhijun/article/details/8804402 作者:Jack_Jia    邮箱: 309zhijun@163.com 一、序言        金山手机毒霸(http://m.duba.com/)是金山网络推出的首款Android APP行为管理

移动安全研究和Android/iOS/小程序隐私合规 1万+

Agent应用实践之三 - 基础:AgentScope-ReActAgent源码解析

本章通过总结AgentScope的核心类,再通过分析ReActAgent调用大模型的底层源码原理。使我们基本了解了Agent的基本原理,这个实现方式与OpenClaw使用pi-mono的Agent基础框架是一致的。了解完ReActAgent的基本原理,下一章我们会将一下SpringBoot集成方式的代码原理,这两章是我们构建后续内容的基本框架。

代码让AI扣 471

欢迎360支持手机毒霸 治理恶意广告需要全行业努力

8月29日,手机毒霸发布了首个公测版后,获得了用户的高度好评。此前,恶意广告霸占通知栏,来源不明,无法清除、骚扰不断、偷窃隐私等行为长期得不到解决,用户苦不堪言。但是由于恶意广告不同于病毒木马,安全厂商如何界定等引发了行业的争论,手机毒霸也首次在行业中发布了“恶意广告四大标准”,得到开发者的响应与支持。 9月24日, 360宣布跟进手机毒霸打击恶意广告,手机毒霸表示真诚欢迎360微创新,共同

黄沙百战穿金甲,不破楼兰终不还。 1348

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

金山手机毒霸屏蔽内嵌广告引争议

【10XApp报道】据万普世纪传媒技术有限公司CEO黄波在微博(@万普世纪-黄波)上爆出,金山手机毒霸公然劫持所有App内广告,并转发业界手机广告负责人,引发众多争议。 多盟联合创始人@张鹤domob代表的一部分以移动广告的产业链,表示: 虽然禁止广告是不折不扣的噱头,但是这种公然挑战一个行业基本商业模式的行为还是让人震惊!没有人可以剥夺开发者的基本生存权利,开发者为大家提供免费的服务

APP运营人的专栏 @App运营人 260196192 709

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

金山手机毒霸回应:打击恶意广告绝不手软

  【搜狐IT消息】9月14日消息,针对今日19家移动开发者和移动广告平台联合声讨手机毒霸一事,金山手机毒霸今日回应称,恶意广告是危害智能手机行业发展的毒瘤,而金山手机毒霸打击恶意广告将绝不手软。     今日早些消息称,有消息称,金山手机毒霸以屏蔽广告为卖点,公然屏蔽拦截APP应用内的所有广告。对此,安沃、力美、多盟、捕鱼达人等19家移动开发者和移动广告平台发表联合声明,要求金山尽快更...

心语家园 - www.xinyucn.cc 364

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

手机毒霸

(2)com.ijinshan.duba:Def;广告规则和扫描病毒信息由该进程通过Provide;(2)com.ijinshan.duba.roo;该进程以ROOT身份运行,该进程提供了手机毒霸其;(4)第三方(injectedprocess)被;通过ptrace()注入到第三方程序的代码,ks;三、JAVA虚拟机hook实现原理;目前Android进程代

linuxheik的专栏 780

【小技巧】Android手机通知栏广告去除方法

最近给自己的i9k(已经老了的手机,但用起来蛮舒服的)安装了不少软件,在增加了上下班路上的娱乐的同时,烦恼也来了,这些软件在我的手机通知栏中弹出了N多广告,你一点,就开始下载! 手机自己本身的清除通知栏通知那个按钮对这些恶意的通知竟然不起作用(明显的欺软怕硬)!!自己手机安装的腾讯的手机管家也没提供这方面的处理功能! 不得已,度娘了一下,发现金山的手机毒霸竟然有清除软件恶意通知的功能!下载之,

DrifterJ's Stash 3501

手机毒霸去广告功能分析三:java代码(dex)注入

首先简单介绍一下进程注入的概念:进程注入就是将一段代码拷贝到目标进程,然后让目标进程执行这段代码的技术。由于这样的代码构造起来比较复杂,所以实际情况下,只将很少的代码注入到目标进程,而将真正做事的代码放到一个共享库中,即.so文件。被注入的那段代码只负责加载这个.so,并执行里面的函数。   由于.so中的函数是在目标进程中执行的,所以在.so中的函数可以修改目标进程空间的任何内存,当然也可...

iteye_2439的博客 222
上一篇: 安卓系统的安全哲学
下一篇: 手机root也安全
鲶鱼团队
博客等级 码龄14年 36粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值