Android视频应用去广告学习实践
注意:本文仅仅供学习研究用途
第一步 素材搜集
腾讯视频应用:http://download.csdn.net/detail/itleaks/7991795
反汇编工具:
apktool:http://pan.baidu.com/s/1kTqRhaR
签名工具:
signapk:http://download.csdn.net/detail/itleaks/7991631
測试签名文件:
testkey.pk8, testkey.x509.pem:http://download.csdn.net/detail/itleaks/7991827
第二步 反汇编:
apktool d TencentVideo.apk
运行完后你将发现当前文件夹新增了一个
关于反汇编内容,大家还能够參考我这篇博文:http://blog.csdn.net/itleaks/article/details/30342955
第三步 广告分析
眼下Android应用广告的方式有几种
1) 小平台应用---因为小平台应用没有能力做自己的广告系统,一般它们会嵌入广告发行商的SDK来显示广告,然后和广告发行商分成。这样的广告类型屏蔽有两种:
1. 找出主流广告发行商的广告地址,让其不可訪问。将这些网址加入到/etc/hosts里就可以。
实例:127.0.0.1 xxx.com
2. 广告要显示。肯定必须得存在某个view里。而一般这个view都是在sdk定义好了的,且是固定的。所以有了另外一种方法,找出主流广告发行商广告相应的view,将其摘掉。
2) 视频类大平台应用—因为视频类应用广告投放量大且其本身属于媒体且一般都是財主烧钱类型肯定会构建自己的广告系统。这样的广告类型不太可控,仅仅有从程序本身下手。视频类程序都有一个行为---广告载入失败直接播放视频。因此屏蔽方案就是让广告载入失败。
第四步 改动
以下以腾讯视频程序为例来实践怎样让其广告载入失败:
腾讯视频载入广告的逻辑在smali/com/tencent/ads/view/AdView.smali文件中,在该文件中搜索fail就可知道改动例如以下函数能够有所作为:
method private handleAdResponse(Lcom/tencent/ads/service/AdResponse;)V
………. invoke-static {v6}, Lcom/tencent/ads/utility/SLog;->v(Ljava/lang/String;)V .line 860
array-length v6, v0
//假设v6不等于0跳转至cond_2,等于0则继续往下走。继续往下走自然就
//会运行fireFailedEvent。我们的目标就是不管怎样都让其调用fireFailedEvent
//函数。怎么办呢?非常easy,去掉这个条件推断就可以达到目的
if-nez v6, :cond_2 .line 862
new-instance v6, Lcom/tencent/ads/view/ErrorCode; const/16 v7, 0x65 const-string v8, "no ad for this vid." invoke-direct {v6, v7, v8}, Lcom/tencent/ads/view/ErrorCode;-><init>(ILjava/lang/String;)V iput-object v6, p0, Lcom/tencent/ads/view/AdView;->mErrorCode:Lcom/tencent/ads/view/ErrorCode; .line 863
invoke-direct {p0}, Lcom/tencent/ads/view/AdView;->fireFailedEvent()V
改动后:
.line 860
array-length v6, v0 .line 862
new-instance v6, Lcom/tencent/ads/view/ErrorCode; const/16 v7, 0x65 const-string v8, "no ad for this vid." invoke-direct {v6, v7, v8}, Lcom/tencent/ads/view/ErrorCode;-><init>(ILjava/lang/String;)V iput-object v6, p0, Lcom/tencent/ads/view/AdView;->mErrorCode:Lcom/tencent/ads/view/ErrorCode; .line 863
invoke-direct {p0}, Lcom/tencent/ads/view/AdView;->fireFailedEvent()V
第五步 打包签名:
apktool b TencentVideo tmp.apk
java –jar signapk.jar testkey.x509.pem testkey.pk8 tmp.apk tmp_signed.apk
第六步安装使用:
因为改动后的apk使用的是test签名,和官方的签名冲突,必须保证你的手机上的腾讯视频软件已经卸载
adb install tmp_signed.apk
附录:
完整的操作步骤例如以下:
itleaks@itleaks-a:/tmp$ apktool d TencentVideo.apk
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Loading resource table from file: /home/itleaks/apktool/framework/1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values*/* XMLs...
I: Done.
I: Copying assets and libs...
itleaks@itleaks-a:/tmp$ vi TencentVideo/smali/com/tencent/ads/view/AdView.smali
itleaks@itleaks-a:/tmp$ apktool b TencentVideo/ tmp.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
I: Copying libs...
I: Building apk file...
itleaks@itleaks-a:/tmp$ java –jar signapk.jar testkey.x509.pem testkey.pk8 tmp.apk tmp_signed.apk
/********************************
* 本文来自博客 “爱踢门”
* 转载请标明出处:http://blog.csdn.net/itleaks
******************************************/
Android视频应用去广告学习实践的更多相关文章
- php解析优酷网上的视频资源去广告
1.过程原理解析: 一.准备工作 所谓工欲善其事必先利其器,做好破解的准备工作会令你事半功倍. 1.首先准备一个Http抓包工具,PC上推荐Fiddler或者Postman,iOS上推荐Surge 2 ...
- 【转】Android 破解视频App去除广告功能详解及解决办法总结
Android 破解视频App去除广告功能 作为一个屌丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个屌丝无法忍受了,作为一个程序猿看视频还要出现广告那就是打我脸,但是我 ...
- [转发]Android视频技术探索之旅:美团外卖商家端的实践
美团技术团队 2019-09-12 20:02:11 背景 2013年美团外卖成立,至今一直迅猛发展.随着外卖业务量级与日俱增,单一的文字和图片已无法满足商家的需求,商家迫切需要更丰富的商品描述手段吸 ...
- [android]亲自破解Flappy Bird(去广告+永生)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3544785.html 听说最近Flappy Bird很火,但 ...
- 新浪微博2.5.1 for Android 去广告
新浪微博更新到2.5.1版,就开始来广告了,伤不起啊... 亲,看到没,手机屏幕就那么一小块,还要往里面塞东西,另外是一个在后台运行的AdCenter服务. 所需要用到的工具有:apktool,JD- ...
- 【html】优酷视频去广告代码
相信大家都有这样的感受,看个视频有个30秒的广告,让人非常的不爽.同样对于我们前端童鞋来说,为了吸引用户,把制作好的视频嵌入到网页中,结果因为视频有30秒的广告不但没有吸引到多少用户,反而可能会流失一 ...
- Android apk去广告
韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 下载地址: [北方网通] [电信网通] [下载说明] 1 点击上面的地址,打开下载页面 ...
- 最新版WinRAR5.61去广告代码教程分享(仅供学习交流)
最新版WinRAR5.61去广告代码教程分享(仅供学习交流) 第一步:到WinRAR官网www.rarlab.com下载自己需要的版本,选择Chinese Simplified 64bit 安装即可. ...
- 【全网免费VIP观看】哔哩哔哩番剧解锁大会员-集合了优酷-爱奇艺-腾讯-芒果-乐视-ab站等全网vip视频免费破解去广告-高清普清电视观看-持续更新
哔哩哔哩番剧解锁大会员-集合了优酷-爱奇艺-腾讯-芒果-乐视-ab站等全网vip视频免费破解去广告-高清普清电视观看-持续更新 前言 突然想看电视,结果 没有VIP 又不想花钱,这免费的不久来啦. 示 ...
随机推荐
- Deleted pointer causes undefined behaviour
这文章是早期闲得用英文写的,删除了怪可惜的,贴出来证明自己会英文算了... Occasionally,on stackoverflow.com,I found a classic problem wh ...
- 简易对象垃圾回收框架 for Delphi
(一).缘起 1.1 我的一个出错程序 程序名称:呼叫处理模块的压力测试工具,分为客户端和服务端. 开发工具:Delhpi 5 相关技术:客户端通过与服务端建立Socket连接来模拟一组电话机的拨入. ...
- java.util.Timer分析源码了解原理
Timer中最主要由三个部分组成: 任务 TimerTask . 任务队列: TaskQueue queue 和 任务调试者:TimerThread thread 他们之间的关系可以通过下面图示: ...
- 细说javascript函数
javascript函数是一个比较奇怪的东西,接触一段时间你就会犯迷糊,弄不明白它到底是什么了.你是否会因为有的javascript函数没有名字而莫名其妙,是否会因为javascript函数的参数没有 ...
- SQL Server 2008 批量插入数据时报错
前几天在SQL Server 2008同步产品数据时,总是提示二进制文本被截断的错误,但是经过检查发现数据都符合格式要求. 百思不得其解,单独插入一条条数据则可以插入,但是批量导入则报错. 批量导入代 ...
- Java中的图形界面编程
前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些 ...
- onhashchange事件--司徒正美
onhashchange事件是针对AJAX无缝刷新导致后退键失效而产生的事件,因此属于一个够新的事件,浏览器兼容性如下: Feature Chrome Firefox IE Opera Safari ...
- Scala学习之延迟绑定
package com.swust.example object TraitDemo2 extends App{ //抽象类 abstract class Writer { def writeMess ...
- Spark学习之RDD的理解
转自:http://www.infoq.com/cn/articles/spark-core-rdd/ 感谢张逸老师的无私分享 RDD,全称为Resilient Distributed Dataset ...
- Responsive Design响应式网站设计心得笔记
这个词已经喊了很久了,一直都是小打小闹,没正经的做过大的响应式全站,这次终于有机会了.网站刚上线半个月,就要改版为响应式设计,支持手机/PC等各类终端显示浏览.今天把首页做好,并测试无误,这里把一些应 ...