jhan 发表于 2018-3-28 20:02

去除优酷、土豆的广告(详细,长文)

本帖最后由 jhan 于 2018-3-29 14:21 编辑

一、前言
因为自己的工作原因多多少少会接触到Android逆向相关的技术,小萌新第一次发帖分享自己的经验,大大们勿喷:lol。经过一个下午的奋斗及不屑努力终于去除了优酷和土豆的广告,话不多说直接开撸。

二、工具准备
1、AndroidKiller
2、JEB
3、Charles
4、Xposed
5、代{过}{滤}理机器人
6、root过的手机或者模拟器(我用的是nexus4)
7、HiJson


三、直接开撸(优酷)
1、去网上下载最新版的优酷视频APK文件。



2、将下载好的优酷APK文件使用AndroidKiller和JEB进行反编译,然后安装在手机上。
   
   
3、打开Charles进行抓取手机的数据包,在抓包之前呢,我来教大家在手机上安装Charles的证书(用于抓取手机的HTTPS链接)。
   1--第一步呢当然是打开Charles啦:lol,之后点击菜单栏的Help--》SSL proxying --》选择第三项(英文太长了{:1_925:})。
   
   2--选择第三项后会弹出一个框,这英文说的意思大致是:在手机上配置好HTTP的代{过}{滤}理(192.168.0.12:8888 这个是我的电脑的IP和端口      号 ),之后使用手机的浏览器访问 chls.pro/ssl 这个链接。

    3--接下来操作手机端,首先呢要和电脑在同一个网络中(使用手机的wifi连入电脑的网络,可以是电脑发射出的热点,也可以是路由器   发射出的热点),打开手机的设置,点击进入WLAN--》长按连入的wifi热点--》选择修改网络--》之后勾选“显示高级选择”框--》之后       配置代{过}{滤}理服务器的主机名(我这里填的是192.168.0.12,以你们自己的电脑IP为主)--》再来配置代{过}{滤}理服务器的端口(填入 8888)--》       点击保存按钮,使其生效--》接下来打开手机的浏览器,在地址栏输入 chls.pro/ssl点击访问--》之后会出现一个安装证书的请求--》随   便输入一个证书的名字--》点击安装(注:安装证书需要开启手机的锁屏功能)--》安装成功后就大功告成。(注:不同的手机进入         HTTP代{过}{滤}理的方式有可能不同,比如:长按连入的wifi热点 有可能是单击)
--》
   
--》


4、打开Charles,之后在打开手机端的优酷软件,在Charles上抓取到了很多的链接(无用的链接点击Charles的清除按钮,清除无关的链   接)进入软件后随便点击一个视频进行播放,发现有广告出现,之后Charles上也出现了抓取到的优酷视频的链接,之后分析优酷视频传   输的数据,链接比较多,需要一个一个的进去查看。

5、分析抓取到的链接,发现有几个可疑的链接,经分析发现并不是视频广告。


6、经过上面的一番折腾后,感觉使用Charles抓取不到优酷的视频广告地址的来源,那么造成这种原因的只有两种可能性,第一种就是:优酷的视频广告的地址来源的链接走的不是HTTP协议,而是其它的(比如:TCP),第二种可能性就是:优酷视频的广告地址来源的链接走的确实是HTTP协议,但是不走手机设置的网络代{过}{滤}理。经过思考,发现第二种可能性最高,于是为了验证这种想法,在手机的网络代{过}{滤}理中把端口设置为8889(Charles的是8888,若设置成8889的话会导致手机的部分应用无法上网),这时只要判断优酷视频在播放视频时是否可以正常播放,若可以正常播放这就说明优酷视频的视频广告地址来源的链接不会走手机系统设置的网络代{过}{滤}理。经过验证发现视频可以正常播放,优酷视频的视频广告地址来源的链接不会走手机系统设置的网络代{过}{滤}理。
   
7、这种情况下别以为我会束手无策:lol,我还有一个神器APP,它就是网络代{过}{滤}理神器“代{过}{滤}理机器人”APP{:1_918:},这个神器只有一点要求,手机必须root,否则无法使用,接下来我来传授我的功力给大家,小心不要走火入魔;www。
   1--“代{过}{滤}理机器人”这个APP,在网上百度一下就可以下载到了,这里就不贴图了,现在我们来看一下这个APP的功能页面。
   
    2--在这APP内我只教一个功能,其它功能自己去研究吧,首先呢,设置好Host(设置为电脑的IP,我的是192.168.0.12),接下来再设       置端口(设置为Charles的默认端口:8888),之后点击“代{过}{滤}理切换”按钮应用上刚才的配置,这就大功告成了,是不是很简单:lol。
   
