Android 破解視頻App去除廣告功能詳解及解決辦法總結(jié)
Android 破解視頻App去除廣告功能
作為一個屌絲程序猿也有追劇的時候,但是當打開視頻app的時候,那些超長的廣告已經(jīng)讓我這個屌絲無法忍受了,作為一個程序猿看視頻還要出現(xiàn)廣告那就是打我臉,但是我有沒有錢買會員,只能靠著畢生技能去耍耍去除廣告了。下面就來介紹一下如何進行視頻廣告的去除。
一、視頻廣告播放原理
首先我們需要了解的一個基本知識點那就是廣告其實也是一段視頻,那么他肯定有請求地址和播放地址。那么我們的思路就來了,如果能夠得到這些地址的話,我們就可以去除廣告了,為什么呢?因為我們知道所有的網(wǎng)絡(luò)請求最終會走系統(tǒng)的hosts文件,在這個文件中記錄了很多ip地址和域名的映射關(guān)系,系統(tǒng)的每一次網(wǎng)絡(luò)請求都會先去查找系統(tǒng)的hosts文件,如果發(fā)現(xiàn)請求的域名在這里有,就是用域名對應的ip地址進行訪問了,所以可以看到hosts文件其實相當于本地的一個簡單的DNS功能文件。如果我們有了視頻廣告請求地址,那么就可以修改hosts文件,將廣告請求地址的域名映射成本機地址127.0.0.1,那么這樣就肯定會出現(xiàn)廣告請求錯誤,本地播放廣告錯誤,就會直接跳過廣告了。當然具體的方式有三種:
第一種方式:設(shè)備root之后,修改設(shè)備的hosts文件
缺點:設(shè)備需要root
優(yōu)點:一次修改,終身受用,一機在手,天下我有!
第二種方式:設(shè)備無root,可以設(shè)置電腦作為代理,修改電腦的hosts文件
缺點:設(shè)備播放視頻必須依賴于電腦代理,不方便
優(yōu)點:無需進行設(shè)備root
第三種方式:修改路由器過濾規(guī)則,添加地址屏蔽規(guī)則
缺點:設(shè)備播放視頻必須依賴于路由器的局域網(wǎng)內(nèi),不方便
優(yōu)點:無需進行設(shè)備root
但是這種方式可以受益多人使用,一般這種方式用于家庭的局域網(wǎng)內(nèi),這樣一家人看視頻都沒有廣告了。
二、破解app獲取廣告域名
上面分析了技術(shù)原理,那么下面就要來開始破解了,因為看到上面的原理之后發(fā)現(xiàn)最關(guān)鍵的就是如何得到視頻廣告的地址?在我所知道的就這么幾種方式:
第一種:使用抓包工具進行抓包
這種方式難度在于要分析每個地址的請求信息
第二種:破解具體視頻app
這種方式成本過大,耗時很久
第三種:從市場中找一個可以過濾廣告的app進行破解
這種方式是最方便的,也是最靠譜的。
下面咋們?nèi)ナ袌鏊岩幌乱曨l廣告過濾的app,結(jié)果搜到了一個app名為:凈網(wǎng)大師

下面在來分析一下,這個app的去除廣告原理:
當有了視頻廣告的播放地址,方式還是很多的,一種是設(shè)備root之后修改hosts文件或者是攔截網(wǎng)絡(luò)請求進行過濾,一種是非root設(shè)備采用VPNService功能進行網(wǎng)絡(luò)請求攔截。
從他的界面看來他是用了第二種方式,而對于Android中VPN開發(fā)不熟的同學可以自己去網(wǎng)上搜一些資料,就是注冊一個VPNService,然后獲取到系統(tǒng)的VPN權(quán)限,然后設(shè)備的網(wǎng)絡(luò)請求都會通過這個Service,只要在這個Service中做處理就可以了。那么這個app中肯定有一個過濾庫用來存放市面上所有視頻播放的廣告地址,這也是我們破解的入口。那么下面就來進行破解操作了。
首先還是使用apktool工具進行反編譯,幸運的是他沒有做應用加固,反編譯很順利。不過這里最好使用一個jadx工具,他是一個可視化反編譯工具,比較方便,查看他的AndroidManifest.xml文件,找到VPNService聲明:

然后去查看VPNRouterService類實現(xiàn):

然后可以全局搜一下Builder這個名稱,因為構(gòu)建VPN必須使用到這個類:

這段代碼就是開始構(gòu)建VPNService了。下面繼續(xù)深入跟進,最終到了run方法中:

然后在看一下startTunnel方法:

好了,這是一個native方法,下面繼續(xù)來分析so文件了:

使用IDA工具打開,查看這個so文件內(nèi)容:

發(fā)現(xiàn)這個方法中做了一些初始化工作,那么猜想視頻廣告地址應該是保存在一個加密的文件中,而且最有可能是一個數(shù)據(jù)庫文件,同時這個過濾地址可以支持服務端更新,因為現(xiàn)在視頻廣告地址發(fā)生了改變了,這個app也是需要感知的。可以看到的確有一個入口可以更新過濾規(guī)則:

通過上面的代碼可以分析到過濾規(guī)則文件加密了,那么可以進入這個加密方法中看看,這里使用IDA的F5功能鍵得到匯編對應的C代碼:

這里就可以清晰的看到了,在這個應用的沙盒中有一個txt文件,這個文件中保存了數(shù)據(jù)庫文件的路徑:

然后我們把這個文件導出來,記得他為了掩人耳目,把db后綴名刪了,我們需要手動的加上后綴名:v_0.0.32.db文件,可惜的是打開文件之后發(fā)現(xiàn)報錯:

因為這個數(shù)據(jù)庫文件是加密的,加密算法是AES:

看到這里,我們可能想到了,需要動態(tài)調(diào)試so得到這個加密的密碼了,但是這里不這么干,因為我很懶,動態(tài)調(diào)試感覺老費勁了,所以就發(fā)現(xiàn)了一個捷徑,我的思路是這樣的:
前面分析了這個app過濾廣告的原理是借助于VPN進行攔截請求,那么攔截到請求得到指定域名肯定是去和過濾規(guī)則進行比較判斷的,因為這些規(guī)則是放在數(shù)據(jù)庫中的,所以不可能每次都是去查詢數(shù)據(jù)庫中的記錄進行比較,這樣效率會很低下的,所以這里在想他為了提高效率,應該做了一個緩存池用來存放命中的域名地址。那么就好辦了,如果做了緩存池的話,域名地址就是一些字符串值了,從另一方面在本地他應該也有默認的一些字符串地址,防止更新過濾規(guī)則失敗作為備用的,從這兩方面可以知道應該本地有一些廣告域名字符串內(nèi)容。
在IDA中我們可以使用Shift+F12查看一個so文件中的字符串值:

我們可以看到這里有很多字符串的值,可以往下查看,我們關(guān)注的內(nèi)容是域名字符串,那么域名字符串的值有一個特點就是以.com結(jié)尾的,所以我們可以這么干,把這些內(nèi)容復制出來放到一個txt文件中:

然后寫一個簡單的程序進行過了即可,忘記了Python腳本了,只能靠著老本行的Java語言寫了:

代碼很簡單的,就是讀取每一行內(nèi)容,然后進行字符串過濾,得到域名,因為后面我們得到這個域名之后也是要添加到hosts文件中,所以就直接在這里構(gòu)造一個ip地址和域名的映射關(guān)系了。運行程序之后,生成的文件內(nèi)容如下:

感覺有點像是各家視頻廣告請求的域名地址了。
三、修改hosts文件進行驗證
那么到這里我們就通過靜態(tài)方式破解了凈網(wǎng)大師得到了市面上視頻app播放廣告的域名地址了,下面就趕緊操作一下看看效果,這里為了方便,手上正好有一個root的手機,所以直接把上面生成的規(guī)則加到設(shè)備的hosts文件中,Android中的hosts文件存放的目錄是在根目錄下的 /etc/hosts

然后咋們添加成功之后,就立馬來體驗一下,這里選擇了愛奇藝和騰訊視頻作為案例操作一下:
首先來看一下愛奇藝的廣告過濾效果:

看到了,這里點了兩個熱門視頻都是沒有廣告的,再來看一下騰訊視頻:

看到啦,也是沒有廣告了,看來是成功了,還有其他視頻app,感情去的同學可以自己去嘗試了。這里就不在演示了。
說明:
有的同學會好奇,既然這個app可以做到過濾廣告,那還破解干嘛,直接用就可以了呀,其實這么想就是對程序猿的侮辱,其次是這個app使用了vpn功能,怎么說了,個人對這個功能和app并不怎么放心,感覺設(shè)備的所有網(wǎng)絡(luò)請求都能被他攔截到是件多么恐怖的事,最重要的一點是,本文使用了root設(shè)備之后修改hosts文件實現(xiàn)的,如果哪天想通過修改路由器中添加規(guī)則,電腦掛代理方式操作那不就扯淡了,你都沒有域名怎么辦,所以不管怎么樣都得破解這個app得到最終的域名,這樣才保險,后續(xù)自己想怎么搞就怎么搞!
四、知識總結(jié)和回顧
到這里我們就完美的過濾了市面上所有視頻app的廣告邏輯了,在整個過程中我們可以看到有大部分的猜想,有了猜想然后才去進行實踐邏輯的,所以說在逆向領(lǐng)域有時候需要豐富的經(jīng)驗,有時候也要敢大膽的猜想。下面來總結(jié)一下我們的操作流程:
第一步:了解現(xiàn)階段視頻廣告播放的原理
現(xiàn)在移動端app的廣告播放原理都是將廣告短片和視頻內(nèi)容分開的,那么廣告短片應該也是在線請求一個播放地址,如果要是能夠得到這個播放地址就可以完成剔除工作。
第二步:有了廣告域名如何進行廣告過濾
這個需要了解系統(tǒng)在請求網(wǎng)絡(luò)的時候的原理,其實是先去找本機的hosts文件,看看請求的域名有沒有對應的ip地址,如果有就直接使用ip地址作為請求地址了,那么這里的思路就是可以修改hosts文件來做到廣告域名請求的攔截工作,也就是在hosts文件中添加廣告請求域名的映射關(guān)系,把域名指向本地ip地址:127.0.0.1即可
第三步:如何獲取視頻廣告的請求域名
其實這里有多種方式:一種是進行網(wǎng)絡(luò)抓包,一種是通過破解視頻app,一種是借助其他家app。而本文中就是借助了第三方app叫做凈網(wǎng)大師來獲取到的域名,這時候就需要進行破解凈網(wǎng)大師app了,而這個就是本文的一個重點。在破解的過程中我們一部分借助的是逆向經(jīng)驗一部分是借助的大膽猜想,比如猜想他域名肯定會在本地有一個字符串池保存,這個是本次破解的關(guān)鍵步驟。
第四步:有了域名如何進行過濾廣告
這里因為前面了解了系統(tǒng)請求的原理,那么就可以有三種方式:一種是修改設(shè)備的hosts文件,前提是設(shè)備需要進行root;一種是通過掛代理,修改代理機器的hosts文件;一種是修改路由器的過濾規(guī)則;這三種方式各有優(yōu)缺點。
嚴重聲明:本文介紹的知識點完全是從一個技術(shù)分享角度出發(fā),絕非用于任何商業(yè)活動和用途,如果涉及到任何法律問題將由操作者本人負責。本文作者將不負責任何法律責任!也請各位同學秉著技術(shù)角度出發(fā)的原則,切勿用于商業(yè)中!
視頻App如何規(guī)避這種操作:作為視頻App廣告是其生存之本,所以對于這種操作的用戶,因為自己也要做一些防護策略,可以本地啟動一個后臺服務,通過ping命令來檢測當前廣告域名對應的ip地址,如果發(fā)現(xiàn)不是自己域名對應的ip地址,那么就不讓其看視頻內(nèi)容,但是這種方式是不是可行還有待驗證!
六、總結(jié)
本文主要介紹的內(nèi)容還是破解相關(guān)的知識點,而本文在破解的過程中用到了大量的猜想,然后通過實踐去證明猜想,有時候多一些猜想也會讓破解過程變得更加便捷,同時通過本文之后,小編以后看視頻在也不用看廣告了。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Android實現(xiàn)加載廣告圖片和倒計時的開屏布局
- Android利用ViewPager實現(xiàn)滑動廣告板實例源碼
- Android實現(xiàn)Banner界面廣告圖片循環(huán)輪播(包括實現(xiàn)手動滑動循環(huán))
- Android自定義View實現(xiàn)廣告信息上下滾動效果
- Android筆記之:App應用之發(fā)布各廣告平臺版本的詳解
- Android實現(xiàn)廣告圖片輪播效果
- Android編程實現(xiàn)ListView頭部ViewPager廣告輪詢圖效果
- Android新聞廣告條滾動效果
- Android 應用啟動歡迎界面廣告的實現(xiàn)實例
- Android開啟新線程實現(xiàn)電子廣告牌項目
相關(guān)文章
淺談Android輕量級的數(shù)據(jù)緩存框架RxCache
本篇文章主要介紹了淺談Android輕量級的數(shù)據(jù)緩存框架RxCache,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
WebView的介紹與簡單實現(xiàn)Android和H5互調(diào)的方法
這篇文章主要給大家介紹了關(guān)于WebView與簡單實現(xiàn)Android和H5互調(diào)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-05-05
Android使用Canvas?2D實現(xiàn)循環(huán)菜單效果
循環(huán)菜單有很多種自定義方式,我們可以利用ViewPager或者RecyclerView?+?CarouselLayoutManager?或者RecyclerView?+?PageSnapHelper來實現(xiàn)這種效果,今天我們使用Canvas?2D來實現(xiàn)這種效果,感興趣的朋友可以參考下2024-01-01
ListView的Adapter使用 之 初學ArrayAdapter String
ListView是Android中經(jīng)常會使用的東西,綁定數(shù)據(jù)對于初學者來說,尤其是剛接觸編程的人來說,往往會覺得很難理解,我上大二的時候?qū)W的java,但是基本上相當于沒有學,什么都沒寫過,真正接觸編程就是開始上手學android,把這些記錄下來,自己可以回頭看下,也可以讓新手更好的理解2013-06-06
Android中將一個圖片切割成多個圖片的實現(xiàn)方法
有種場景,我們想將一個圖片切割成多個圖片。比如我們在開發(fā)一個拼圖的游戲,就首先要對圖片進行切割2013-05-05
Android開發(fā)之TabHost選項卡及相關(guān)疑難解決方法
這篇文章主要介紹了Android開發(fā)之TabHost選項卡及相關(guān)疑難解決方法,結(jié)合實例形式較為詳細的分析了Android開發(fā)中TabHost選項卡的常見用法以及相關(guān)疑難問題解決方法,需要的朋友可以參考下2019-03-03
Android開發(fā)實現(xiàn)模仿360二維碼掃描功能實例詳解
這篇文章主要介紹了Android開發(fā)實現(xiàn)模仿360二維碼掃描功能,結(jié)合實例形式詳細分析了Android開發(fā)二維碼掃描功能所涉及的zxing開源項目文件使用方法及具體掃碼功能相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-10-10

