Android逆向技巧——去除開屏廣告

  相信不少網友都有相似的經歷:很多app剛開始用的時候很清爽,沒啥廣告;等用瞭一段時間後廠傢就開始大量上廣告的瞭,我個人覺得這是典型的利用大數據殺熟:廠傢看到用戶的月活、日活都挺高的,說明用戶對自己的app已經產生依賴,此時可以開始“殺豬吃肉”瞭!開屏廣告是我最討厭的一種:點開app就被逼著看,而且非會員一般要5秒後才能跳過,不想被逼著看廣告的就花錢充會員;怎麼才能不花錢去掉app的開屏廣告瞭?

  先簡單回顧一下windows下PE文件的執行原理:PE文件的文件頭有個字段叫AddressOfEntryPoint,會標記程序代碼的入口。用戶雙擊exe後,windows操作系統會解析這個字段,找到標記的程序入口,然後跳轉到這裡去執行代碼;為瞭避開程序自身的CRC檢測,很多外掛都選擇瞭入口點註入這種方式,原因很簡單:入口點這裡程序自己的代碼都還沒開始執行瞭,這時的exe就像一隻待宰羔羊,任憑外掛幹任何事都無法反抗!同理:android也有類似的入口點,用戶雙擊app後,android也會跳轉到app標記的入口點去執行,那麼這個入口點(註意:嚴格講這應該是入口界面,和入口點不是一個概念)在哪瞭?—– AndroidMainfest.xml文件有兩個標簽頁,如下:

<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>

  凡是看到這兩個標簽一起出現的就是app的入口activity瞭,用戶點開app肯定會從這裡指定的入口開始執行。這裡以某雲筆記為例,其原始入口如下:

<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>

  所以這裡實錘:開屏廣告就是從這裡開始看的!所以現在的需求就編變成瞭繞過這個廣告Activity,直接到我們期望的Activity!這又該怎麼操作瞭?這裡先找到我們期望的activity,如下:我期望打開app就能直接開到筆記的列表,而不是開屏廣告,所以這裡可以先在打開期望的界面,然後用“adb shell dumpsys activity top”查看這個頁面的activity:

   我期望的activity是“activity2.MainActivity”,所以在android killer打開這個apl,在AndroidMainfest.xml中找到這個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,把上面那兩個標簽剪切,復制到我們期望的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即可!

總結:這裡本質是通過配置文件,改變app的入口activity!

以上就是Android逆向技巧——去除開屏廣告的詳細內容,更多關於Android去除開屏廣告的資料請關註WalkonNet其它相關文章!