8、做好上面的步骤之后,接下来就是抓包了,一样的流程,打开优酷视频APP,在Charles内清除无关紧要的链接,然后随便点击一个视频进行播放操作,之后在Charles内点击“停止抓包”的按钮,接下来就是一个一个的寻找疑似视频广告地址来源的链接,最终发现有一个链接(https://ups.youku.com/ups/...),这个网络连接返回的网络数据包是json格式的,经过解析这个链接,发现有一个叫"ad"的键(json的一个术语),经过观察里面有几个HTTP的地址,使用浏览器打开这些地址,发现果然是优酷的视频广告,这时去除广告的突破点来了,在java代码内肯定会解析服务器返回回来的数据,这时我们只要把广告的数据进行清空就行了。话不多说,接下来开工。
      
9、使用AndroidKiller搜索关键字getAd()(为什么搜索这个关键字呢,我来回答吧:其实做过Android开发的就知道了,解析json的数据一般会使用一些框架比如:fastjson、gosn之类的,这些框架使用起来很简单,只要对应的生成实体类就行了,解析的json数据一句代码搞定,这里的关键就是搜索实体类中的getAd方法,只要将它的返回值置空就行了,当然若未使用这些框架,却使用最原生的解析方式,那么我们去搜索 “ad” 关键字就行了 ,这里的双引号 不能省略,不能搜ad,而是搜“ad”,原因是为了过滤,避免搜索出一堆),好了,现在我们来看看搜索的结果,发现在VideoInfo实体类中含有getAd方法,接下来打开这个代码文件,发现是一堆smali代码,看不懂的朋友,可以使用JEB查看java代码(JEB工具的使用方法就不贴了,太累{:1_889:},自行百度使用方法),现在定位到getAd方法代码处,在代码内将返回值改为0就行了(添加代码 const/4 v0,0x0,代码的含义是将v0赋值为0,0x0是十六进制,这里要求大家懂一些smali的语法),好了,最终进行优酷视频APP的重打包,点击AndroidKiller的编译按钮,进行重打包操作,重打包成功后不要着急着先装,首先要将手机已装的优酷视频APP进行卸载(因为签名不一致的原因,会导致安装不上的),之后再进行安装重打包好的优酷视频APP,接下来进入APP随便点击一个视频进行播放,发现视频广告去掉了:victory::lol,当然这时问题也来了,重打包的优酷视频APP有部分功能运行不正常,甚至无法运行,这个原因我个人认为是由于APP签名的原因,比如QQ登录、微信登录应该是没办法用了,因为QQ和微信提供的SDK会要求一个类似于AppKey的东西,而这个东西需要依靠APP的签名才能生成,签名不一致导致AppKey也会失效,所以没办法使用了。最后我只能使用大招了,这时请另一个神器登场:lol,Xposed这个APP我就不多说了都会吧(这里我不会对Xposed的使用方法进行详解,一句话太累{:1_923:},自行百度吧,若需要我也可以开个贴来说说Xposed:Dweeqw),我们可以HOOK优酷视频APP从而修改getAd方法的返回值,这样就不会引起优酷视频APP的功能上的异常了。话不多说直接开撸。
--》
--》--》
10、这里呢我使用的是Eclipse(当然也可以使用Android Studio)进行Xposed的插件开发,接下来我就直接贴我编写的类了,详情如下。

11、编写插件APP之后,直接安装这个去除优酷视频广告的APP插件,安装成功之后,在Xpoesd软件中启用这个插件并重启手机使其生效,接下来安装正版的优酷视频APP,然后打开APP,随便播放一个视频,是不是发现广告不见啦,好,大功告成:victory:。
--》
四、去除土豆视频的广告
   首先呢我要说一点,就是土豆被优酷收购了,所以土豆返回的数据来源和优酷差不多,好了,废话不多说,直接开撸。
1、下载土豆视频的APP,反编译并且安装在手机上,随意打开一个视频进行播放(秦时丽人明月心)

2、使用Charles开始抓取土豆的广告视频链接的地址,是不是发现和优酷返回的json数据形式很相似呢(呵呵,一个尿性:lol)。


3、使用AndroidKiller直接搜索"getAd()"方法(注意:不要把双引号一并搜索了),发现竟然搜索不出来,说明土豆视频APP使用的是原生解析json的方式,所以转换一下直接搜索“ad”字符串(注意:连带双引号一并搜索),搜索出结果了吧:lol,发现有很多处都含有“ad”字符串,现在只有把所有的“ad”字符串替换成空字符串就行了,使其解析不出广告的数据,接下来就是重打包了,点击编译,重打包成功,再安装APP,运行正常,之后随便点击一个视频进行播放,是不是发现没有视频广告了呢:victory:。



-



五、多多支持萌新哟。
注:转载请标明出处。

610100 发表于 2018-3-28 21:22

想说一下,tcp和http貌似没有可比性吧?

TPC/IP协议是传输层协议,HTTP是应用层协议

yiyun2010 发表于 2018-3-28 20:13

学习了!!!{:1_936:}

棉花糖的女主人 发表于 2018-3-28 20:21

厉害了,谢谢楼主分享!

打酱油的店小五 发表于 2018-3-28 20:21

向大佬学习

z357369 发表于 2018-3-28 20:24

可以去软件更新吗~~

yryinrui 发表于 2018-3-28 20:30

emmmmm我还是坚持着全看完了

殇-No.1 发表于 2018-3-28 20:33

没有耐心看完!

天使3号 发表于 2018-3-28 20:48

好文章,支持楼主。就喜欢这种说浅不浅,说深不深的技术型有营养的优秀文章。

中华小熊猫 发表于 2018-3-28 20:48

好东西,有没有苹果的

很迷茫 发表于 2018-3-28 20:57

迅速围观
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 去除优酷、土豆的广告(详细,长文)