學習目標,了解安卓四大組件,activity生命周期,同時了解去除部分廣告和更新提示。
廣告類型
1.啟動頁廣告
2.更新廣告
3.橫幅廣告
安卓四大組件
組件 | 描述 |
---|---|
Activity(活動) | 在應用中的一個Activity可以用來表示一個界面,意思可以理解為“活動”,即一個活動開始,代表 Activity組件啟動,活動結束,代表一個Activity的生命周期結束。一個Android應用必須通過Activity來運行和啟動,Activity的生命周期交給系統統一管理。 |
Service(服務) | Service它可以在后臺執行長時間運行操作而沒有用戶界面的應用組件,不依賴任何用戶界面,例如后臺播放音樂,后臺下載文件等。 |
Broadcast Receiver(廣播接收器) | 一個用于接收廣播信息,并做出對應處理的組件。比如我們常見的系統廣播:通知時區改變、電量低、用戶改變了語言選項等。 |
Content Provider(內容提供者) | 作為應用程序之間唯一的共享數據的途徑,Content Provider主要的功能就是存儲并檢索數據以及向其他應用程序提供訪問數據的接口。Android內置的許多數據都是使用Content Provider形式,供開發者調用的(如視頻,音頻,圖片,通訊錄等) |
1.activity可以暫時簡單理解為界面 。
2.service,不依賴界面運行,比如說后臺播放音樂之類。
3.接受一些系統廣播,然后進行處理。
4.內容提供者,詳細看一下表格吧。
去除廣告
啟動廣告流程:
啟動Activity->廣告Activity->主頁Activity
修改方法:
1.修改加載時間
2.Acitivity切換定位,修改Intent的Activity類名
定位activity
可以用MT管理器的activity記錄,然后在dex搜索對應的類名。轉成java可以很容易分析出邏輯。按照修改方法1,可以定位到展示時間,并且改為0即可。
認識xml文件
<!---聲明實現應用部分可視化界面的 Activity,必須使用 AndroidManifest 中的 <activity> 元素表示所有 Activity。系統不會識別和運行任何未進行聲明的Activity。-----><activity android:label="@string/app_name" android:name="com.zj.wuaipojie.ui.MainActivity" android:exported="true"> <!--當前Activity是否可以被另一個Application的組件啟動:true允許被啟動;false不允許被啟動--><!---指明這個activity可以以什么樣的意圖(intent)啟動---><intent-filter> <!--表示activity作為一個什么動作啟動,android.intent.action.MAIN表示作為主activity啟動---><action android:name="android.intent.action.MAIN" /> <!--這是action元素的額外類別信息,android.intent.category.LAUNCHER表示這個activity為當前應用程序優先級最高的Activity--><category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.zj.wuaipojie.ui.ChallengeFirst" /><activity android:name="com.zj.wuaipojie.ui.ChallengeFifth" android:exported="true" /> <activity android:name="com.zj.wuaipojie.ui.ChallengeFourth" android:exported="true" /> <activity android:name="com.zj.wuaipojie.ui.ChallengeThird" android:exported="false" /> <activity android:name="com.zj.wuaipojie.ui.ChallengeSecond" android:exported="false" /> <activity android:name="com.zj.wuaipojie.ui.AdActivity" />
這里面有activity文件,同時也有權限清單之類。需要注意下圖部分,相當于C語言main函數一樣的acivity
思路同樣是有倆,一個是直接修改主啟動activity,替換為廣告結束后的ACTIVITY,這樣程序進去后就不會播放廣告。但是一般不推薦這樣,?因為主activity有可能還進行資源準備等其他任務,貿然修改容易導致bug出現。
還有一個思路,還是在dex搜索Activity名字,但是我們主要看其他的類內含有廣告activity的部分,看看他是怎么被調用的。
如圖所示,轉換為java看到中間插入了一個ADactivity。咱們只要替換這個即可,這樣修改顯然更為精確。
?關鍵函數
?
4.彈窗定位&堆棧分析
1.修改xml中的versioncode
因為有的是更新彈窗,原理就是通過這個數字檢測此版本是否是最新。
2.Hook彈窗(推薦算法助手開啟彈窗定位)
打開算法助手,開啟彈窗定位,可以避免返回鍵被劫持,無法用返回鍵退出彈窗。還可以用關鍵詞彈窗屏蔽功能。

3.修改dex彈窗代碼
利用算法助手,可以定位到相應的方法名。這樣就可以在dex里面分析。small對應位置一般都有一個show關鍵詞,那行代碼原理就是展示彈窗,注釋掉或者刪掉就可以了。
4.抓包修改響應體(也可以路由器攔截)
后期在學習,現在只是了解即可。
5.布局優化
1.開發者助手抓布局。找xml的16進制數據。
2.MT管理器xml搜索定位
3.修改xml代碼,也可以寬高改為0
android:visibility="gone"
?