应用广告方式
1、小平台应用
由于其没有自己的广告系统,它们一般会嵌入第三方广告平台的SDK来显示广告,所以只需要分析第三方平台的SDK就行。
2、大平台应用
由于其拥有自己的广告平台,需要对其单独进行分析。
去广告的场景
1、游戏
2、视频
3、其他
广告类应用的特点
对于一些包含广告的应用,它首先会进行广告的拉取,如果拉取到广告就会正常显示,否则就会跳过广告,所以我们既可以从网络请求着手,也可以从网络请求代码着手。
去广告的方法
对于有root权限的手机
1. 修改设备的hosts文件,对广告网络请求进行拦截替换
把生成的过滤规则添加到设备的hosts文件中,Android中的hosts文件存放的目录是在根目录下的/etc/hosts
典型软件代表:
AdWay
https://f-droid.org/en/packages/org.adaway/
https://github.com/AdAway/AdAway
2. 针对广告 API 进行拦截
需要使用第三方hook框架来对广告API进行HOOK拦截,例如Xposed
典型代表:
MinMinGuard
https://github.com/chiehmin/MinMinGuard
3. 使用iptable拦截网络请求
通过iptables命令设置filter表,针对来源是广告的做REJECT或是DROP操作。
典型代表:
droidwall
https://github.com/CfYz/droidwall
对于无root权限的手机
1. 使用VPNService功能进行网络请求拦截,目前很多去广告应用都是这么干的。
典型代表:
https://github.com/M66B/NetGuard
2. apk包反编译,修改广告请求相关代码,然后重打包,可以更改替换广告请求地址,也可以修改网络请求代码逻辑,总之使其请求结果失败就行。
3. 设置电脑作为代理,修改电脑的hosts文件
4. 修改路由器过滤规则,添加地址屏蔽规则
总结
去广告的方法基本可以总结为两类:
一、对广告的网络请求进行拦截
网络拦截主要有三类:
修改host文件进行拦截
使用iptable拦截
使用代理进行拦截
使用代理有三种方式:
使用Android自带的VPNService
修改路由器过滤规则
设置电脑作为代理,修改电脑的hosts文件
二、对广告API代码调用进行拦截
广告API拦截分为静态方式和动态方式:
1. 静态方式:反编译APK源码,对广告相关代码进行静态的修改,然后重新打包
2. 动态方式:使用HOOK框架,对广告相关API的调用进行拦截
最后需要补充的是网络请求拦截的方式不仅可以进行广告过滤,而且可以进行网络管理、流量管理、网络安全控制、联网控制、WiFi安全通道等很多方面的实现,既然将手机的整个网络流量给控制了,具体可以干什么,大家也可想而知。
参考文章
http://t.cn/RECeFAt
http://blog.csdn.net/itleaks/article/details/39692391
https://www.jianshu.com/p/01f9f9954fc8
欢迎关注我的公众号:DroidMind
精品内容,独家发布