日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android反编译实战-去广告

發布時間:2023/12/9 Android 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android反编译实战-去广告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0x00 軟件中的廣告

什么是廣告?

任何與軟件本身無關的內容都屬于廣告;

廣告的表現形式很多,有的時候是一個界面(activity),有的時候是局部在上方或下方的一個區域視圖(view),有的時候可能是工具條(toolbar),也可能是一個對話框(dialog)里出現廣告內容。

但是看到的并不一定是表現出來的;有時候看到的區域視圖、對話框、工具條都有可能是一個activity。

廣告來源

  • push推送
  • 第三方SDK
  • 廣告常見的就是push推送廣告,這也就要求了在配置清單xml 中,需要聲明必要的service 和receiver,同時還應要求有pushid。推送廣告內容基本都是來源于廣告服務商的服務器。另一方面,注入的第三方SDK,只需要添加個人注冊的id,便可以實現盈利,同樣廣告內容來源于廣告服務商。

    廣告商與盈利模式

    針對Android平臺

    國內常見廣告商:友盟、騰訊、有米、百度等

    國外常見廣告商:Facebook、Admob等

    盈利模式

    商家投放廣告->廣告商平臺->開發者編寫應用嵌入廣告商提供的SDK->用戶點擊、用戶消費->商家獲益->廣告商平臺獲益->開發者獲益

    ?

    0x01 去除廣告思路

    廣告去除的基本原理與思想

    上述已經說明,無論怎樣形式、怎樣來源的廣告,在本地一定需要一個容器去當作廣告內容的載體,如果可以把容器去除掉,那么就完成了去廣告。

    廣告的容器就是一些界面、視圖等,以往課程已經說過,對于頁面,即可以利用靜態的布局,也可以在代碼中動態生成。

    根據上述理論知識,思路就可以分為以下兩個方向:

  • 對于簡單的靜態布局編寫的廣告界面,我們可以直接從配置清單xml文件,或相應的布局xml文件入手;
  • 對于復雜的,也就是已經形成了第三方SDK的,可能配置清單xml文件難以處理,或即使處理了相關的xml文件依然存在廣告,或采用動態編寫和檢測,廣告頁面循環出現等等問題,我們采用從代碼邏輯上入手。
  • 根據思路進行的操作大概如下:

  • 通過刪除配置清單Androidmainfest. xml文件關于廣告界面的相關聲明,來去除廣告頁面。
  • 廣告在代碼中往往出現較早,一般會在入口點的oncreate()方法處注入,我們分析代碼邏輯,讓廣告頁面不出現,或刪除動態生成廣告頁面的代碼。另外,任何擁有廣告的軟件,一定會有自己的廣告消失方法,找到后進行自行調用。同理,如果采用了動態代碼生成廣告頁面,在擁有創建相應頁面視圖的方法同時,一定會有關閉、隱藏廣告頁面的方法,找到方法,然后在創建時就調用,這就可以做到,剛剛創建就進行關閉和隱藏
  • 由于廣告以push廣告為主,如果刪除對應的pushid,那么特別對于第三方廣告商的廣告,是無法識別該廣告的推廣者或推廣內容是什么,那么就不會給廣告拓展:因為推送廣告內容基本都是從網絡獲取的,如果截斷了這條路,如把獲取廣告的IP地址改為127.0.0.1,那么本地沒有廣告內容,也就不會有廣告。
  • ?

    0x02 實際案例

    準備:

    • 二維碼掃描apk
    • Android killer
    • JEB
    • 手機或者模擬器

    去廣告目標:一個自己常用的工具:“二維碼掃描”;

    打開界面如下:

    ?

    每次打開都有廣告,很煩;

    ?

    用Burpsuite抓包查看廣告來源(這時候會遇到各種抓不到的情況,應對的方法也很多,我這個目標是個簡單的應用,直接用Burpsuite就抓到了)

    打開應用抓到五個數據包,查看這幾個數據包發現廣告來自第二個;

    重放第二個數據包,

    ?

    分析數據包,查看鏈接,確定為廣告的來源;

    http://pgdt.gtimg.cn/gdt/0/DAAUZSFAKAAPAABgBa10d4DzY5_9VS.jpg/0?ck=896de5f38d9a9f831bee6a75c669297e

    ?

    在Android killer中搜索mi.gdt.qq.com、gdt_mview.fcg;即使分開單個關鍵詞搜索也一無所獲;但是可以看到返回來的數據為json格式,并不是h5的廣告也不直接是圖片,應用還需要對json數據進行處理,這里轉換思路尋找處理的函數,將處理的結果修改為return空值,這樣就不會返回廣告了。

    繼續在Android kill中搜索關鍵字getAd,Ad,結果如下,看了下getAd的結果,也沒有什么發現;Ad的結果太多,懶得看;這時候還有什么辦法呢?

    ?

    提供幾個思路:

  • 分析數據包的相關參數;
  • 查看logcat日志;
  • 繼續硬著頭皮分析代碼的執行流程;(靜態分析、動態調試)
  • 回到數據包那里,繼續看其他參數,發現一個posid,猜測此id的作用是通過此id訪問廣告,從而統計并結算收益,搜索8060013973605191,結果如下:

    ?

    ?

    分析代碼,這里如果看不懂smali的話,可以借助JEB來分析,可以查看誰調用了a(),同樣的,如果查看logcat日志,當廣告出現,點擊廣告或者跳過廣告等操作是也是可以定位到這里。

    此時,嘗試刪掉posid的值,再訪問看會出現什么結果,

    這樣返回來的數據就沒有可以訪問的廣告鏈接,這樣就沒有廣告了;

    ?

    說干就干,修改、保存、編譯、簽名、安裝、打開,

    真的沒有廣告了,但是還有一個升級提示,也很煩;

    ?

    其實這個升級的查詢就在應用打開時的第五個數據包中,

    ?

    同樣搜索關鍵字AppUpgrade

    ?

    相同操作,打包完后就ok了。

    再次打開廣告沒了,升級提示也沒有了,舒服.

    ?

    結:

    簡單介紹了下Android去廣告的思路和一個簡單案例,當然因為此次目標的APP相對簡單,不存在混淆、加殼、反調試等加固手段,然后這篇文章也是APP對抗最原始和最早的方法,思路不僅適用與去廣告,也是早期黑灰產的常用手段,如內購、破解、惡意腳本等。

    引申下幾點:

    • 灰產會怎么利用?(批量修改,將廣告改為自己的,從中獲利)
    • 如果應用對完整性做了驗證,重打包后自動退出或者不能正常使用,還有什么方式去廣告?(同樣的分析方式繞過驗證,或者利用Xposed,HOOK對應需要修改的值,前提是需要ROOT權限和會Xposed插件開發)

    總結

    以上是生活随笔為你收集整理的Android反编译实战-去广告的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。