Android逆向技巧——去除開屏廣告
相信不少網(wǎng)友都有相似的經(jīng)歷:很多app剛開始用的時(shí)候很清爽,沒啥廣告;等用了一段時(shí)間后廠家就開始大量上廣告的了,我個(gè)人覺得這是典型的利用大數(shù)據(jù)殺熟:廠家看到用戶的月活、日活都挺高的,說明用戶對(duì)自己的app已經(jīng)產(chǎn)生依賴,此時(shí)可以開始“殺豬吃肉”了!開屏廣告是我最討厭的一種:點(diǎn)開app就被逼著看,而且非會(huì)員一般要5秒后才能跳過,不想被逼著看廣告的就花錢充會(huì)員;怎么才能不花錢去掉app的開屏廣告了?
先簡單回顧一下windows下PE文件的執(zhí)行原理:PE文件的文件頭有個(gè)字段叫AddressOfEntryPoint,會(huì)標(biāo)記程序代碼的入口。用戶雙擊exe后,windows操作系統(tǒng)會(huì)解析這個(gè)字段,找到標(biāo)記的程序入口,然后跳轉(zhuǎn)到這里去執(zhí)行代碼;為了避開程序自身的CRC檢測,很多外掛都選擇了入口點(diǎn)注入這種方式,原因很簡單:入口點(diǎn)這里程序自己的代碼都還沒開始執(zhí)行了,這時(shí)的exe就像一只待宰羔羊,任憑外掛干任何事都無法反抗!同理:android也有類似的入口點(diǎn),用戶雙擊app后,android也會(huì)跳轉(zhuǎn)到app標(biāo)記的入口點(diǎn)去執(zhí)行,那么這個(gè)入口點(diǎn)(注意:嚴(yán)格講這應(yīng)該是入口界面,和入口點(diǎn)不是一個(gè)概念)在哪了?----- AndroidMainfest.xml文件有兩個(gè)標(biāo)簽頁,如下:
<action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/>
凡是看到這兩個(gè)標(biāo)簽一起出現(xiàn)的就是app的入口activity了,用戶點(diǎn)開app肯定會(huì)從這里指定的入口開始執(zhí)行。這里以某云筆記為例,其原始入口如下:
<activity android:launchMode="singleTop" android:name="com.xxxx.note.activity2.SplashActivity" android:screenOrientation="portrait" android:theme="@style/FullScreen"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
所以這里實(shí)錘:開屏廣告就是從這里開始看的!所以現(xiàn)在的需求就編變成了繞過這個(gè)廣告Activity,直接到我們期望的Activity!這又該怎么操作了?這里先找到我們期望的activity,如下:我期望打開app就能直接開到筆記的列表,而不是開屏廣告,所以這里可以先在打開期望的界面,然后用“adb shell dumpsys activity top”查看這個(gè)頁面的activity:
我期望的activity是“activity2.MainActivity”,所以在android killer打開這個(gè)apl,在AndroidMainfest.xml中找到這個(gè)activity,
<activity android:configChanges="keyboardHidden|orientation" android:exported="true" android:launchMode="singleTop" android:name="com.xxxx.note.activity2.MainActivity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden"/>
接下來的工作就好走了,先找到LAUNCHER的activity,把上面那兩個(gè)標(biāo)簽剪切,復(fù)制到我們期望的activity下面即可,如下:
<activity android:configChanges="keyboardHidden|orientation" android:exported="true" android:launchMode="singleTop" android:name="com.xxxx.note.activity2.MainActivity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
然后重新用android killer編譯打包,再安裝新的apk即可!
總結(jié):這里本質(zhì)是通過配置文件,改變app的入口activity!
以上就是Android逆向技巧——去除開屏廣告的詳細(xì)內(nèi)容,更多關(guān)于Android去除開屏廣告的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android使用URL讀取網(wǎng)絡(luò)資源的方法
這篇文章主要為大家詳細(xì)介紹了Android使用URL讀取網(wǎng)絡(luò)資源的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10使用 Swift 語言編寫 Android 應(yīng)用入門
為了能順利使用這份向?qū)?,你需要? 1. 可以編譯Swift源碼的Linux環(huán)境。stdlib目前只能在Linux環(huán)境下編譯成安卓可用版本。在嘗試為安卓構(gòu)建之前,確保你能夠參考Swift項(xiàng)目的README為Linux做編譯。2016-04-04Android水波紋載入控件CircleWaterWaveView使用詳解
這篇文章主要為大家詳細(xì)介紹了Android水波紋載入控件CircleWaterWaveView使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01Android View 完美實(shí)現(xiàn)EditText 在軟鍵盤上邊的示例
本篇文章主要介紹了Android View 完美實(shí)現(xiàn)EditText 在軟鍵盤上邊的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Android實(shí)現(xiàn)從本地圖庫/相機(jī)拍照后裁剪圖片并設(shè)置頭像
玩qq或者是微信的盆友都知道,這些聊天工具里都要設(shè)置頭像,一般情況下大家的解決辦法是從本地圖庫選擇圖片或是從相機(jī)拍照,然后根據(jù)自己的喜愛截取圖片,接下來通過本文給大家介紹Android實(shí)現(xiàn)從本地圖庫/相機(jī)拍照后裁剪圖片并設(shè)置頭像,需要的朋友參考下2016-02-02Android實(shí)現(xiàn)搜索功能并本地保存搜索歷史記錄
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)搜索功能,并實(shí)現(xiàn)本地保存搜索歷史記錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03AndroidStudio3.6.1打包jar及AndroidStudio4.0打包jar的一系列問題及用法
這篇文章主要介紹了AndroidStudio3.6.1打包jar,AndroidStudio4.0打包jar的問題及用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03